CHALLENGE #1 - NASA NEO Dashboard

challenge_neo_nasa

Scadenza: lunedì 25 maggio 2026 alle ore 10:00

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 contesto

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.

 

✨ Questo è il livello a cui puoi arrivare

asteroid_monitoring

 

Il premio

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.

 

instagram_ilprogrammatoreignorante

 

 

Lo stack

🟢​ 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..

 

Backend: Python + FastAPI


Endpoint API propri, gestione della chiave NASA, caching lato server e logica di business.

 

Frontend: Next.js + Shadcn UI


App React moderna, routing, componenti riutilizzabili e consumo dei tuoi endpoint FastAPI.

 

Visualizzazione: Recharts


Grafici per distanza nel tempo, dimensioni e classificazione di rischio. I dati crudi sono noiosi, i grafici raccontano storie.

 

Deploy: A tua scelta


Backend su Railway, Render o Fly.io. Frontend su Vercel, Netlify o soluzione equivalente. Il progetto deve essere online.

 

L'API NASA

 

Userai la NeoWs API (Near Earth Object Web Service). Documentazione ufficiale: api.nasa.gov

logo_nasa

 

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.

 

Cosa deve fare

 

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.

 

🚀 Sei pronto?

"Il momento migliore per iniziare era ieri. Il secondo momento migliore è adesso."

 

Come consegnare

arkemis_discord

 

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

Consegna qui il tuo progetto

 

Hai bisogno di supporto durante lo sviluppo?

Chiedi suggerimenti nel nostro Discord nel Canale 🏆​ Challenges > #nasa-neo-support

Hai completato la challenge?

Invia il tuo progetto entro il 25/05/2026 e permettici di valutare la tua soluzione, il tuo approccio tecnico e le scelte che hai fatto durante lo sviluppo.

🚀 Costruisci, sperimenta e spingi oltre.

it-cofinanziato-dallunione-europea-pos-logoministero-sviluppo-economicoregione-puglia-logopuglia-sviluppo-logo
Privacy Policy
Termini e condizioni
Cookie Policy
P.IVA IT11459490964