Native Android App
TaskFlow
Engineered a modular task-management application and enforced Clean Architecture and MVVM patterns for scalability. Integrated Hilt for dependency injection and Room for local persistence with parameterized SQL queries.
Project Overview
TaskFlow is a robust, offline-first productivity platform built entirely natively for Android. The focus was heavily on establishing a scalable foundation utilizing industry-standard Clean Architecture, allowing the UI, domain, and data layers to evolve independently without tight coupling.
The network is optional. Every action — creating a task, reordering priorities, marking something complete — is written to local storage first and only then reconciled with anything outside the device, so the user never waits on a spinner to see the result of their own tap. Room is the single source of truth: every query is exposed as a Flow, so a write anywhere in the app re-emits downstream and the list, the calendar and the notification scheduler all observe the same stream rather than keeping their own copies.
Most small task apps start simple and then calcify: business rules leak into the UI, the database schema quietly becomes the app model, and adding something like a calendar view means touching every screen. Splitting the codebase into Domain, Data and Presentation layers with dependencies pointing inwards avoids that — the domain layer knows nothing about Room, Compose or Android at all, which keeps it unit-testable without an emulator and makes swapping a data source a contained change instead of a rewrite.
Scheduling was the other hard part. Deadline reminders are not held in memory or tied to an activity; they are handed to WorkManager, which persists its queue and re-schedules across reboots and process restarts, with each job keyed by task ID so editing a due date replaces the pending work instead of stacking a duplicate. Completion and deletion are likewise modelled as reversible transitions, so an accidental swipe costs a tap through the undo snackbar rather than costing the task.
On top of that foundation sits a Material Design 3 interface written in Jetpack Compose: live filtering by status, priority and due date, multi-criteria sorting, and a calendar in both day and month modes driven by the same task store as the list.
Architecture & Engineering
- Clean Architecture separates Domain, Data, and Presentation layers
- MVVM Pattern paired with Jetpack Compose for declarative UI rendering
- Hilt for robust dependency injection across the application lifecycle
- Room Database with parameterized queries for secure, offline-first storage
- WorkManager for reliable background thread synchronization and daily scheduled notifications
Key Features & Highlights
- Interactive task creation, sorting, and priority categorization
- Background synchronization ensuring zero data loss on network drops
- Dynamic Material Design 3 user interface with dark theme support
- Scheduled local notifications for task deadlines and calendar view
Technology Stack
Screenshots & Visual ArtifactsClick any image to zoom
Project Repository & Delivery
Explore the full source code, commit history, and architectural implementation on GitHub.