Files
CRAPP/.lovable/plan/selezione-giocatore-al-primo-avvio-2026-07-31.md
T

1.8 KiB

Selezione giocatore al primo avvio

Aggiungere un flusso di onboarding che chiede "Chi sei?" la prima volta che l'app viene aperta, memorizzando la scelta in localStorage. Il profilo e la home si aggiorneranno automaticamente in base al giocatore selezionato.

Cosa cambia

  1. Nuovo store src/lib/user-store.ts

    • Persiste in localStorage l'id del giocatore scelto.
    • Espone useGiocatoreCorrente() che restituisce il giocatore selezionato o null.
    • Espone impostaGiocatore(id) e resetGiocatore().
  2. Nuova route /benvenuto

    • Schermata full-screen con logo, titolo "Benvenuto in CrAPP" e lista scrollabile della rosa.
    • Ogni riga mostra iniziali, nome, ruolo e numero maglia.
    • Al tap su un giocatore, lo store viene aggiornato e l'utente viene portato a /.
    • Non mostra la bottom navigation.
  3. Reindirizzamento condizionato in __root.tsx

    • Se non è ancora stato selezionato un giocatore, qualunque route apre /benvenuto.
    • Dopo la scelta, l'app funziona normalmente.
  4. Sostituzione di giocatoreCorrente con useGiocatoreCorrente()

    • Aggiornare src/routes/index.tsx per salutare il giocatore selezionato e mostrarne le statistiche rapide.
    • Aggiornare src/routes/profilo.tsx per renderlo il profilo personale del giocatore scelto.
  5. Cambio utente dalle impostazioni

    • In src/routes/profilo.tsx, aggiungere una voce "Cambia giocatore" che resetta la selezione e porta a /benvenuto.

Note tecniche

  • localStorage viene letto solo lato client, usando useSyncExternalStore per evitare mismatch di hydration.
  • La rosa reale è già presente in src/lib/crapp-data.ts (giocatori).
  • La costante esportata giocatoreCorrente verrà rimossa; i componenti consumeranno il nuovo hook.
  • Nessun backend richiesto: resta un prototipo locale.