EquiTrail β Horse Riding GPS TrackerΒΆ
EquiTrail is a Flutter-based GPS tracking app for horse riders in the Dutch market (Netherlands, Belgium, Germany, France). Track your rides, discover routes, find riding partners, and share your adventures.
π Quick LinksΒΆ
- Development Guide β Build commands, device IDs, API keys
- Current Tasks β What's being worked on
- Features β Complete feature list
- Architecture β System design & decisions
π± App StackΒΆ
| Framework | Flutter 3.44 / Dart 3.12 |
| State | Riverpod |
| Storage | Hive (local) / Firestore (cloud) |
| Maps | flutter_map with Leaflet |
| Navigation | go_router |
| Backend | Firebase (Auth, Firestore, Storage, Functions) |
| Version | v3.5.12+62 (phone) Β· 1062 (watch) |
π Region CoverageΒΆ
Official routes from OpenStreetMap (ODbL licence):
| Country | Routes | Km |
|---|---|---|
| π³π± Netherlands | 11,458 | ~32,140 km |
| π§πͺ Belgium | 2,693 | ~7,817 km |
| π©πͺ Germany | 558 | ~8,342 km |
| π«π· France | 79,040 | ~156,892 km |
| TOTAL | 93,749 | ~205,191 km |
π― Current FocusΒΆ
Phase 1: Website Route Display β ΒΆ
- Route import from Overpass API (188K routes)
- Website map rendering (magenta lines, weight 4)
- Firestore public read enabled
- Region enrichment in progress
Phase 2: Firebase API Layer (In Progress)ΒΆ
- Cloud Functions for routes with CDN caching
- Google Encoded Polyline compression (70-80% savings)
- Bounding box queries to prevent scraping
- Rate limiting + App Check protection
Phase 3: Revenue (Planned)ΒΆ
- Stripe payments for PRO subscriptions
- Google Play Billing integration
- Horse PRO shared subscription
π Documentation StructureΒΆ
- Getting Started β Setup, build commands, deployment
- Architecture β Design decisions, infrastructure, security
- Features β Complete feature list & roadmap
- Routes & Data β Route database, data sources, import status
- Operations β Backup, disaster recovery, bug tracking
π€ Discord CommunityΒΆ
- Server: discord.gg/sRcJuTQzyZ
- Tester Badge: Join, verify role, get feedback
- Route Helper: Drop
.gpxin #share-routes for stats - Leaderboard: Track rides & earn badges
π Security & PrivacyΒΆ
All data is private by default. Users control what is shared: - Profile visibility (name, avatar, location) - Ride visibility (public GPS tracks, anonymous stats) - Horse sharing (specific horses with specific riders)
See Security for details.
π Monitoring & AdminΒΆ
- Dashboard:
python3 scripts/dashboard.py(terminal) - Web Dashboard:
http://localhost:8080(Portainer) - Uptime Kuma:
http://192.168.1.111:3001(monitors) - Logs: Oracle server via Tailscale SSH
π DeploymentΒΆ
Phone App:
flutter build appbundle --release --obfuscate --split-debug-info=symbols/
python3 scripts/play_upload.py --aab build/app/outputs/bundle/release/app-release.aab --track internal
Website:
bash scripts/deploy_website.sh
Discord Bot:
scp discord_bot/bot.py equitrail@100.126.14.49:~/equitrail-bot/
ssh equitrail@100.126.14.49 "systemctl --user restart equitrail-bot"
Last Updated: 2026-06-09 | Version: v3.5.12+62 | Status: Active Development