Wonderhop
Un gioco quotidiano: indovina cosa risponde la maggior parte della gente
Cosa fa
Ogni giorno una domanda: devi indovinare la risposta più comune, oppure una risposta che nessuno ha dato. Un gioco giornaliero, come Wordle, che fa tornare la gente ogni giorno.
Come guadagna
Presentato su Hacker News dal suo creatore, che non dichiara incassi. Idee nostre per guadagnare con un progetto simile: pubblicità leggera e un abbonamento per giocare le partite passate.
Rendilo tuo
- Versione italiana con domande sulla nostra cultura: "il primo piatto che ti viene in mente".
- Classifiche tra amici e condivisione del risultato a quadratini, come Wordle.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Cosa Pensano Tutti": un gioco giornaliero come Wordle: ogni giorno una domanda ("Un frutto che si mangia d'estate?"); devi indovinare la risposta più comune tra tutti i giocatori, oppure trovarne una che nessuno ha dato. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. La domanda di oggi con il campo per rispondere
2. Risultato: la tua risposta in classifica, le 10 più date, quanti l'hanno detta
3. Archivio delle domande passate (Pro)
4. Statistiche personali e serie di giorni
5. Condivisione del risultato con le emoji
Stile: giocoso e pulito: sfondo bianco, giallo #FACC15, viola #7C3AED, carattere "Space Grotesk", tutto in una schermata, animazione delle barre dei risultati. 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:
- "domande": testo, giorno, modalità (più comune o unica)
- "risposte": domanda, risposta normalizzata, chi ha risposto (o un identificativo anonimo), data
Regole di sicurezza obbligatorie:
- si risponde una volta al giorno per domanda
- le risposte degli altri si vedono solo dopo aver risposto
- le risposte offensive vengono filtrate e non compaiono nelle classifiche
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. Risposte confrontate tra tutti
Ogni giorno a mezzanotte compare una nuova domanda uguale per tutti. Il giocatore scrive una risposta breve; la risposta viene "normalizzata" (minuscole, senza accenti, al singolare quando possibile, sinonimi comuni uniti: "anguria" e "cocomero" contano come una) così che le risposte uguali si sommino (codice nei Dettagli tecnici).
Modalità "più comune": vinci tanti punti quante persone hanno dato la tua stessa risposta. Modalità "unica": vinci se nessun altro l'ha data. Il risultato completo si vede la sera, ma subito dopo aver risposto si vede la classifica provvisoria.
Si gioca senza account (un identificativo anonimo nel browser); con l'account si conservano statistiche e serie.
4. Condivisione e statistiche
Il pulsante "Condividi" copia un testo con le emoji (es. "Cosa Pensano Tutti #142 🟨🟨🟨⬜ 3° risposta più data") senza svelare la risposta.
Statistiche: giorni giocati, serie, media dei punti. Pubblicità discreta sotto il risultato, mai sopra la domanda, dopo il consenso ai cookie.
5. Pagamenti con Stripe
Aggiungi un pagamento singolo di 2,99 € una volta sola. Il pagamento toglie la pubblicità e sblocca l'archivio di tutte le domande passate.
A pagamento riuscito il webhook imposta "piano" a "pro" nella tabella "profili", sulla riga dell'utente indicata in client_reference_id.
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. Normalizzazione: rispondi "Cocomero", "cocomeri" e "ANGURIA" da tre browser: devono contare come la stessa risposta.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Risposte uguali che si sommano
Ogni risposta viene ripulita (minuscole, senza accenti, sinonimi) prima di essere contata, e ognuno risponde una sola volta per domanda.
create extension if not exists unaccent;
create table sinonimi (
parola text primary key, -- es. 'anguria'
forma text not null -- es. 'cocomero'
);
create table risposte (
domanda_id int not null,
giocatore text not null, -- id utente o identificativo anonimo del browser
risposta text not null,
normalizzata text not null,
primary key (domanda_id, giocatore)
);
alter table risposte enable row level security;
create function normalizza(testo text) returns text
language sql immutable as $
select coalesce(s.forma, base) from (
select regexp_replace(lower(unaccent(trim(testo))), '[^a-z0-9 ]', '', 'g') as base
) b left join sinonimi s on s.parola = b.base;
$;
-- Salva la risposta e restituisce quante persone hanno dato la stessa
create function rispondi(domanda int, chi text, testo text) returns int
language plpgsql security definer set search_path = public as $
declare n text := normalizza(testo); quanti int;
begin
insert into risposte values (domanda, chi, testo, n);
select count(*) into quanti from risposte where domanda_id = domanda and normalizzata = n;
return quanti;
end $;
grant execute on function rispondi(int, text, text) to anon, authenticated;
-- Le 10 risposte più date (solo per chi ha già risposto: controllato nella Edge Function)
select normalizzata, count(*) as volte
from risposte where domanda_id = 142
group by normalizzata order by volte desc limit 10;
Pezzi comuni a tutti i progetti
Glossario
- Normalizzare
- Rendere uguali parole scritte in modi diversi (maiuscole, accenti, plurali) per poterle contare insieme.