Skip to content

Modern Android app for tracking and managing your favorite cryptocurrencies, built with Kotlin & Jetpack Compose.

Notifications You must be signed in to change notification settings

Ivanmw97/CryptoTracker

Repository files navigation

CryptoTracker

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.

Features

  • 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.

Tech Stack & Versions

Core Framework

  • 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 & Libraries

  • 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

Testing

  • 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

External APIs

  • CoinCap API 2.0: For fetching real-time cryptocurrency data

CI/CD

The project includes a comprehensive GitHub Actions workflow for continuous integration and deployment:

Automated Workflow

  • Triggers: Push and Pull Requests to master, main, and develop branches
  • Build Environment: Ubuntu Latest with JDK 17
  • Gradle Caching: Optimized dependency caching for faster builds

Build Pipeline

  1. Code Quality: Lint checks (./gradlew lintDebug)
  2. Build: Debug APK assembly (./gradlew assembleDebug)
  3. Testing: Unit test execution (./gradlew testDebugUnitTest)
  4. Artifacts: Automatic upload of build reports on failure

Release Pipeline

  • Automatic Release Builds: Triggered on master/main branch pushes
  • APK Signing: Secure signing with encrypted keystore
  • Artifact Distribution: Signed APK upload for distribution

Required Secrets

For the release pipeline to work, configure these GitHub secrets:

  • KEYSTORE_BASE64: Base64 encoded keystore file
  • KEYSTORE_PASSWORD: Keystore password
  • KEY_ALIAS: Signing key alias
  • KEY_PASSWORD: Signing key password

Screenshots

Here are some screenshots showcasing the app's features:

Home Screen

Light Mode Dark Mode
Home Screen - Light Mode Home Screen - Dark Mode

Description: The main screen displaying a list of cryptocurrencies with live prices.

Search Functionality

Light Mode Dark Mode
Search Functionality - Light Mode Search Functionality - Dark Mode

Description: Search cryptocurrencies by name or abbreviation.

Detailed View

Light Mode Dark Mode
Detailed View - Light Mode Detailed View - Dark Mode

Description: Detailed information about a selected cryptocurrency, including an interactive chart.

Favorites

Light Mode Dark Mode
Favorites - Light Mode Favorites - Dark Mode

Description: A list of your favorite cryptocurrencies for quick access.

Portrait

Light Mode Dark Mode
Favorites - Light Mode Favorites - Dark Mode

Description: Portrait mode.

Installation

  1. Clone this repository:
    git clone https://github.com/Ivanmw97/CryptoTracker.git
  2. Open the project in Android Studio.
  3. Sync dependencies and libraries.
  4. Run the app on an emulator or a physical device.

Contributions

Contributions are welcome! To contribute:

  1. Fork the repository.
  2. Create a branch for your feature or fix:
    git checkout -b feature/new-feature
  3. Submit a pull request detailing your changes.

About

Modern Android app for tracking and managing your favorite cryptocurrencies, built with Kotlin & Jetpack Compose.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages