Your fishing log, always with you. Mark your spots, log every catch with the conditions that hooked it, and check live weather before you head out.
- 🗺️ Save your spots — drop custom-colored markers on any lake, river, or coastline.
- 🎣 Log every catch — species, weight, lure, photo, notes, and the exact weather you caught it in.
- 📒 Browse your history — every catch and place, sorted, filterable by species, spot, or date.
- 🌦️ Know the conditions — live weather and multi-day forecasts for every saved spot.
- ☁️ Sync everywhere — sign in once; your log follows you across devices.
- 📴 Works offline — keep logging with no signal; it syncs when you're back in range.
A Kotlin Multiplatform app (Android + iOS) with a shared UI in Compose Multiplatform.
| Area | Stack |
|---|---|
| UI | Compose Multiplatform, Material 3 |
| DI | Koin |
| Backend | Firebase — Auth, Firestore, Storage, Analytics, Crashlytics |
| Networking | Ktor client (weather via OpenWeatherMap) |
| Local DB | Room (KMP) |
| Images | Coil 3 |
| Maps | Google Maps (KMP) |
| Animations | Compottie (Lottie) |
| Ads | Google AdMob |
shared/ # KMP module — commonMain / androidMain / iosMain
commonMain/ # shared UI, domain, data, DI
androidMain/ # Android-specific (maps, ads, theme, workers)
iosMain/ # iOS-specific actuals
androidApp/ # Android application entry point
iosApp/ # iOS application entry point
docs/ # store listing, privacy & terms (GitHub Pages), store assets
Add your keys to local.properties / secrets.properties (OPENWEATHER_KEY, MAPS_API_KEY, GOOGLE_WEB_CLIENT_ID, and keystore signing config), then:
./gradlew :androidApp:assembleDebug # Android debug build
./gradlew :androidApp:bundleRelease # signed release bundle (.aab)iOS builds from iosApp/ in Xcode against the shared framework.
Launching soon on Google Play.
Made for anglers. Tight lines. 🎣



