A personal project management application built with modern Android development practices. This app helps track projects, tasks, and categories with local and remote synchronization.
- Project Management: Create and organize projects.
- Task Tracking: Break down projects into manageable tasks.
- Categorization: Group projects by categories for better organization.
- Dashboard: A comprehensive overview of your progress, including:
- Active & Completed Projects: Track your overall project status.
- Task Statistics: View total and completed tasks, and monitor your weekly pace.
- Recent Projects: Quick access to your most recently updated work.
- Category Overview: Browse and manage projects by their respective categories.
- Local Persistence: Full offline support using Room database.
- Cloud Sync: Remote storage and authentication powered by Firebase.
- Modern UI: Built entirely with Jetpack Compose and Material 3.
- Secure Auth: Google Sign-In integration via the Credentials API.
- Language: Kotlin
- UI Framework: Jetpack Compose
- Dependency Injection: Hilt
- Database: Room
- **Backend **: Firebase Realtime Database & Firebase Auth
- Navigation: Navigation Compose
- **Asynchronous Programming **: Coroutines & Flow
- Image/Animation: Lottie
- Testing: JUnit, MockK, Turbine, and Espresso
The project follows Android Actual Clean Architecture, a custom architectural pattern inspired by Clean Architecture. It focuses on a clear separation of concerns:
- Domain Layer: Pure Kotlin layer containing Business Logic, Entities, and Repository Interfaces.
- Data Layer: Implementation of Repository Interfaces, managing data from Room (local) and Firebase (remote).
- UI Layer: Modern UI implementation using Jetpack Compose and ViewModels.
app/src/main/java/com/adriantache/projecttracker/
├── data/ # Data sources, Entities, Mappers, and Repository implementations
├── di/ # Hilt Modules
├── domain/ # Use Cases, Domain Models, and Repository interfaces
├── ui/ # Compose UI, ViewModels, and Theme
└── MainActivity.kt
- Clone the repository.
- (Optional) Configure signing properties in
local.propertiesfor release builds. - Build and run!
Developed by Adrian Tache