A cross-platform productivity app built with .NET MAUI and Blazor. Manage habits, dailies, and to-dos with a focus timer, analytics, and reliable sync across web and mobile.
Live Demo. habitinator.app
Demo | Preview | Download | Features | Tech stack | Getting Started
Board | Statistics | Focus timer
Edit daily | Activity day detail | Settings
Regenerate screenshots with
tools/Habitinator.Screenshots/run.ps1. The script uses Playwright with a mobile viewport in light and dark themes.
Download the latest build from the releases page, or use the direct links below. Every package ships with a SHA256 checksum file.
Windows runtime note. If your release is framework-dependent, install .NET Desktop Runtime once.
- Pick your platform from the table above
- Download the package and its
.sha256file - Verify the checksum, then follow the platform steps below
# Windows
dotnet build -t:Run -f net11.0-windows10.0.19041.0
# Android, requires the Android SDK
dotnet build -t:Run -f net11.0-android- Enable Install from unknown sources in system settings
- Transfer the APK to your phone
- Open the APK and install
Installer. Run Habitinator-windows-x64-setup.exe and follow the setup wizard. It keeps the app updated.
Portable. Extract the ZIP file, then run Habitinator.exe. If prompted, install .NET Desktop Runtime.
- Core planner. Track habits, dailies, and to-dos. Organize them with tags, notes, and checklists.
- Global session timer. A stopwatch with target logging to trace time spent on specific items.
- Statistics and heatmap. Interactive heatmap dashboard to monitor your progress over time.
- Local-first and sync. The mobile and desktop clients run on SQLite for offline support and sync changes to a server-side PostgreSQL backend.
| Layer | Technologies |
|---|---|
| Runtime | .NET 11 |
| Web UI | Blazor Web App with Interactive WebAssembly, MudBlazor |
| Native Apps | .NET MAUI + Blazor Hybrid for Android, iOS, macOS, Windows |
| Database, Server | Neon Serverless PostgreSQL or any PostgreSQL via EF Core |
| Database, Client | SQLite via EF Core |
| Orchestration | .NET Aspire AppHost |
Make sure you have Docker installed and running for the local PostgreSQL container.
To start PostgreSQL, the web backend, and the native client host environment, run:
dotnet run --project src/AppHost/AppHost.csprojThe application seeds a guest account on startup:
- Email.
guest@habitinator.local - Password.
Guest123!
To regenerate the mobile screenshots in the Preview section, first start the web app via AppHost, then run:
pwsh ./tools/Habitinator.Screenshots/run.ps1 -BaseUrl "http://127.0.0.1:5033"Here are the project dependencies, auto-updated via documentation scripts:
flowchart LR
%% Auto-generated by tools/Habitinator.Diagrams - project reference graph
App_MAUI["App.MAUI"]
App_MAUI_UITests["App.MAUI.UITests"]
App_Shared_RCL["App.Shared.RCL"]
App_Shared_RCL_Tests["App.Shared.RCL.Tests"]
App_Shared_Tests["App.Shared.Tests"]
App_Web["App.Web"]
App_Web_Client["App.Web.Client"]
App_Web_IntegrationTests["App.Web.IntegrationTests"]
AppHost["AppHost"]
App_MAUI --> App_Shared_RCL
App_Shared_RCL_Tests --> App_Shared_RCL
App_Shared_Tests --> App_Shared_RCL
App_Web --> App_Shared_RCL
App_Web --> App_Web_Client
App_Web_Client --> App_Shared_RCL
App_Web_IntegrationTests --> App_Web
AppHost --> App_Web