BioRadar: uno scanner di flora e fauna con l'API di iNaturalist (Expo + Capacitor)
Il territorio non si legge da una mappa: si legge dalle tracce. Un'impronta, una foglia coriacea, un verso che non riconosci. Questo strumento non inventa nulla — interroga un archivio vivo, tenuto da chi il territorio lo osserva da anni, e lo restituisce come un bersaglio su uno schermo. Il radar non vede fantasmi: vede quello che qualcun altro ha già avvistato, vicino a te.
Cos'è BioRadar
BioRadar è un'app Android per identificare piante e animali, con un'interfaccia da scanner radar cyberpunk: cerchi concentrici, un indicatore centrale, un raggio che «spazza» l'area. Ma sotto l'estetica il dato è reale: BioRadar interroga iNaturalist[1], la piattaforma di citizen science con centinaia di milioni di osservazioni naturalistiche, e mostra le specie effettivamente avvistate entro un raggio di 20, 60 o 100 km dalla tua posizione (o da un punto scelto a mano su una mappa).
Accanto allo scanner c'è una seconda modalità, offline: un archivio curato a mano di otto biomi — mediterraneo, foresta temperata, alpino, zone umide, tropicale, steppa/semiarido, boreale, savana — con schede bilingue di flora e fauna tipiche, utile quando la connessione manca o vuoi solo esplorare senza scansionare. È un progetto di Zona 2: mobile, dal concept alla build, mostrato per come è fatto dentro.
Come è costruita
BioRadar nasce come app Expo Router[2] (React Native, TypeScript) ed è distribuita come APK Android tramite Capacitor[3]: l'export web di Expo diventa la WebView che gira dentro il wrapper nativo. È la stessa base di EcoSurvivor con un tassello in più, perché qui l'app deve anche parlare con un servizio esterno vero.
- EXPO ROUTER + CAPACITOR — le tre schede (Radar, Esplora, Salvati) e la schermata di dettaglio specie nascono dai file sotto
app/, come da convenzione expo-router. La build Android passa daexpo export --platform webacap sync android: la WebView risultante gira dentro Capacitor, con@capacitor/geolocationper la posizione nativa quando serve. - DATI REALI, NON UN DATASET STATICO — la schermata Radar chiama
GET /v1/observations/species_countsdi iNaturalist con latitudine, longitudine e raggio: risposta in tempo reale, ordinata per numero di osservazioni, con foto, stato di conservazione IUCN e nome scientifico per ogni specie. Nessun database di specie scritto a mano per questa parte: è il mondo reale, con la data di oggi. - DUE CONTEXT PER LO STATO —
LocationContextgestisce posizione corrente, posizione selezionata a mano e i punti salvati (conexpo-locationsu nativo,@capacitor/geolocationdentro la WebView);LanguageContextgestisce italiano/inglese con un dizionario di traduzioni tipizzato. Tutto il resto legge da qui. - CACHE IN MEMORIA — le risposte di iNaturalist vengono tenute in una
Mapper coordinate arrotondate e raggio, e i dettagli tassonomici (compreso il riassunto Wikipedia collegato a ogni specie) in una seconda cache: la stessa scansione o lo stesso dettaglio, richiesti due volte, non ripartono da zero. - DISEGNATO A MANO IN SVG — il radar, l'indicatore di raggio e le texture della UI sono react-native-svg, non immagini statiche. Font Inter, icone Feather e Material Community Icons, palette neon (ciano, magenta, verde) su nero quasi puro.
Lo scanner: dal raggio alla lista
Il flusso della schermata Radar è corto: scegli un raggio (20, 60 o 100 km), premi AVVIA SCANSIONE, e l'app interroga iNaturalist sulle coordinate attive — quelle del GPS o un punto scelto a mano dalla mappa. La risposta diventa una lista filtrabile per tutto / flora / fauna / uccelli (e altri gruppi tassonomici), ogni voce con foto, nome comune, nome scientifico in corsivo, sigla dello stato di conservazione IUCN[4] colorata (verde per «preoccupazione minore», fino al rosso per le specie a rischio) e il numero di osservazioni registrate nella zona.
Toccando una specie si apre la scheda di dettaglio: foto più grandi, il riassunto da Wikipedia collegato al taxon (quando disponibile), e un pulsante di condivisione. La scheda può anche recuperare una foto aggiuntiva cercando per nome scientifico, per i casi in cui la prima foto restituita dall'API è scarsa.
Esplora: l'archivio offline dei biomi
La seconda scheda ribalta l'approccio: invece di interrogare la rete, mostra un dataset curato e scritto a mano, bilingue italiano/inglese, organizzato per bioma. Ogni bioma ha una manciata di specie di flora e fauna rappresentative, con descrizione, habitat e caratteristiche distintive — pensato per essere letto, non solo scansionato. L'app riconosce anche il bioma più probabile a partire dalle coordinate correnti, e lo segnala in cima alla lista come «bioma attuale».
Questa metà dell'app risponde a un limite pratico dello scanner: iNaturalist è ricchissimo dove ci sono osservatori attivi, più scarso altrove. L'archivio dei biomi copre il vuoto con contenuto stabile, sempre disponibile, pensato per l'apprendimento più che per la scoperta sul campo.
Salvati e i punti sulla mappa
La terza scheda tiene traccia dei punti salvati: coordinate che vuoi ritrovare in fretta, per tornare a scansionare un posto specifico senza affidarti solo al GPS del momento. Da qui si accede anche al disclaimer generale dell'app, richiamabile in qualsiasi momento dopo la prima accettazione.
> ui: expo router (react native) · wrapper capacitor · typescript
> dati live: iNaturalist API · species_counts by lat/lng/radius · cache in-memory
> dati offline: dataset biomi scritto a mano · it/en · nessuna rete richiesta
> posizione: expo-location (nativo) / @capacitor/geolocation (webview)
> grafica: react-native-svg · font inter · feather + material community icons
Domande frequenti
Con che tecnologia è fatta BioRadar?
È un'app Expo Router (React Native, TypeScript), esportata come web e impacchettata con Capacitor per generare l'APK Android. La posizione usa expo-location o @capacitor/geolocation a seconda della piattaforma.
Da dove arrivano le specie mostrate nello scanner?
Dall'API pubblica di iNaturalist, interrogata in tempo reale con le coordinate e il raggio scelti. Sono osservazioni reali caricate dalla community di iNaturalist, non un catalogo statico scritto per l'app.
Funziona senza connessione?
Lo scanner no, perché dipende dall'API. La scheda Esplora, con l'archivio degli otto biomi, invece è interamente offline: nessuna chiamata di rete, dati già inclusi nell'app.
L'app traccia la mia posizione da qualche parte?
La posizione viene usata solo per interrogare iNaturalist e per i punti che scegli tu di salvare in locale sul telefono. Non c'è un server di BioRadar che raccoglie o conserva le tue coordinate.
Un radar non crea nulla: amplifica quello che c'è già, e lo rende leggibile a colpo d'occhio. Che il prossimo bersaglio sulla tua schermata sia un airone in riva a un canale o una quercia che c'era già prima di te — il segnale è sempre stato lì. Serviva solo chi si fermasse ad ascoltarlo.
Note
- iNaturalist — piattaforma di citizen science nata da un progetto universitario e oggi gestita insieme alla California Academy of Sciences e alla National Geographic Society: chiunque può caricare foto di piante e animali osservati, che vengono identificati dalla community e diventano dati aperti consultabili via API. ↑ torna al testo
- Expo Router — il sistema di navigazione di Expo basato sui file: la struttura delle cartelle sotto
app/definisce le schermate e i loro percorsi, come avviene per le pagine di un sito. ↑ torna al testo - Capacitor — un wrapper nativo che impacchetta una web app (qui: l'export web di Expo) dentro una WebView Android/iOS, dandole accesso a funzioni native come geolocalizzazione, filesystem e notifiche tramite plugin. ↑ torna al testo
- Stato di conservazione IUCN — la scala della International Union for Conservation of Nature che classifica il rischio di estinzione di una specie, da LC («preoccupazione minore») a EX («estinta»), passando per NT, VU, EN e CR. ↑ torna al testo
SURVIVAL APPS