PulseHabit is a polished mobile tracking app built to prove that a fitness product can feel lightweight for the user while still handling the hard parts behind the scenes. It combines habit tracking, workout logging, local reminders, optional cloud sync, and export tooling into one focused experience designed for consistency. The product is intentionally opinionated: it works fully offline by default, keeps the UI reactive through a local SQLite data layer, and only adds cloud complexity when the user signs in. That makes it practical for everyday use.
PulseHabit is a Flutter habit tracker built for offline-first reliability — with reminders, streak tracking, workout logging, and optional Firebase sync.
100% offline-first
Habits + Workouts
Weekly local scheduling with deep links, snooze, and quick actions
Optional Firestore sync with last-write-wins conflict handling
PulseHabit targets a simple but important product gap: many habit and fitness apps become fragile the moment connectivity, authentication, or cloud configuration gets in the way. This project approaches the problem differently. The local database is the source of truth, the interface stays responsive through reactive queries, and cloud features are layered on as enhancements rather than dependencies.
The challenge was to build an MVP that balanced product breadth with operational discipline. PulseHabit needed to support onboarding, authentication, habit scheduling, workout logging, notifications, sync, export, and settings without turning the app into a brittle stack of coupled features. The harder problem was not CRUD itself; it was making those flows feel dependable under real-world conditions like sign-out states, no network, local-only usage, and incremental sync.
The solution was a modular Flutter architecture centered on local persistence, provider-driven UI state, and best-effort service layers. Drift powers the local SQLite store, Riverpod wires repositories and app services, GoRouter structures navigation, and Firebase is treated as optional infrastructure for authentication and sync. The outcome is a product that feels simple on the surface but demonstrates thoughtful handling of reminders, deep links, reactive updates, conflict resolution, and graceful degradation.
Solo Full-Stack Engineer
Defined the MVP around a clear promise: help users build consistency with as little friction as possible. That meant focusing on fast onboarding, immediate usefulness, and a structure that supported both daily habits and one-off workout logs without overwhelming the interface.
Built the app around Drift and SQLite so the local database could act as the source of truth for the UI. Repositories handle persistence, Riverpod exposes application state cleanly, and reactive queries keep the experience responsive across list, form, and detail screens.
Layered in the features that make the MVP feel production-aware: local reminders, timezone configuration, notification deep links, optional Firebase authentication, Firestore sync, export services, and profile-level sync visibility. Each service was designed to fail gracefully so the core app remained usable even when cloud services were absent.
Rounded out the product with Material 3 theming, onboarding gates, profile and settings flows, month-based workout browsing, habit streak visibility, documented test commands, and release-oriented setup guidance. The result is a portfolio project that demonstrates both implementation depth and delivery discipline.
Product Judgment
The scope stays tight and useful, balancing habits, workouts, reminders, sync, and export without losing clarity.
Engineering Depth
Local persistence, providers, notifications, auth, and Firestore sync are integrated through clean service boundaries.
Reliability
Core functionality remains available offline, with graceful fallbacks when Firebase is unavailable.