A Kotlin Multiplatform sample application that allows you to save memos with GIS (Geographic Information System) information, photos, videos, and weather data.
| Platform | Android, iOS |
| UI | Jetpack Compose (Android), SwiftUI (iOS) |
| Architecture | Kotlin Multiplatform Mobile (KMM) |
| Database | SQLDelight |
| Networking | Ktor |
| Image Loading | Coil 3 |
- Geo-tagged Memos: Create memos and associate them with a specific geographic location.
- Interactive Map: View all your memos as markers on a Google Map.
- Rich Media Attachments: Enhance your memos by attaching photos and videos captured directly within the app.
- Speech-to-Text: Conveniently dictate your memos using the integrated speech recognition feature.
- Automatic Weather Data: The app automatically fetches and attaches the current weather information to your memo based on its location.
- Paginated Memo List: Efficiently browse through your memos with a paginated list.
- Multi-language Support: The UI is available in multiple languages.
| Write | Detail | Map | Setting |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
This project leverages a modern technology stack for building multiplatform applications.
- Kotlin Coroutines: For managing asynchronous operations.
- Ktor: For networking, used here to fetch weather data.
- SQLDelight: For a type-safe, multiplatform local database.
- Paging 3 (Multiplatform): For efficiently loading large data sets.
- Coil 3: For multiplatform image loading.
- Kotlinx Serialization: For JSON serialization/deserialization.
- Jetpack Compose: For building the UI.
- Google Maps Compose SDK: For displaying maps.
- CameraX: For camera functionalities.
- Media3 ExoPlayer: For video playback.
- Accompanist Permissions: To handle runtime permissions.
- Jetpack Navigation: For navigating between screens.
- SwiftUI: For the user interface.
- Utilizes the shared module for business logic, data storage, and networking.
To build and run this project, you will need to provide your own API keys for Google Maps and a weather service (like OpenWeatherMap).
-
Create a
local.propertiesfile in the root directory of the project. -
Add your API keys to this file, like so:
# Google Maps API Key for Android MAPS_API_KEY="YOUR_GOOGLE_MAPS_API_KEY" # OpenWeatherMap API Key OPENWEATHER_API_KEY="YOUR_OPENWEATHER_API_KEY"
-
Build the project using Android Studio or from the command line.











