Windows tray app for one-shot, repeating, and burst-interval reminders. Shows Windows toast notifications and persists reminders as local JSON — a desk utility I built and run daily.
- One-shot reminders at a specific date and time
- Repeating reminders inside a daily window (including overnight windows such as 22:00 to 02:00)
- Burst sessions with short intervals, optional breaks, and cycle limits
- System tray icon with dashboard and quick add
- Optional sound with each toast, with optional randomization across the five non-looping Windows notification sounds
- JSON persistence under
%AppData%\ChronosDesk\reminders.json - Layered Core / Infrastructure / Ui solution with manual composition root in
App.xaml.cs - 33 xUnit tests for persistence, trigger-time logic, burst state transitions, and scheduler ticks
- Windows CI build via GitHub Actions
App.xaml.cs (composition root)
-> ReminderScheduler
-> JsonReminderRepository / WindowsNotificationService
-> WPF dashboard + system tray
Four projects: ChronosDesk.Core (domain and scheduler), ChronosDesk.Infrastructure (JSON and Windows toasts), ChronosDesk.Ui (WPF and tray), and ChronosDesk.Core.Tests.
Details: docs/architecture.md
- C# / .NET 10, Windows
- WPF, WinForms tray icon
- System.Text.Json
- xUnit
- Windows toast APIs
