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.
| Compact | Large |
|---|---|
|
|
- ✅ 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
- 📊 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)
- 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
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.
- 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
- Clone the repository:
git clone https://github.com/Gaetano-Dati/Coinsight
- Open the project in Android Studio.
- Sync Gradle and let dependencies install.
- Run the app on an emulator or device (minSdk 26 - targetSdk 36).
- No authentication is required for CoinGecko’s free tier.
- ⚠ Sometimes the API may return HTTP 429 Too Many Requests due to rate limiting.
- You can replace the debug key if needed. In case of a Production key, you should also change the Base Url from https://api.coingecko.com/api/v3/ to https://pro-api.coingecko.com/api/v3
- Unit tests (UseCases, Repositories, Mappers, ViewModels)
- Integration tests (Repository ↔ API/DB)
- UI tests with Compose
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
This repository will be shared privately with coniomobile (mobile@conio.com) as required.
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.
- MPAndroidChart – charts & graphs
- Turbine – Kotlin Flow testing
- mockk – mocking library
- Retrofit – API client
- Coil – Image render
- Timber – logging
- OkHttp3 – networking
- OkHttp3 MockWebServer – testing
- KSP – Kotlin Symbol Processing API
- Moshi – JSON parsing






