Cryptocurrency Tracking App built with Jetpack Compose, WorkManager, Hilt, Room, and Firebase Firestore.
Real-time Cryptocurrency Prices via API
Favorites List stored in Firebase Firestore
Offline Data Storage using Room Database
Search Functionality for quick access to coins
WorkManager Integration for background price updates
Hilt Dependency Injection for modular architecture(for now just package)
State Management with Jetpack Compose
Shimmer Loading Animation for better UX
Authentication Flow (Login, Logout)
Feature | Library |
---|---|
UI Framework | Jetpack Compose |
Background Work | WorkManager |
Dependency Injection | Hilt |
Local Database | Room |
Networking | Retrofit + OkHttp |
Asynchronous | Coroutines + Flow |
Firebase | Firestore + Auth |
Image Loading | Coil |
Testing | JUnit + MockK |
The project follows MVVM (Model-View-ViewModel) architecture with Unidirectional Data Flow:
app/
│── data/
│ ├── local/
│ │ ├── AppDatabase.kt
│ │ ├── CoinDao.kt
│ │ ├── CoinEntity.kt
│ ├── remote/
│ │ ├── CoinApi.kt
│ │ ├── CoinRemoteModel.kt
│ ├── repository/
│ │ ├── CoinRepositoryImpl.kt
│
│── domain/
│ ├── repository/
│ ├── model/
│ ├── usecase/
│
│── ui/
│ ├── screen/
│ │ ├── auth/
│ │ ├── coin/
│
│── di/
│ ├── AppModule.kt
│ ├── NetworkModule.kt
│ ├── RepositoryModule.kt
Clone this repository:
git clone https://github.com/yourusername/CryptoTracker.git
cd CryptoTracker
- Android Studio LadyBug or newer
- Minimum SDK 28 (Android 9.0)
- Gradle version: 8.10.2, AGP 8.8.0
2️⃣ Build & Run
./gradlew clean build
or directly run from Android Studio.
- Notifications for price alerts
- String Res for hardcode strings
- More UI/Unit test
- Modularization