
Costruisci una dashboard completa per esplorare gli asteroidi in avvicinamento alla Terra: dati reali della NASA, backend Python FastAPI, frontend Next.js. Nessun tutorial passo-passo. Solo tu, la documentazione, e le dita sulla tastiera.
Il Centro di Studi degli Oggetti Vicini alla Terra della NASA traccia ogni asteroide che passa nel vicinato del Sistema Solare. I dati sono pubblici, aggiornati quotidianamente, e accessibili via API. La stessa API che usano i ricercatori veri.
Il tuo compito: costruire uno strumento che trasformi quei dati grezzi in qualcosa di leggibile, esplorabile, utile. Un backend Python FastAPI che fa da proxy intelligente e gestisce il caching? Un frontend Next.js che visualizza, filtra, racconta?
Non esiste una soluzione unica. Esistono scelte di design, di stack, scelte di architettura, scelte di trade-off. Le tue.
Libertà totale: potete estendere, reinterpretare, sperimentare e aggiungere le vostre idee. Anzi, un po’ di creatività è più che ben accetta.

Le due dashboard più interessanti, per qualità del codice, UX, o soluzioni creative, verran pubblicate sul blog e promosse sulla nostra pagina instagram "Ilprogrammatoreignorante". Il tuo progetto, con nome e link GitHub, davanti a migliaia di persone che capiscono cosa hai costruito. Vale più di qualsiasi certificato.
E anche se non vinci? Hai comunque un progetto full-stack con dati NASA reali sul tuo profilo GitHub. Qualcosa da mostrare in un colloquio. Qualcosa di concreto.

🟢 Questa è la traccia consigliata, se vuoi sperimentare con altre tecnologie, framework o approcci che ti incuriosiscono, fallo pure: l’importante è che il progetto resti solido, completo e raccontabile..
Endpoint API propri, gestione della chiave NASA, caching lato server e logica di business.
App React moderna, routing, componenti riutilizzabili e consumo dei tuoi endpoint FastAPI.
Grafici per distanza nel tempo, dimensioni e classificazione di rischio. I dati crudi sono noiosi, i grafici raccontano storie.
Backend su Railway, Render o Fly.io. Frontend su Vercel, Netlify o soluzione equivalente. Il progetto deve essere online.
Userai la NeoWs API (Near Earth Object Web Service). Documentazione ufficiale: api.nasa.gov

Rate limit DEMO_KEY: 30 richieste/ora, 50 richieste/giorno. È un limite severo, ma è il punto. Uno dei requisiti di questa challenge è gestirlo con intelligenza lato backend.
Ti consigliamo di registrarti per una chiave personale gratuita su api.nasa.gov (la registrazione è rapida): avrai 1.000 richieste/ora. Ma anche con la tua chiave personale i limiti esistono e il tuo backend deve rispettarli.
01. Proxy backend con caching
Il frontend non chiama mai direttamente la NASA. Chiama i tuoi endpoint FastAPI. Il backend fa da intermediario, salva le risposte in cache (usa quello che vuoi: FastAPI cache framework, Redis, anche file-based), e serve i dati già parsati. Se lo stesso range di date viene richiesto due volte, NASA non viene chiamata la seconda volta.
02. Lista asteroidi con filtri
Mostra nome, distanza minima in km, diametro stimato (min/max), velocità relativa, e se è classificato "potenzialmente pericoloso" (campo is_potentially_hazardous_asteroid). L'utente deve poter filtrare per pericolosi/non pericolosi e ordinare per distanza o dimensione.
03. Range di date arbitrario
L'API NASA accetta massimo 7 giorni per chiamata. Il tuo backend deve gestire range più lunghi automaticamente: spezza la richiesta in chunk da 7 giorni, esegui le chiamate in sequenza, aggrega i risultati. Il frontend fa una sola richiesta, il backend fa il lavoro sporco.
04. Grafici con Recharts
Almeno due visualizzazioni: distanza di avvicinamento nel tempo (scatter o line chart), e distribuzione delle dimensioni (histogram o bar chart). I dati grezzi in JSON sono informativi, i grafici sono comprensibili.
05. Scheda dettaglio asteroide
Cliccando su un asteroide, mostra una scheda con tutti i dati disponibili: close approach data storici, link alla pagina NASA JPL, orbital data. Questo richiede una seconda chiamata all'endpoint /neo/{id}. Anche questa deve passare per il tuo backend con caching.
06. UX robusta: loading, errori, edge case
Skeleton loader mentre arrivano i dati. Messaggi di errore chiari (rate limit raggiunto, range troppo lungo, data non valida). Gestione del caso "zero asteroidi trovati". Una buona UX non è solo bella, è robusta.
07. Deploy completo e funzionante
Backend su un hosting reale (Railway, Render, Fly.io). Frontend su Vercel o GitHub Pages. Le variabili d'ambiente (API key NASA) non vanno nel codice, nei secrets del servizio di deploy. Il progetto non esiste se non è online.
"Il momento migliore per iniziare era ieri. Il secondo momento migliore è adesso."
01. Crea una repository GitHub pubblica
Con un README chiaro: come far girare il progetto in locale, struttura delle cartelle, scelte fatte.
Gli endpoint FastAPI raggiungibili. Includi nel README la lista degli endpoint implementati.
02. Esponi un link pubblico al frontend
La dashboard funzionante e raggiungibile da qualsiasi browser senza login.
03. Compila il form di delivery
Chiedi suggerimenti nel nostro Discord nel Canale 🏆 Challenges > #nasa-neo-support