LearnForge
L'AI trasforma qualsiasi argomento in un percorso di studio
Cosa fa
Piattaforma di apprendimento: lo studente sceglie un argomento e l'AI crea un percorso con lezioni ed esercizi.
Come guadagna
Il progetto è stato messo in vendita su SideProjectors a circa 15.000 $. Come guadagna non è indicato pubblicamente.
Rendilo tuo
- Per adulti che vogliono imparare una competenza per il lavoro: Excel, inglese per il lavoro, contabilità di base.
- Quiz e ripasso a intervalli per ricordare davvero.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Corso per Me": lo studente sceglie un argomento e il suo livello, e l'AI crea un percorso su misura con lezioni brevi, esempi ed esercizi corretti, che si adatta a come vanno i quiz. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con esempi di corsi e prezzi
2. Registrazione e accesso
3. Nuovo corso: argomento, livello, obiettivo, tempo al giorno
4. Il corso: moduli e lezioni con avanzamento
5. Lezione con spiegazione, esempi, quiz e domande all'AI
Stile: da quaderno digitale: sfondo bianco, blu #2563EB, verde #16A34A per le lezioni completate, carattere "Inter" e "Lora" per il testo delle lezioni, colonna di lettura stretta. 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:
- "corsi": argomento, livello, obiettivo, programma in JSON (moduli e lezioni), collegati all'utente
- "lezioni": testo generato, quiz, risultato del quiz, completata
Regole di sicurezza obbligatorie:
- ogni utente vede solo i suoi corsi e lezioni
- i crediti non si modificano 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. Programma e lezioni generate
Nel nuovo corso l'utente indica argomento, livello, obiettivo ("superare l'esame di statistica", "usare Excel al lavoro") e minuti al giorno. La Edge Function "programma" (un credito) chiede a Claude un programma in JSON: 4–8 moduli con 3–6 lezioni ciascuno, ognuna con titolo e obiettivo.
Ogni lezione si genera quando si apre (un credito ogni 5 lezioni): spiegazione di 5–10 minuti di lettura, esempi concreti, un riepilogo e 5 domande di quiz con spiegazione delle risposte.
Se il quiz va male (meno di 3 su 5), la lezione successiva ripassa i concetti sbagliati; se va benissimo, accelera. Avviso: "I contenuti sono generati dall'AI: per esami e lavoro verifica sempre le fonti ufficiali".
4. Domande e progressi
In ogni lezione si possono fare domande all'AI su quella lezione ("non ho capito l'esempio 2"), che risponde rimanendo sull'argomento.
Progressi: lezioni completate, media dei quiz per modulo, serie di giorni. Certificato di completamento scaricabile, con la nota che non ha valore legale.
5. Pagamenti con Stripe
Aggiungi pacchetti di crediti: 10 crediti a 9 €, 40 crediti a 29 €. Ogni nuovo utente riceve 3 crediti gratis. Un credito per ogni programma di corso e uno ogni 5 lezioni generate. Mostra sempre in alto quanti crediti restano e, quando finiscono, un riquadro per comprarne altri.
A pagamento riuscito il webhook aggiunge i crediti del pacchetto con la funzione aggiungi_crediti.
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. Qualità: crea 3 corsi su argomenti che conosci bene e controlla con attenzione che le lezioni non contengano errori.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Corsi e adattamento ai quiz
I corsi con il programma in JSON e le lezioni; la query trova i concetti dei quiz andati male da ripassare nella lezione successiva.
create table corsi (
id uuid primary key default gen_random_uuid(),
utente_id uuid not null references auth.users(id) on delete cascade,
argomento text not null,
livello text not null,
obiettivo text not null,
programma jsonb not null, -- { moduli: [{ titolo, lezioni: [{ titolo, obiettivo }] }] }
creato_il timestamptz not null default now()
);
create table lezioni (
id uuid primary key default gen_random_uuid(),
corso_id uuid not null references corsi(id) on delete cascade,
utente_id uuid not null references auth.users(id) on delete cascade,
modulo int not null,
numero int not null,
testo text,
quiz jsonb, -- [{ domanda, opzioni, giusta, concetto }]
risposte jsonb, -- risposte date dallo studente
punteggio int,
unique (corso_id, modulo, numero)
);
alter table corsi enable row level security;
create policy "le mie righe" on corsi
for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);
alter table lezioni enable row level security;
create policy "le mie righe" on lezioni
for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);
-- Concetti sbagliati nell'ultima lezione completata, da passare all'AI per il ripasso
select q ->> 'concetto' as concetto
from lezioni l, jsonb_array_elements(l.quiz) with ordinality as d(q, n)
where l.corso_id = 'ID-CORSO' and l.punteggio is not null
and (l.risposte ->> (n - 1)::int) is distinct from (q ->> 'giusta')
and (l.modulo, l.numero) = (
select modulo, numero from lezioni
where corso_id = 'ID-CORSO' and punteggio is not null
order by modulo desc, numero desc limit 1);Istruzioni per l'AI: lezione
Le istruzioni fisse che la Edge Function "lezione" 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 paziente e preciso. Scrivi una lezione in italiano sull'obiettivo indicato, al livello indicato, leggibile in 5-10 minuti: spiegazione chiara, 2 esempi concreti, riepilogo in 3 punti. Se ricevi concetti da ripassare, riprendili all'inizio. Poi 5 domande di quiz a scelta multipla con la spiegazione della risposta. Se non sei sicuro di un dato, non inventarlo. Rispondi solo con JSON: {"testo": "markdown", "quiz": [{"domanda", "opzioni": [4], "giusta": indice, "spiegazione", "concetto"}]}.
Pezzi comuni a tutti i progetti
- Pagamenti con Stripe
- Profili, piano e crediti
- Chiamare l'AI dal server
- Controllo finale prima di pubblicare
Glossario
- JSONB
- Un tipo di colonna che contiene dati strutturati flessibili, come un piccolo documento.