A lightweight habit-tracking app designed around one idea: make daily check-ins fast enough that you actually keep coming back.
Streak is an indie-SaaS-style mobile app concept for tracking a small set of daily habits, seeing streak momentum at a glance, and keeping the experience intentionally simple.
Streak is currently in active development.
- Product specs are finalized under
docs/specs. - Interactive HTML mockups are available under
docs/ui-mockups. - Core UI screens are implemented: Homepage, Habit Details, Quick Add Habit dialog, Edit Habit dialog, Delete Habit dialog, and a compact Settings page with database backup export.
- Local SQLite persistence is wired up with habits and checkins.
- Unit test coverage exists for core services and view models under
tests/.
The goal is not to build the biggest habit app. The goal is to build a habit app that feels:
- Fast for daily check-ins
- Calm instead of over-featured
- Offline-first with local device storage
- Focused on a maximum of eight habits at a time
If the product direction holds, the primary workflow should feel like: open app, scan progress, tap what you completed, move on with your day.
These screenshots were captured from the current HTML mockups in docs\ui-mockups.
The homepage is the main surface of the app: a prominent current-date banner, quick check-ins, direct access to each habit, and a footer + New Habit CTA.
Mockup source: docs/ui-mockups/Homepage/index.html
The quick-add flow keeps habit creation lightweight so new habits can be added from the homepage without interrupting the main workflow, while still supporting an optional multiline description.
Mockup source: docs/ui-mockups/CreateHabitPage/index.html
The habit details experience is focused on streak visibility, inline editing, optional habit descriptions, and a compact history view.
Mockup source: docs/ui-mockups/HabitDetailsPage/index.html
Settings currently keep the database backup flow compact, with a single low-frequency export action and platform-specific save behavior.
Mockup source: docs/ui-mockups/SettingsPage/index.html
Based on the current specs, Streak is shaping up around the following ideas:
- Daily binary check-ins: done or not done
- A shallow navigation model with Homepage as the primary surface
- A hard cap of 10 habits
- Local-only persistence with no account system
- Simple reminder settings and lightweight data utilities instead of complex automation
For the latest written product direction, start here:
The preferred stack for this project is:
- Frontend: Blazor WebAssembly-style UI patterns adapted within the app experience
- UI library: MudBlazor
- Mobile app shell: .NET MAUI / Blazor Hybrid
- Language/runtime: .NET 10
- Data storage: local SQLite today, with room for future Azure-backed evolution if the product grows
This may continue to evolve as the implementation becomes more concrete.
Because the app is still being built, installation is currently closer to setting up a contributor workstation than installing a finished product.
- Install the .NET 10 SDK.
- Install the MAUI workloads you expect to use for local development.
- Clone this repository.
- Restore the solution dependencies:
dotnet restore .\Streak.slnx- If you only want to review the planned experience, open the files in
docs\ui-mockupsor browse the screenshots in this README.
Today, the most useful way to "use" this repository is to explore the planned product and follow the implementation as it comes together.
Recommended path:
- Read the product overview in
docs/specs/README.md. - Review shared UI guidance in
docs/specs/ui.md. - Open the interactive mockups under
docs/ui-mockups. - Use the screenshots in this README as a quick visual overview when sharing the project.
Once the app is fully wired up, the expected end-user flow will be:
- Launch the app
- Review today's progress on the homepage
- Check off completed habits
- Open a habit to inspect streak history
- Adjust reminder preferences in settings
Restore everything:
dotnet restore .\Streak.slnxBuild the repository:
dotnet build .\Streak.slnx -c Debug --nologoIf you want to validate the Windows UI target specifically:
dotnet build --nologo --no-restore .\src\Streak.Ui\Streak.Ui.csproj -f net10.0-windows10.0.19041.0 -p:RuntimeIdentifier=win-x64There is also a convenience script at run-local.ps1 that is expected to become the main local entrypoint as the repository matures.
Automated testing is still early, but the repository already has a test project scaffold you can run.
Build the test project:
dotnet build .\tests\Streak.Core.UnitTests\Streak.Core.UnitTests.csproj -c Debug --nologoRun the tests:
dotnet test .\tests\Streak.Core.UnitTests\Streak.Core.UnitTests.csproj -c Debug --no-build --nologoAs implementation expands, this section will be updated to describe the full testing story more accurately.
.
├── docs
│ ├── specs
│ └── ui-mockups
├── src
├── tests
├── infra
├── run-local.ps1
└── Streak.slnx
Placeholder roadmap themes for the near term:
- Turn the mockups into implemented UI screens
- Wire up local persistence and check-in behavior
- Add reliable unit and integration coverage
- Tighten the local development workflow
- Replace placeholder badges and sections with real project signals
If you want to contribute while the project is still taking shape:
- Review the specs first
- Keep the implementation aligned with the mockups
- Prefer small, focused pull requests
- Update docs when product direction changes
Additional repo guidance lives in:
Built with a healthy amount of optimism, placeholders, and UI-first momentum.



