← Tutte le idee Studio e formazione

Sistema solare in tempo reale

Il sistema solare in tempo reale, con migliaia di asteroidi e satelliti

Cosa fa

Una visualizzazione nel browser che mostra in tempo reale pianeti, oltre 500.000 asteroidi e tutti i satelliti tracciati.

Come guadagna

Presentato su Hacker News dal suo creatore, che non dichiara incassi. Idee nostre per guadagnare con un progetto simile: sponsorizzazioni educative, versione per planetari e scuole.

Rendilo tuo

  • Versione più semplice e in italiano per i bambini delle elementari.
  • "Quando passa la Stazione Spaziale sopra casa mia", con avviso sul telefono.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Cielo Adesso": mostra nel browser dove si trovano in questo momento i pianeti e i satelliti artificiali, con la possibilità di andare avanti e indietro nel tempo e di vedere cosa passa sopra la propria città. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Vista del sistema solare in 3D con i pianeti nella posizione di oggi
2. Cursore del tempo: avanti e indietro di giorni, mesi, anni
3. Satelliti attorno alla Terra, con la Stazione Spaziale in evidenza
4. Prossimi passaggi visibili sopra la tua città
5. Schede dei pianeti per la scuola

Stile: spaziale: sfondo nero con stelle, pianeti con texture, interfaccia in vetro scuro trasparente, accento ciano #22D3EE, carattere "Space Grotesk". Nessuna immagine generica di stock.

Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.

2. Database, account e sicurezza

Collega il progetto a Supabase e attiva la registrazione con email e password.

Crea queste tabelle:
- "orbite": dati orbitali dei satelliti aggiornati ogni giorno da fonti pubbliche
- "avvisi": città e satellite per cui l'utente vuole un avviso di passaggio, collegati all'utente
- "profili": piano

Regole di sicurezza obbligatorie:
- i dati orbitali sono pubblici
- ogni utente vede solo i suoi avvisi
- il piano non si modifica dal browser

Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.

3. Pianeti nella posizione giusta

Le posizioni dei pianeti si calcolano nel browser con gli elementi orbitali pubblicati dal JPL della NASA e l'equazione di Keplero (codice nei Dettagli tecnici): precisione più che sufficiente per una visualizzazione. La scena 3D è fatta con Three.js, con distanze in scala ridotta e un interruttore "scala reale" per far capire le distanze vere.

Il cursore del tempo sposta la data: si vedono i pianeti girare, le congiunzioni e le opposizioni. I satelliti attorno alla Terra si calcolano dai dati orbitali pubblici (formato TLE) con la libreria satellite.js, aggiornati ogni giorno.

4. Passaggi sopra la tua città e scuole

Data la posizione dell'utente, il sito calcola i prossimi passaggi visibili della Stazione Spaziale (sera o mattina presto, quando è illuminata dal sole e il cielo è scuro) con ora, direzione e altezza. Avviso via email o notifica 10 minuti prima per gli utenti Pro.

Schede dei pianeti per la scuola con dati, curiosità e immagini NASA di pubblico dominio.

5. Pagamenti con Stripe

Aggiungi un pagamento singolo di 2,99 € una volta sola. Il pagamento sblocca gli avvisi dei passaggi, tutti i satelliti e la modalità scala reale.

A pagamento riuscito il webhook imposta "piano" a "pro" nella tabella "profili", sulla riga dell'utente indicata in client_reference_id.

Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.

6. Controlli specifici di questo progetto

Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Precisione: confronta la posizione di Marte e Giove di oggi con un'app di astronomia affidabile: devono coincidere a occhio.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Posizione di un pianeta con Keplero

Dagli elementi orbitali calcola la posizione del pianeta attorno al Sole in una certa data, risolvendo l'equazione di Keplero con il metodo di Newton.

type Elementi = {
  a: number;      // semiasse maggiore (UA)
  e: number;      // eccentricità
  i: number;      // inclinazione (gradi)
  L: number;      // longitudine media all'epoca J2000 (gradi)
  peri: number;   // longitudine del perielio (gradi)
  nodo: number;   // longitudine del nodo ascendente (gradi)
  Lgiorno: number; // aumento della longitudine media al giorno (gradi)
};

const rad = (g: number) => (g * Math.PI) / 180;

export function posizione(el: Elementi, data: Date) {
  const giorni = (data.getTime() - Date.UTC(2000, 0, 1, 12)) / 86_400_000;   // giorni da J2000
  const M = rad((el.L + el.Lgiorno * giorni - el.peri) % 360);               // anomalia media

  // Equazione di Keplero: E - e·sin(E) = M  (5 passi di Newton bastano)
  let E = M;
  for (let k = 0; k < 5; k++) E -= (E - el.e * Math.sin(E) - M) / (1 - el.e * Math.cos(E));

  // Posizione nel piano dell'orbita
  const x = el.a * (Math.cos(E) - el.e);
  const y = el.a * Math.sqrt(1 - el.e * el.e) * Math.sin(E);

  // Rotazione nel piano dell'eclittica
  const w = rad(el.peri - el.nodo), O = rad(el.nodo), I = rad(el.i);
  const cw = Math.cos(w), sw = Math.sin(w), cO = Math.cos(O), sO = Math.sin(O), cI = Math.cos(I), sI = Math.sin(I);
  return {
    x: (cw * cO - sw * sO * cI) * x + (-sw * cO - cw * sO * cI) * y,
    y: (cw * sO + sw * cO * cI) * x + (-sw * sO + cw * cO * cI) * y,
    z: sw * sI * x + cw * sI * y,
  };   // in unità astronomiche, con il Sole al centro
}

// Marte (valori approssimati JPL validi 1800-2050)
export const MARTE: Elementi = { a: 1.5237, e: 0.0934, i: 1.85, L: 355.45, peri: 336.06, nodo: 49.56, Lgiorno: 0.524033 };

Pezzi comuni a tutti i progetti

Glossario

Equazione di Keplero
La formula che lega il tempo alla posizione di un pianeta sulla sua orbita ellittica.
TLE
Un formato standard di due righe di numeri che descrive l'orbita di un satellite.