Bottled
Lanci un messaggio in bottiglia e fai amicizia con qualcuno dall'altra parte del mondo
Incasso mensile: 13.422 USD (fonte indicata nella scheda)
Cosa fa
App social per fare amicizia in tutto il mondo: si scrive un messaggio che arriva a una persona a caso, come un messaggio in bottiglia. Il fondatore dichiara 200.000 utenti attivi al mese e 1.000 nuovi utenti al giorno senza pubblicità.
Come guadagna
Abbonamenti nell'app, oltre 1.000 abbonati, 411.000 $ incassati in totale. Nata nel 2017 in Francia, 80.000 recensioni con una media di 4,7. Incassi verificati con RevenueCat.
Rendilo tuo
- Per imparare le lingue: bottiglie solo verso madrelingua della lingua che studi.
- Per persone sole nelle grandi città, con incontri dal vivo di gruppo.
- Bottiglie vocali invece che scritte.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Bottiglia": un'app per fare amicizia nel mondo con messaggi in bottiglia: scrivi un messaggio, arriva a una persona a caso con interessi simili, e se risponde nasce una chat. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Schermata iniziale con il mare animato
2. Registrazione con età verificata (solo maggiorenni), lingue e interessi
3. Lancia una bottiglia
4. Bottiglie ricevute
5. Chat con gli amici trovati
Stile: sognante: sfondo blu oceano #0EA5E9 con onde, sabbia #FDE68A, carattere "Quicksand", animazioni morbide della bottiglia. 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:
- "profili": nome, paese, lingue, interessi, data di nascita
- "bottiglie": autore, testo, lingua, destinatario, stato (in mare, arrivata, risposta, scartata)
- "chat" e "messaggi"
- "segnalazioni" e "blocchi"
Regole di sicurezza obbligatorie:
- si vedono solo le bottiglie ricevute e le proprie chat
- chi blocca non riceve più nulla da quella persona
- età minima 18 anni, contenuti controllati prima della consegna
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. Dove arriva la bottiglia
Quando si lancia una bottiglia, una funzione del database sceglie il destinatario: una persona attiva negli ultimi 3 giorni, che parla la lingua del messaggio, con almeno un interesse in comune, di un altro paese, che non l'ha bloccato e che non ha già troppe bottiglie in attesa (codice nei Dettagli tecnici).
Prima della consegna il testo passa da un controllo automatico (moderazione con l'AI) che blocca insulti, contenuti sessuali, richieste di soldi o di dati personali.
La bottiglia "naviga" qualche ora prima di arrivare: l'attesa è parte del divertimento e aumenta i ritorni nell'app.
4. Sicurezza della community
Pulsanti "segnala" e "blocca" in ogni bottiglia e chat; tre segnalazioni sospendono l'account in attesa di controllo. Niente foto nelle prime 48 ore di chat.
Pannello di moderazione per l'amministratore con le segnalazioni in coda.
5. Pagamenti con Stripe
Aggiungi un abbonamento a 3,99 € al mese o 24,99 € all'anno. Gratis l'utente ha: 3 bottiglie al giorno. Con il piano Pro sblocca: bottiglie illimitate, scelta del paese e della lingua, bottiglie vocali.
A pagamento riuscito il webhook porta l'utente al piano Pro; se l'abbonamento viene disdetto o non rinnovato lo riporta al piano gratuito.
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. Moderazione: lancia una bottiglia con un insulto o con il tuo numero di telefono: non deve essere consegnata.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Scegliere il destinatario
Una persona attiva, che parla la lingua, con un interesse in comune, di un altro paese, che non ha bloccato l'autore e con poche bottiglie in attesa.
create function scegli_destinatario(p_autore uuid, p_lingua text)
returns uuid language sql security definer set search_path = public as $
select p.id
from profili p, profili autore
where autore.id = p_autore
and p.id <> p_autore
and p.ultimo_accesso > now() - interval '3 days'
and p_lingua = any (p.lingue)
and p.paese <> autore.paese
and p.interessi && autore.interessi -- almeno un interesse in comune
and not exists (select 1 from blocchi b where b.chi = p.id and b.bloccato = p_autore)
and (select count(*) from bottiglie x where x.destinatario = p.id and x.stato = 'arrivata') < 5
order by random()
limit 1;
$;
revoke execute on function scegli_destinatario from public, anon, authenticated; -- solo dal server
Pezzi comuni a tutti i progetti
Glossario
- Moderazione
- Il controllo dei contenuti degli utenti per bloccare insulti, truffe e contenuti vietati.
