← Tutte le idee Intelligenza artificiale

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.