Photo AI Studio
Carichi qualche selfie, ricevi un servizio fotografico professionale
Incasso mensile: 4100 USD (fonte indicata nella scheda)
Cosa fa
L'utente carica alcune foto di sé e l'AI crea nuove foto professionali in vari stili e ambientazioni: per il profilo LinkedIn, i social o il curriculum.
Come guadagna
Crediti a pagamento da spendere per nuovi servizi fotografici, più pubblicità sul sito.
Rendilo tuo
- Solo foto per il curriculum, con sfondi e abbigliamento adatti ai colloqui in Italia.
- Foto per i profili professionali di avvocati, medici, agenti immobiliari.
- Attenzione: chiedi il consenso e non permettere foto di altre persone.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Foto Profilo Pro": crea foto professionali per LinkedIn, curriculum e social partendo da alcuni selfie della persona, solo con il suo consenso esplicito. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con esempi (con il permesso delle persone mostrate) e prezzi
2. Registrazione con conferma della maggiore età
3. Caricamento di 6–12 selfie con istruzioni e consenso
4. Scelta degli stili: ufficio, studio fotografico, all'aperto, evento
5. Galleria dei risultati con download
Stile: professionale e luminoso: sfondo bianco, blu notte #1E293B, accento azzurro #38BDF8, carattere "Inter", griglia di foto 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:
- "servizi": stili scelti, stato (in attesa, in lavorazione, pronto), data del consenso, collegati all'utente
- "foto": selfie caricati e risultati nello Storage, collegati al servizio
Regole di sicurezza obbligatorie:
- ogni utente vede solo i suoi servizi e le sue foto
- senza consenso registrato non si avvia nessuna generazione
- i selfie si cancellano da soli dopo 7 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. Selfie, consenso e generazione
Nella pagina di caricamento spiega come scattare i selfie (luce naturale, viso ben visibile, espressioni diverse, niente occhiali da sole) e controlla nel browser che ci siano almeno 6 foto di almeno 512 pixel.
Prima di procedere l'utente spunta due caselle obbligatorie: "Le foto ritraggono me" e "Ho almeno 18 anni". Data e ora del consenso si salvano nel database e la Edge Function rifiuta di lavorare senza (regola nei Dettagli tecnici).
La generazione usa un'API di immagini che crea foto a partire da foto di riferimento della persona; quando le foto sono pronte l'utente riceve un'email. Ogni stile produce 10 foto.
4. Galleria e privacy
Galleria dei risultati divisa per stile, con download singolo o di tutte le foto in uno zip, e ritaglio rapido nei formati per LinkedIn (quadrato), curriculum (3:4) e copertina.
Pulsante ben visibile "Cancella tutto": elimina selfie, risultati e dati del servizio. I selfie si cancellano comunque da soli dopo 7 giorni; i risultati dopo 90.
5. Pagamenti con Stripe
Aggiungi pacchetti di crediti: 1 servizio (40 foto) a 19 €, 3 servizi a 39 €. Ogni nuovo utente riceve 0 crediti gratis. Ogni servizio fotografico 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. Consenso: prova ad avviare una generazione senza le due caselle spuntate chiamando direttamente la Edge Function: deve essere rifiutata.
2. Uso improprio: aggiungi nelle condizioni il divieto di caricare foto di altre persone, e un indirizzo per le segnalazioni.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Consenso obbligatorio e pulizia
Il servizio non può passare "in lavorazione" senza consenso registrato, e ogni notte si cancellano i selfie più vecchi di 7 giorni.
create table servizi (
id uuid primary key default gen_random_uuid(),
utente_id uuid not null references auth.users(id) on delete cascade,
stili text[] not null,
consenso_mie_foto timestamptz, -- quando ha dichiarato che le foto sono sue
consenso_maggiorenne timestamptz,
stato text not null default 'in_attesa'
check (stato in ('in_attesa', 'in_lavorazione', 'pronto')),
creato_il timestamptz not null default now(),
-- Senza i due consensi non si può lavorare
check (stato = 'in_attesa' or (consenso_mie_foto is not null and consenso_maggiorenne is not null))
);
alter table servizi enable row level security;
create policy "le mie righe" on servizi
for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);
insert into storage.buckets (id, name, public) values ('selfie', 'selfie', false);
create policy "la mia cartella" on storage.objects for all to authenticated
using (bucket_id = 'selfie' and (storage.foldername(name))[1] = auth.uid()::text)
with check (bucket_id = 'selfie' and (storage.foldername(name))[1] = auth.uid()::text);
-- Ogni notte: via i selfie più vecchi di 7 giorni
select cron.schedule('pulizia-selfie', '30 3 * * *', $
delete from storage.objects
where bucket_id = 'selfie'
and name like '%/originali/%'
and created_at < now() - interval '7 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.
- Consenso esplicito
- Una scelta attiva e registrata della persona (spuntare una casella), non un permesso dato per scontato.