Skip to content

Gaetano-Dati/Coinsight

Repository files navigation

📱 Coinsight

Kotlin Jetpack Compose Android

Coinsight is a Proof of Concept (POC) Android application built for the Conio Dev Challenge.
The app provides engaging real-time insights on the top cryptocurrencies, helping users stay informed about possible bear/bull markets. It's also possible to search for other cryptocurrencies and view their details.


🖥 Screenshots / Demo

Compact Large

Features

  • ✅ Coinsight is designed to be highly responsive and run across multiple device configurations, handling gracefully open/closed devices, maintaining its engaging behavior. It's also possible, on big screens, to split the display with other apps and still get a responsive view
  • ✅ Display of Top 10 Cryptocurrencies ordered by market cap, followed by the sebsequent ones
  • ✅ It's also possible to Search for cryptocurrencies and look at their details
  • ✅ Each crypto item shows:
    • Market cap rank
    • Logo
    • Name
    • Symbol
    • Current price in Euros
    • Positive or Negative Price Change percentage by last 24hrs
  • Details Section for each cryptocurrency, including:
    • Name
    • Website link
    • Current price in Euros
    • Logo
    • A static chart with the crypto's historical market prices over the last week
    • Market cap rank position
    • Description
  • Modern Android stack with Jetpack Compose + Material3
  • Clean Architecture (App/Domain/Data/Network/Core modules) + MVI pattern
  • Offline support with Room + RemoteMediator
  • User Preferences stored with DataStore
  • ✅ DTO ↔ Domain mapping and Entity ↔ Domain mapping
  • ✅ Unit & Integration Tests

✨ Nice-to-Have Implementations

  • 📊 Static chart showing historical prices over the last week
  • 🧪 Automated tests covering UseCases, Repositories, and UI logic
    • JUnit4 (test framework)
    • mockk (mocking)
    • turbine (testing Flows)
    • Compose Testing (UI tests)

🛠 Tech Stack

  • Kotlin
  • Coroutines + Flow for async & reactive programming
  • Jetpack Compose + Material3
  • Paging3 for data pagination
  • MPAndroidChart for charts
  • Coil for image rendering
  • Hilt for dependency injection
  • DataStore for preferences
  • KSP for Kotlin Symbol Processing API
  • Retrofit for REST API integration (CoinGecko)
  • Moshi for JSON parsing
  • Room for local persistence
  • OkHttp3 for logging interceptor
  • OkHttp3 MockWebServer for testing
  • Mockk for mocking
  • Timber for logging

📂 Architecture

The project follows Clean Architecture principles with an MVI presentation pattern:

  • App Module
    • Presentation layer containing Jetpack Compose screens and components, navigation, state management with MVI, ViewModels
    • Providers
  • Domain Module
    • Domain models
    • Repository interface for implementation contracts
    • Resource file for handling app states
    • UseCases to handle Repository interactions
  • Data Module
    • Repositories implementation
    • Database (Room),
    • Mappers
    • RemoteMediator to handle offline caching strategy
  • Core Module
    • Interface for providing the Token
    • Common component (Timber)
  • Network Module
    • Network adapters
    • APIs network interfaces
    • DTOs
    • Interceptor

This separation ensures a scalable, testable, and maintainable codebase.


⚡ Setup & Installation

Prerequisites

  • Android Studio Ladybug | 2024.2.1 or newer
  • JDK 17+
  • Internet connection (CoinGecko API)
  • local.properties file containing COIN_GECKO_API_KEY="CG-1Awv6uuSxWZkwyG8U35Bmisv" or a personal CoinGecko debug token as it's required as a Header value for all requests

How to Run

  1. Clone the repository:
    git clone https://github.com/Gaetano-Dati/Coinsight
  2. Open the project in Android Studio.
  3. Sync Gradle and let dependencies install.
  4. Run the app on an emulator or device (minSdk 26 - targetSdk 36).

🔑 API Key


✅ Includes

  • Unit tests (UseCases, Repositories, Mappers, ViewModels)
  • Integration tests (Repository ↔ API/DB)
  • UI tests with Compose

💡 Notes

This is a POC, not a production-ready app.
Focused on showcasing modern Android best practices.

Some limitations apply:

  • API rate limiting (HTTP 429)
  • Simplified Settings screen
  • Demo-only API key

📧 Submission Guidelines

This repository will be shared privately with coniomobile (mobile@conio.com) as required.


🎉 Final Thoughts

This project was designed to be simple, engaging, and aligned with Conio’s challenge.
It balances clean code, best practices, and user experience — while remaining concise and maintainable.


📚 External Libraries

About

Coinsight is a POC Android app built with Kotlin, Clean Architecture and MVI. It uses Jetpack Compose, Hilt, Paging 3, Coil and Timber to display crypto market data from CoinGecko. Modularized into app, data, network, domain and core, it demonstrates scalable and modern Android design.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages