Boothie
Un selfie trasformato nello stile delle vecchie fotocamere
Incasso mensile: 52.000 USD (fonte indicata nella scheda)
Cosa fa
App per telefono: si sceglie uno stile (fotocamera compatta anni 2000, pellicola Kodak e altri), si carica un selfie e l'AI lo ridisegna con quell'estetica.
Come guadagna
Ha entrate ricorrenti ogni mese, verificate su TrustMRR. Prezzi e piani esatti sono indicati sul sito del progetto.
Rendilo tuo
- Stili legati all'Italia: cartolina anni '60, Polaroid in vacanza, fotoromanzo.
- Solo foto di sé stessi, mai di altre persone.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Rullino": trasforma un selfie nello stile delle vecchie fotocamere (compatta anni 2000, pellicola, Polaroid) con l'AI. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con esempi prima/dopo per ogni stile e il pulsante "Prova gratis"
2. Registrazione e accesso
3. Pagina di creazione: carica una foto, scegli lo stile, vedi il risultato
4. Galleria personale con tutte le foto create
5. Pagina per comprare crediti
Stile: nostalgico e divertente: sfondo crema #F5EFE6, testo marrone scuro #3B2F2F, accento arancione pellicola #E8762C, carattere "Space Grotesk", le foto presentate dentro cornici bianche come stampe. 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:
- "foto": l'originale e il risultato salvati nello Storage, lo stile scelto, la data, collegate all'utente
Regole di sicurezza obbligatorie:
- ogni utente vede solo le sue foto e i suoi file nello Storage
- i crediti non si possono modificare dal browser
- le foto originali si cancellano da sole dopo 30 giorni
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. La trasformazione della foto
Crea la pagina di creazione: l'utente carica una foto (JPG o PNG, massimo 10 MB, ridotta nel browser a 1.536 pixel sul lato lungo) e sceglie uno di 8 stili, ognuno con un'anteprima di esempio: compatta digitale anni 2000 con flash, pellicola Kodak calda, pellicola in bianco e nero, Polaroid, cartolina anni '60, foto da fotoromanzo, VHS, cabina per fototessere.
Carica la foto nello Storage nella cartella dell'utente, poi chiama una Edge Function che scala un credito e invia la foto a un'API di modifica immagini con le istruzioni dello stile scelto. Mostra un'animazione di attesa (una pellicola che si sviluppa) e poi il risultato con confronto prima/dopo, pulsante per scaricarla e per condividerla.
Avviso visibile al caricamento: "Carica solo foto tue o di persone che ti hanno dato il permesso".
4. La galleria
Crea la galleria personale: tutte le foto create in una griglia, dalla più recente, con filtro per stile. Toccando una foto si apre a schermo intero con i pulsanti scarica, condividi, rifai con un altro stile (costa un credito) e cancella.
Aggiungi una pagina "Rullino del giorno": ogni giorno uno stile in offerta che costa metà credito, per far tornare gli utenti.
5. Pagamenti con Stripe
Aggiungi pacchetti di crediti: 10 foto a 3,99 €, 30 foto a 8,99 €, 100 foto a 19,99 €. Ogni nuovo utente riceve 3 crediti gratis. Ogni foto creata costa un credito. 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. Foto: prova a caricare un file che non è un'immagine o troppo grande: deve essere rifiutato con un messaggio chiaro.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Tabella e spazio per le foto
La tabella delle foto e le regole dello Storage: ognuno può leggere e caricare solo nella propria cartella.
create table foto (
id uuid primary key default gen_random_uuid(),
utente_id uuid not null references auth.users(id) on delete cascade,
stile text not null,
originale_path text not null,
risultato_path text,
creato_il timestamptz not null default now()
);
alter table foto enable row level security;
create policy "le mie righe" on foto
for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);
-- Spazio privato: i file stanno in cartelle col nome dell'utente
insert into storage.buckets (id, name, public) values ('foto', 'foto', false);
create policy "carico nella mia cartella" on storage.objects
for insert to authenticated
with check (bucket_id = 'foto' and (storage.foldername(name))[1] = auth.uid()::text);
create policy "leggo la mia cartella" on storage.objects
for select to authenticated
using (bucket_id = 'foto' and (storage.foldername(name))[1] = auth.uid()::text);Pulizia automatica dopo 30 giorni
Cancella ogni notte le foto originali più vecchie di 30 giorni: meno spazio occupato e più privacy. Richiede pg_cron.
select cron.schedule('pulizia-originali', '0 3 * * *', $
delete from storage.objects
where bucket_id = 'foto'
and name like '%/originali/%'
and created_at < now() - interval '30 days';
$);
Pezzi comuni a tutti i progetti
Glossario
- Storage
- Lo spazio di Supabase dove si salvano i file, come foto e audio, con le sue regole di accesso.
- Cron
- Un'operazione programmata che parte da sola a orari fissi, per esempio ogni lunedì mattina.