← Tutte le idee Studio e formazione

French Ready

Impara a parlare francese con conversazioni pratiche

Cosa fa

App per allenare la conversazione in francese con situazioni pratiche, invece che con la grammatica.

Come guadagna

Startup appena presentata su BetaList, che non dichiara incassi. Idee nostre per guadagnare con un progetto simile: abbonamento mensile.

Rendilo tuo

  • L'italiano per stranieri, con situazioni della vita in Italia.
  • L'inglese per un mestiere preciso: camerieri, receptionist, guide turistiche.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Francese al Volo": allena gli italiani a parlare francese in situazioni pratiche (al ristorante, in hotel, al lavoro, dal medico) con conversazioni simulate a voce con un'AI, e correzioni gentili alla fine. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina iniziale con le situazioni e il prezzo
2. Registrazione e livello (principiante, intermedio, avanzato)
3. Scelta della situazione e del ruolo dell'AI (cameriere, receptionist, collega)
4. Conversazione a voce o scritta, con aiuti se ti blocchi
5. Correzioni e parole nuove da ripassare

Stile: elegante e allegro: sfondo bianco, blu Francia #1E3A8A, rosso #DC2626 solo per i dettagli, carattere "Inter", fumetti della conversazione grandi. 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:
- "conversazioni": situazione, livello, messaggi, correzioni, data, collegate all'utente
- "parole": parole nuove incontrate, traduzione, esempio, prossimo ripasso

Regole di sicurezza obbligatorie:
- ogni utente vede solo le sue conversazioni e parole
- l'audio della voce non si conserva
- 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. Conversazioni in situazioni vere

L'utente sceglie una situazione (es. "prenoti un tavolo al telefono e chiedi di spostarlo") e il livello. Claude interpreta il personaggio, in francese adatto al livello, e porta avanti la scena con un obiettivo concreto. L'utente risponde scrivendo o parlando (riconoscimento vocale in francese del browser); le risposte dell'AI si ascoltano con la sintesi vocale.

Pulsante "Aiutami": suggerisce in italiano cosa potresti dire e una frase francese da usare.

Alla fine la Edge Function "correggi" restituisce in JSON gli errori principali con la frase corretta e la spiegazione in italiano, e le parole nuove (codice nei Dettagli tecnici).

4. Correzioni e ripasso

Le parole e le espressioni nuove finiscono nelle carte da ripassare con la ripetizione dilazionata. Le correzioni restano nello storico, raggruppate per tipo di errore (articoli, verbi, pronuncia).

Situazioni nuove ogni mese e un "esame di realtà" a fine livello: una conversazione più lunga con un voto.

5. Pagamenti con Stripe

Aggiungi un abbonamento a 7,99 € al mese. Gratis l'utente ha: 3 conversazioni a settimana. Con il piano Pro sblocca: conversazioni illimitate, tutte le situazioni, ripasso delle parole e storico delle correzioni.

A pagamento riuscito il webhook porta l'utente al piano Pro; se l'abbonamento viene disdetto o non rinnovato lo riporta al piano gratuito.

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. Livello: fai una conversazione da principiante: l'AI deve usare frasi brevi e lessico semplice, e passare all'italiano solo negli aiuti.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Istruzioni per l'AI: correggi

Le istruzioni fisse che la Edge Function "correggi" dà a Claude, che risponde in JSON. Il resto della funzione (accesso, crediti, rimborso se l'AI rifiuta) è uguale per tutti i progetti: è nella guida "Chiamare l'AI dal server".

Sei un insegnante di francese per italiani. Ricevi una conversazione in francese tra un personaggio e lo studente, con il livello dello studente. Individua i 3-6 errori più importanti dello studente (grammatica, lessico, registro), con la frase originale, quella corretta e una spiegazione breve in italiano. Elenca 5-10 parole o espressioni utili emerse, con traduzione italiana ed esempio. Sii incoraggiante. Rispondi solo con JSON: {"errori": [{"originale", "corretta", "spiegazione", "tipo"}], "parole": [{"francese", "italiano", "esempio"}], "commento": "una frase di incoraggiamento"}.

Errori per tipo e parole da ripassare

Le correzioni raggruppate per tipo di errore nelle ultime 4 settimane, e le parole da ripassare oggi.

create table conversazioni (
  id uuid primary key default gen_random_uuid(),
  utente_id uuid not null references auth.users(id) on delete cascade,
  situazione text not null,
  livello text not null,
  messaggi jsonb not null default '[]',
  correzioni jsonb,
  fatta_il timestamptz not null default now()
);

create table parole (
  id uuid primary key default gen_random_uuid(),
  utente_id uuid not null references auth.users(id) on delete cascade,
  francese text not null,
  italiano text not null,
  esempio text,
  prossimo_ripasso date not null default current_date,
  unique (utente_id, francese)
);

alter table conversazioni enable row level security;
create policy "le mie righe" on conversazioni
  for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);

alter table parole enable row level security;
create policy "le mie righe" on parole
  for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);

-- Errori più frequenti per tipo
select e ->> 'tipo' as tipo, count(*) as volte
from conversazioni c, jsonb_array_elements(c.correzioni -> 'errori') e
where c.utente_id = auth.uid() and c.fatta_il > now() - interval '28 days'
group by 1 order by volte desc;

Pezzi comuni a tutti i progetti

Glossario

JSONB
Un tipo di colonna che contiene dati strutturati flessibili, come un piccolo documento.
Gioco di ruolo
L'AI interpreta un personaggio (un cameriere, un collega) per simulare una conversazione vera.