Mobile App for Fishing
A fishing app is an intersection of several technical domains: offline maps (angler on waterway often no signal), bite forecast (weather + lunar calendar + barometer), catch log with geolocation, and social community. Making it all work organically is a non-trivial task.
Offline Maps of Waterways
App foundation — map with waterways, fishing spots, working offline.
Tiled maps for offline: MBTiles format (SQLite with tiles inside). User downloads selected region map in advance. iOS: Mapbox Maps SDK perfectly supports offline via OfflineManager.downloadStylePack + TilesetDescriptor. Android: similar via Mapbox or OSMDroid with tile cache.
Budget alternative — OpenStreetMap tiles + Leaflet/MapLibre in WebView. Native loss noticeable, especially working with GPS track.
Fishing spots — user POI (fishing_spots): coordinates, name, water type (river/lake/reservoir/sea), preferred tackle. Stored in cloud, sync to SQLite for offline.
Vector layers over map (spawning zones, forbidden areas) — GeoJSON from server, renders as MGLFillLayer (Mapbox iOS) or PolygonOverlay (MapKit).
Bite Forecast
Fish activity prediction — combination of factors:
- Atmospheric pressure (trend: rising/falling/stable). Stable high — good. Sharp drop — bad. Data: OpenWeatherMap or Open-Meteo (
surface_pressure). - Moon phase. Full and new moon traditionally considered active. Calculate locally via formula (no API): moon position computed from date offline.
- Water temperature. OpenWeatherMap
water_temperaturefor seas; rivers/lakes — UserReport (anglers input themselves). - Time of day: morning dawn (30 min before/after sunrise) and evening — peak activity for most species.
- Wind: moderate west — good, strong north — bad.
Forecast algorithm — weighted sum of factors → rating 1-5 "fish". Specific weights picked empirically or via ML model trained on catch diary data.
Catch Log
Record: fish species (select from reference + photo for ID), weight/length, tackle, bait, depth, spot coordinates, weather at catch time (auto from API). Fish photo — auto-measurement via AR (RealityKit ARWorldTrackingConfiguration + MLModel for size estimate from reference object).
Fish species ID from photo — CoreML model (trained on iNaturalist dataset) for iOS, ML Kit Custom Model for Android. Accuracy 70-80% for common species — sufficient for form pre-fill, user corrects.
Season stats: best spots on heatmap, top species, comparison to last year. Swift Charts (iOS 16+) or MPAndroidChart for graphs.
Community
Public catch feed — users share results (option to hide exact coordinate — "water without point"). Angler rating by catch weight. Forum by waterway — geolocation-attached discussions.
Point confidentiality: "secret place" — coordinate stored with ±500m radius noise on publish. Real coordinate stays in personal diary.
Timeline
Basic app (offline map, catch log, bite forecast) — 6-10 weeks. Full version with fish ID via ML, AR measurement, and community — 4-6 months. Cost individual.







