Frontend Cross-Platform Application for POIFinder Server made with flutter.
  • Dart 73.4%
  • C++ 13.3%
  • CMake 10.4%
  • Swift 1.3%
  • C 0.8%
  • Other 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-25 17:54:46 +02:00
android v0.1.5 2026-07-25 17:54:46 +02:00
assets custom icon launcher 2026-07-25 16:12:21 +02:00
ios first commit, templating 2026-01-28 10:15:23 +01:00
lib asset refresh on check update 2026-07-25 17:11:07 +02:00
linux marker search + open nav url + aliases 2026-07-09 22:26:02 +02:00
macos marker search + open nav url + aliases 2026-07-09 22:26:02 +02:00
web first commit, templating 2026-01-28 10:15:23 +01:00
windows marker search + open nav url + aliases 2026-07-09 22:26:02 +02:00
.gitignore Moved brainstorm notes 2026-01-30 18:13:11 +01:00
.metadata first commit, templating 2026-01-28 10:15:23 +01:00
analysis_options.yaml first commit, templating 2026-01-28 10:15:23 +01:00
architecture.md increased poi marker size, removed name sorting 2026-07-20 19:54:46 +02:00
CLAUDE.md center on poi, poi size adjust 2026-07-19 18:13:33 +02:00
devtools_options.yaml fix request + range viewer 2026-07-24 11:15:03 +02:00
LICENSE osm map + license + ui improvements 2026-07-19 07:58:36 +02:00
pubspec.lock fix request + range viewer 2026-07-24 11:15:03 +02:00
pubspec.yaml v0.1.5 2026-07-25 17:54:46 +02:00
README.md marker search + open nav url + aliases 2026-07-09 22:26:02 +02:00
THIRD_PARTY_LICENSES.md osm map + license + ui improvements 2026-07-19 07:58:36 +02:00

POIFinder

App Flutter (Android-first) per la scoperta di Point of Interest (POI) su mappa, basata su MapLibre GL e su un sistema di plugin JSON remoti che permette di aggiungere nuove sorgenti di dati senza modificare il codice dell'app.

Cosa fa

  • Mostra una mappa (MapLibre) con diversi provider selezionabili (OpenStreetMap, Protomaps, MapTiler, Mapbox, Stamen, o uno stile custom via URL).
  • Centra la mappa sulla posizione GPS dell'utente (con cache del fix recente per evitare richieste ripetute).
  • Esegue una ricerca "radar": interroga tutti i plugin installati e abilitati, chiedendo i POI presenti intorno al centro mappa (entro un raggio configurabile), e li disegna come marker sulla mappa.
  • Toccando un marker si apre una scheda con gli attributi del POI (etichettati secondo lo schema dichiarato dal plugin), da cui è possibile salvarlo/rimuoverlo dai Bookmarks.
  • I "plugin" sono manifest JSON remoti che descrivono: un endpoint HTTP da interrogare, i parametri di configurazione esposti all'utente (testo, numero, select, switch), gli asset grafici (icona, marker) e lo schema di visualizzazione degli attributi restituiti dal loro endpoint.
  • I plugin si installano da URL, sono verificabili per aggiornamenti (confronto versione) e aggiornabili preservando le impostazioni già configurate dall'utente.
  • Le impostazioni dell'app (lingua, provider mappa, token, raggio di ricerca, ecc.) sono persistite localmente.

Struttura a 3 schermate

L'app è organizzata attorno a un menu inferiore (ConvexBottomBar) con 3 tab:

  1. POIs — griglia stile "metro" con i plugin installati, più due voci statiche: + Add plugin (installazione da URL) e Bookmarks (elenco POI salvati). Toccando un plugin si apre la pagina di dettaglio/configurazione.
  2. Map (tab di default) — la mappa con overlay (mirino centrale, pulsante GPS, pulsante radar) e i marker dei POI trovati.
  3. Settings — lingua, provider mappa, token API, URL custom, raggio di ricerca.

Funzionalità principali (dettaglio)

Area Descrizione
Mappa & GPS Rendering MapLibre, marker GPS con cache 2 minuti, centraggio camera.
Radar Interroga in parallelo gli endpoint di tutti i plugin abilitati, passando lat/lon/raggio + parametri configurati dall'utente.
Rendering POI Ogni plugin ha un'icona marker dedicata registrata sulla mappa; i marker portano con sé i dati del POI per la visualizzazione a tap.
Sistema plugin Installazione da URL o da QR code, rimozione, enable/disable, configurazione parametri, versioning/update, caching asset locale.
Elenco POI per plugin Toccando un plugin nella pagina POIs si apre l'elenco (ordinabile per nome o distanza) dei POI trovati nell'ultima scansione radar; le impostazioni del plugin restano raggiungibili dall'icona ingranaggio in alto a destra.
Bookmarks Salvataggio permanente di singoli POI con alias personalizzabile; rimozione sempre soggetta a conferma; apertura delle coordinate in un'app di mappe/navigazione esterna.
Impostazioni Persistenza locale (SharedPreferences) di tutte le preferenze utente.
Localizzazione Sistema di traduzione custom (EN/IT), nessuna dipendenza da intl.

Stack tecnico

Flutter · maplibre_gl · convex_bottom_bar · http · geolocator · path_provider · shared_preferences · url_launcher · mobile_scanner. Nessun state management avanzato (no Provider/Riverpod): stato locale nei widget + qualche classe statica/singleton per stato condiviso minimo.

Stato di sviluppo

Tutte le funzionalità pianificate nella prima fase sono implementate:

  • ✅ Mappa, GPS, Radar
  • ✅ Sistema plugin (install/remove/enable/versioning)
  • ✅ UI dettaglio plugin + configurazione parametri
  • ✅ Integrazione plugin → richieste di rete
  • ✅ Rendering dinamico dei POI sulla mappa
  • ✅ Bookmarks

Per i dettagli tecnici file-per-file, vedi architecture.md.