RemindMe is a Windows desktop reminders app built with C++20 and Qt6 Widgets.
Current version: v1.1.0.
- Multiple reminders, sorted by soonest due time
- Text parsing for:
- relative reminders (
in ...) - time-of-day reminders (
at ...) - repeating directives (
every ...)
- relative reminders (
- Repeating and non-repeating reminders
- Popup notifications with:
Snooze (5 min.)OKacknowledge
- Closing a reminder popup window (
X) behaves the same as pressingOK - System tray behavior:
- Closing main window hides to tray
- Timers/reminders continue running in background
- Edit/delete reminders
- Completed reminder history with quick re-add
- Persistent JSON storage via Qt standard app-data location
Drink water in 45mStretch in 2h 30mStand up at 7:00AMDaily check at 19:30Stand up at 7:00AM every dayHydrate in 10m every 2 hours
Reminders are stored at:
QStandardPaths::AppDataLocation/reminders.json
RemindMe is inspired by:
- Tatsumaki Bot's
t!remindfeature - Free Countdown Timer
This project is an independent work and is not affiliated with or endorsed by those products.
This repository follows the cpp-mntchocoluvr standardized layout and workflow (presets, VS Code tasks, CTest, CI).
- Windows with MSYS2 UCRT64 tools available on
PATH - Required packages:
pacman -S --needed \
mingw-w64-ucrt-x86_64-gcc \
mingw-w64-ucrt-x86_64-cmake \
mingw-w64-ucrt-x86_64-ninja \
mingw-w64-ucrt-x86_64-qt6-base \
mingw-w64-ucrt-x86_64-qt6-toolsThe shared presets are path-agnostic. If Qt is not discoverable from PATH, set CMAKE_PREFIX_PATH or add a local, untracked CMakeUserPresets.json.
For repository maintenance, prefer the installed CLI helpers: rg for search, fd for file discovery, jq for JSON, and gh for GitHub operations.
Use presets first:
- Configure debug:
cmake --preset debug
- Build debug:
cmake --build --preset debug --parallel
- Run tests:
ctest --preset debug
Convention gate:
./scripts/check-conventions.ps1- CI also runs this check before build/test.
- CMake target equivalent:
cmake --build --preset debug --target conventions
Release:
- Configure release:
cmake --preset release
- Build release:
cmake --build --preset release --parallel
- Run tests:
ctest --preset release
Ctrl+Shift+B: default taskbuild (debug)F5: launch profileDebug (Preset Debug Binary)- Additional tasks:
configure (debug)/configure (release)build (debug)/build (release)test (debug)/test (release)
CMakeLists.txt: template-aligned main build configurationCMakePresets.json:debugandreleasepresetssrc/: implementation files insnake_case(for examplemain_window.cpp)include/remindme/: public project headers insnake_case(for examplemain_window.hpp)resources/: app resources/iconstests/core_tests.cpp: baseline tests registered with CTest.vscode/: standardized tasks, launch, settings, snippets.github/workflows/ci.yml: CI for debug/release build and debug tests
- Project code is scoped under
namespace remindme. - Project headers use
.hppandsnake_casefilenames. - Source files use
snake_casefilenames.
- Debug builds output
app.exe - Release builds output
RemindMe.exe
This keeps debug launch paths stable while preserving release naming.
- Contribution guide:
CONTRIBUTING.md - Security policy:
SECURITY.md