Roamio is a travel companion Android app for nearby places, weather, saved spots, and currency conversion. Built with Kotlin, Jetpack Compose, Koin, and Ktor.
- Onboarding – short intro, remembered via DataStore
- Home – city search, activity chips, featured place
- Popular – destination stack
- Place – detail, save, nearby cafe
- Saved – starred places
- Convert – amounts via Frankfurter
- Settings – name, units, home currency
Location is optional: if permission is denied, the app uses a default city (London).
:app Application shell, NavGraph, theme
:core HttpClient, constants, location, preferences
:feature-onboarding First-run only
:feature-home Home, Popular, Place, Saved, Convert, Settings
- Clone the repository and open it in Android Studio.
- Sync Gradle (no API keys required). Optional:
PEXELS_API_KEYinlocal.properties. - Run the
:appconfiguration on a device or emulator (API 31+).
./gradlew :app:assembleDebug
./gradlew testData sources used by this project (please respect their terms of use):
| Feature | Source | License / notes |
|---|---|---|
| Weather | Open-Meteo | Free for non-commercial; attribution appreciated |
| Places | OpenStreetMap / Overpass | ODbL – © OpenStreetMap contributors |
| Summaries | Wikipedia | CC BY-SA – User-Agent required |
| Currency | Frankfurter | Free ECB-based rates |
- Modules:
app/core/feature-onboarding/feature-home - UI: Compose Root/Content split,
StateFlow,handleAction - DI: Koin
- Network: single Ktor
HttpClientin:core - No raw string literals for routes, URLs, or UI copy (constants +
strings.xml)
This project is licensed under the MIT License. See LICENSE.