GenPPT
Scrivi l'argomento, l'AI prepara la presentazione
Incasso mensile: 7900 USD (fonte indicata nella scheda)
Cosa fa
L'utente scrive l'argomento o incolla un testo, e il servizio crea una presentazione completa: titoli, punti elenco, immagini e grafica coordinata. Si scarica in PowerPoint o PDF.
Come guadagna
Qualche presentazione gratis, poi abbonamento o pacchetti di crediti.
Rendilo tuo
- Pensato per gli studenti italiani: presentazioni per esami e tesine, con la bibliografia.
- Oppure per le aziende: presentazione aziendale con logo e colori già impostati.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Slide Pronte": crea una presentazione completa da un argomento o da un testo incollato, da scaricare in PowerPoint e modificare. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con esempi di presentazioni e prezzi
2. Registrazione e accesso
3. Nuova presentazione: argomento o testo, numero di slide, pubblico, tema grafico
4. Editor: elenco delle slide a sinistra, slide grande a destra
5. Le mie presentazioni
Stile: pulito e professionale: sfondo grigio chiaro #F8FAFC, blu #1E40AF, accento arancio #F59E0B, carattere "Inter", anteprime delle slide in formato 16:9. 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:
- "presentazioni": titolo, pubblico, tema, slide in JSON (titolo, punti, note per chi parla), collegate all'utente
Regole di sicurezza obbligatorie:
- ogni utente vede e modifica solo le sue presentazioni
- 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. Dal testo alle slide
Nella nuova presentazione l'utente scrive un argomento o incolla un testo (fino a 20.000 caratteri), sceglie il numero di slide (5–20), il pubblico (colleghi, clienti, scuola, investitori) e uno di 8 temi grafici.
La Edge Function "slide" (un credito) chiede a Claude un JSON con le slide: per ognuna titolo, massimo 5 punti brevi, un'idea di immagine o grafico, e le note per chi parla. Se c'è un testo, Claude usa solo le informazioni contenute nel testo.
Nell'editor l'utente modifica titoli e punti, sposta le slide trascinandole e le aggiunge o toglie. Pulsante "Rifai questa slide" con una richiesta a parole.
4. Scaricare in PowerPoint
Il pulsante "Scarica PowerPoint" crea il file .pptx direttamente nel browser con la libreria pptxgenjs (codice nei Dettagli tecnici): stesso tema, titoli, punti elenco e note per chi parla, tutto modificabile in PowerPoint, Keynote o Google Slides.
Aggiungi anche "Scarica PDF" e un link di sola lettura per mostrare la presentazione a schermo intero da qualsiasi dispositivo.
5. Pagamenti con Stripe
Aggiungi pacchetti di crediti: 10 presentazioni a 7,99 €, 40 presentazioni a 19,99 €. Ogni nuovo utente riceve 2 crediti gratis. Ogni presentazione creata costa un credito; modifiche e download sono gratis. 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. File: scarica una presentazione e aprila in PowerPoint e in Google Slides: i testi devono essere modificabili e nulla deve uscire dai bordi.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Tabella delle presentazioni
Ogni presentazione con le sue slide in formato JSON.
create table presentazioni (
id uuid primary key default gen_random_uuid(),
utente_id uuid not null references auth.users(id) on delete cascade,
titolo text not null,
pubblico text not null default 'colleghi',
tema text not null default 'chiaro',
slide jsonb not null default '[]', -- [{ titolo, punti: [], immagine, note }]
link_lettura uuid unique default gen_random_uuid(),
creato_il timestamptz not null default now()
);
alter table presentazioni enable row level security;
create policy "le mie righe" on presentazioni
for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);Creare il file PowerPoint
Trasforma le slide in un vero file .pptx nel browser, con la libreria pptxgenjs. I colori si scrivono senza il simbolo #.
import PptxGenJS from "pptxgenjs";
type Slide = { titolo: string; punti: string[]; note?: string };
type Tema = { sfondo: string; titolo: string; testo: string; carattere: string };
export async function scaricaPowerPoint(nome: string, slide: Slide[], tema: Tema) {
const pptx = new PptxGenJS();
pptx.layout = "LAYOUT_WIDE"; // 16:9
for (const s of slide) {
const pagina = pptx.addSlide();
pagina.background = { color: tema.sfondo }; // es. "FFFFFF"
pagina.addText(s.titolo, {
x: 0.6, y: 0.4, w: 12, h: 1,
fontSize: 32, bold: true, color: tema.titolo, fontFace: tema.carattere,
});
pagina.addText(
s.punti.map((p) => ({ text: p, options: { bullet: true, breakLine: true } })),
{ x: 0.6, y: 1.6, w: 12, h: 5, fontSize: 20, color: tema.testo, fontFace: tema.carattere, valign: "top" },
);
if (s.note) pagina.addNotes(s.note); // note per chi parla
}
await pptx.writeFile({ fileName: nome + ".pptx" });
}Istruzioni per l'AI: slide
Le istruzioni fisse che la Edge Function "slide" 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".
Crei presentazioni chiare in italiano. Ricevi argomento o testo, numero di slide e pubblico. Se c'è un testo, usa solo le sue informazioni. Ogni slide: titolo di massimo 8 parole, massimo 5 punti di massimo 12 parole, un'idea di immagine o grafico, note per chi parla di 2-4 frasi. Prima slide di titolo, ultima di riepilogo. Rispondi solo con JSON: {"slide": [{"titolo", "punti": [], "immagine", "note"}]}.
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.