CryptoTracker is a mobile application developed in Kotlin, designed for real-time cryptocurrency tracking. It enables users to monitor prices, analyze trends, and access information on various digital currencies through an intuitive interface.
- ✨ Real-time data: View live prices of cryptocurrencies with updates every minute.
- 🎨 Detailed views: Access comprehensive information about each cryptocurrency, including interactive charts and key statistics.
- 🔍 Search functionality: Quickly find cryptocurrencies by name or abbreviation.
- ❤️ Favorites management: Mark your favorite cryptocurrencies for easy access in a dedicated section.
- 🌍 Dynamic themes: Automatically adapts to light or dark mode based on your system settings.
- Language: Kotlin 2.1.0
- Android Gradle Plugin: 8.7.3
- Gradle: 8.10.2
- Min SDK: 29 (Android 10)
- Target SDK: 35 (Android 15)
- Java: 17
- Architecture: MVVM (Model-View-ViewModel) for a scalable and maintainable codebase
- UI Framework: Jetpack Compose (BOM 2024.12.01) for building declarative and modern user interfaces
- Networking: Ktor 3.0.2 for efficient API communication
- Dependency Injection: Koin 4.0.0 for managing dependencies and simplifying testing
- Database: Room 2.6.1 for storing and managing user favorites locally
- Material Design 3: Latest adaptive components for intuitive and consistent user experience
- Coroutines: Simplified asynchronous programming for smoother app performance
- Unit Testing: JUnit 4.13.2, MockK 1.13.14, Mockito 5.14.2
- UI Testing: Espresso 3.6.1, AndroidX Test 1.2.1
- Coroutines Testing: kotlinx-coroutines-test 1.9.0
- CoinCap API 2.0: For fetching real-time cryptocurrency data
The project includes a comprehensive GitHub Actions workflow for continuous integration and deployment:
- Triggers: Push and Pull Requests to
master,main, anddevelopbranches - Build Environment: Ubuntu Latest with JDK 17
- Gradle Caching: Optimized dependency caching for faster builds
- Code Quality: Lint checks (
./gradlew lintDebug) - Build: Debug APK assembly (
./gradlew assembleDebug) - Testing: Unit test execution (
./gradlew testDebugUnitTest) - Artifacts: Automatic upload of build reports on failure
- Automatic Release Builds: Triggered on
master/mainbranch pushes - APK Signing: Secure signing with encrypted keystore
- Artifact Distribution: Signed APK upload for distribution
For the release pipeline to work, configure these GitHub secrets:
KEYSTORE_BASE64: Base64 encoded keystore fileKEYSTORE_PASSWORD: Keystore passwordKEY_ALIAS: Signing key aliasKEY_PASSWORD: Signing key password
Here are some screenshots showcasing the app's features:
| Light Mode | Dark Mode |
|---|---|
Description: The main screen displaying a list of cryptocurrencies with live prices.
| Light Mode | Dark Mode |
|---|---|
Description: Search cryptocurrencies by name or abbreviation.
| Light Mode | Dark Mode |
|---|---|
Description: Detailed information about a selected cryptocurrency, including an interactive chart.
| Light Mode | Dark Mode |
|---|---|
Description: A list of your favorite cryptocurrencies for quick access.
| Light Mode | Dark Mode |
|---|---|
Description: Portrait mode.
- Clone this repository:
git clone https://github.com/Ivanmw97/CryptoTracker.git
- Open the project in Android Studio.
- Sync dependencies and libraries.
- Run the app on an emulator or a physical device.
Contributions are welcome! To contribute:
- Fork the repository.
- Create a branch for your feature or fix:
git checkout -b feature/new-feature
- Submit a pull request detailing your changes.