Sviluppo piattaforma ESCAPEWEB.INFO

Замовник: AI | Опубліковано: 27.12.2025

ESCAPEWEB.INFO — Specifica completa (Front User + Back Admin) v1 Modalità: Start per utente (7 giorni dal primo accesso al caso) 1) Scopo del sito ESCAPEWEB.INFO è una piattaforma di gioco online “thriller elegante” Ogni Caso è una mini-serie composta da 7 Giorni (G1…G7), pensata per ~15 minuti al giorno. Di fatto è una caccia al tesoro, dove ogni giorno vengono pubblicati degli indizi da cercare sul web, ed ogni giorno a indizio trovato ci sarà un nuovo indizio, il tutto per 7 giorni, con classifica finale del tempo impiegato dalla pubblicazione dell’indizio e della risposta durante i 7 giorni. Di fatto ci sarà una specie di hall of fame che è la ricompensa per chi trova gli indizi giusti nel minor tempo possibile durante i 7 giorni. Il sito deve permettere a un utente di: 1. registrarsi e accedere (email+password / Google / Facebook) 2. acquistare un singolo Caso oppure un abbonamento mensile con rinnovo automatico 3. pagare con PayPal o con carta (credito/debito/prepagata incl. Postepay) 4. giocare il Caso in 7 giorni con sblocco progressivo 5. completare il Caso inserendo la Soluzione finale + Case ID. 2) Modello commerciale e prezzi (configurabili) • Acquisto singolo Caso: €7,90 • Abbonamento mensile (recurring): €14,90/mese, rinnovo automatico finché l’utente non disdice (4 casi al mese: 1 a settimana, più accesso archivio — vedi regole) I prezzi devono essere parametrici (config o admin), non hardcoded. 3) Ruoli e permessi 3.1 Visitor • vede pagine pubbliche, teaser casi, pricing • può registrarsi/accedere • non vede contenuti completi dei casi 3.2 User (loggato) • dashboard personale • accesso ai casi acquistati o inclusi da subscription • gameplay 7 giorni, invio codici, completamento • profilo (nickname, preferenze) 3.3 Admin • crea/modifica/pubblica casi • gestisce contenuti e regole dei 7 giorni • vede statistiche, completamenti, tentativi • gestisce utenti e accessi 4) Registrazione / Login (obbligatorio) 4.1 Metodi • Email + password o verifica email o reset password • Google OAuth • Facebook OAuth 4.2 Sicurezza minima • rate limiting login • password policy (min 8 char) • sessioni sicure (token/cookie HttpOnly) • log eventi (login falliti ripetuti) 5) Pagamenti (obbligatorio) 5.1 Metodi pagamento • PayPal • Carta (credito/debito/prepagata incl. Postepay) 5.2 Prodotti • Single Case €7,90 (one-time) • Monthly Subscription €14,90/mese (auto-renew) 5.3 Regole subscription • rinnovo automatico finché l’utente non disdice • disdetta: resta attiva fino a fine periodo già pagato • eventuale payment failed: gestire stato “past_due” e grace period (se previsto) 5.4 Integrazione tecnica pagamenti Il backend deve gestire webhooks/eventi del provider: • checkout completato (single) → assegna accesso al caso • subscription created → accesso subscription attivo • subscription renewed → estende scadenza • subscription canceled → cancel_at_period_end = true • subscription ended → disattiva accesso • refund/chargeback → revoca accesso (regola definita) 6) Regole di accesso (Entitlements) 6.1 Tipi • CASE_PURCHASED(case_id) → accesso a quel caso • SUBSCRIPTION_ACTIVE → accesso ai casi mentre attiva 6.2 Regole consigliate • subscription attiva: accesso a tutti i casi pubblicati (incluso archivio) • singolo caso: accesso a quel caso permanente • se subscription termina: l’utente perde accesso “all inclusive” ma mantiene i casi acquistati singolarmente Se vuoi un comportamento diverso (es: subscription solo per casi rilasciati nel periodo), va deciso prima. 7) Gameplay: Caso strutturato su 7 Giorni (Start per utente) 7.1 “Start per utente” (regola fissata) Ogni utente ha un proprio calendario interno per ogni Caso. • Quando un utente apre un Caso per la prima volta, viene impostato started_at = now. • I Giorni vengono sbloccati con offset da started_at: o Giorno 1: 0h o Giorno 2: +24h o Giorno 3: +48h o … o Giorno 7: +144h Progress gate: per accedere al Giorno N, serve anche aver completato il Giorno N-1. Quindi: anche se sono passate 72h, se non hai completato G2, non vai a G4. 7.2 Stati Giorno Per ogni giorno e per ogni utente: • LOCKED (non disponibile: manca tempo e/o manca completamento giorno precedente) • AVAILABLE (disponibile ma non completato) • COMPLETED (completato) 8) Meccanismo Case ID (obbligatorio) 8.1 Definizione Per ogni coppia (utente, caso) il sistema genera un Case ID alfanumerico univoco: • esempio: EW-7K4P-19QX 8.2 Generazione • generato al primo accesso al Caso (quando si crea user_case_state) 8.3 Visualizzazione • sempre visibile nella pagina Caso (header/box) • visibile in Dashboard sul caso attivo • visibile nello storico del caso 8.4 Utilizzo finale Al Giorno 7 l’utente invia: • soluzione finale (testo) • Case ID (precompilato e non editabile lato UI) Backend valida: • Case ID appartiene a quell’utente e quel caso • soluzione corretta (normalizzata) Se ok → Caso completato + bonus sbloccato. 8.5 Anti-abuso minimo • rate limit invio codici (es. max 10 tentativi/ora per giorno; max 10/ora finale) • logging tentativi • blocco temporaneo se abuso (config admin) (Opzionale) watermark “Account/Nickname + Case ID” nelle pagine. 9) Pagine FRONT-END (User) 9.1 Pubbliche 1. Home 2. Come funziona 3. Catalogo casi (teaser) 4. Pricing 5. FAQ/Support 6. Legal (Privacy/Terms/Cookie) 9.2 Auth 7. Registrati (email + Google + Facebook) 8. Login 9. Verifica email 10. Reset password 9.3 Utente (loggato) 11. Dashboard • stato subscription (active / cancel_at_period_end / inactive) • caso attivo + progresso (X/7) • bottone “Continua” • lista casi accessibili • lista completati 12. Pagina Caso /cases/{slug} Contenuti obbligatori: • Titolo caso + status (In corso/Completato) • Box Case ID • Timeline G1..G7 con stati + countdown su LOCKED (basato su started_at + offset) • Selezione giorno (clic su card Giorno) • Area contenuto Giorno: o “Previously on…” (testo breve) o Story content (testo/media) o Missione web: link terzi (nuova tab) o Form “Codice del Giorno” o Esito + progress o Hint progressivi (se abilitati) 13. Pagina Bonus (solo se caso completato) • director’s cut, finale, invito live, extra 14. Profilo (nickname + preferenze Hall of Fame) 15. Storico completati 9.4 Tecniche 16. Paywall / Access denied 17. 404 10) BACK-END Admin (pannello) 10.1 Sezioni Admin 1. Admin Dashboard (stats) 2. Casi (lista) 3. Crea/Modifica Caso (metadata) 4. Editor 7 Giorni o tab Giorno 1..7 o per ogni giorno:  contenuto story (editor)  link esterni (lista)  codice corretto giorno (canonical)  hint 1/2/3 + regole hint  unlock offset hours (default 0/24/48/…/144) 5. Soluzione finale Caso (canonical) 6. Utenti (search, entitlements, progress) 7. Submissions (tentativi, filtri, ban/lock) 8. Pagamenti/Subscription (transazioni, stati, log webhook) 9. Hall of Fame (moderazione nickname) 11) Logica backend (regole principali) 11.1 Primo accesso caso Quando utente apre il caso per la prima volta: • crea user_case_state con: o started_at = now o genera case_id_code o status = active • crea 7 record user_case_day_state con unlocked_at = started_at + offset 11.2 Accesso giorno Un giorno è: • AVAILABLE se: o now >= unlocked_at del giorno o e (day_number == 1 oppure giorno precedente COMPLETED) • altrimenti LOCKED 11.3 Submit codice del giorno • verifica entitlement • verifica giorno AVAILABLE • normalizza input e confronta con canonical • se corretto: o marca COMPLETED o (opzionale) sblocca immediatamente visibilità “teaser” giorno successivo ma il contenuto resta time-gated 11.4 Submit finale • solo se giorno 7 AVAILABLE e giorni 1..6 COMPLETED • verifica Case ID • verifica soluzione • marca caso COMPLETED e sblocca bonus 12) Database (schema logico) • users • auth_identities • cases • case_days • entitlements • user_case_state • user_case_day_state • submissions • payments • subscriptions • webhook_events (Campi come da versione precedente; il dev può normalizzare.) 13) Criteri di accettazione (MVP) • Auth: email+password (verifica), Google, Facebook • Pagamento: PayPal + Carta, single €7,90 + subscription €14,90 auto-renew + disdetta • Caso: start per utente, 7 giorni con countdown e progress gate • Case ID generato e visibile • Codici giorno + soluzione finale + Case ID validano completamento • Admin: CRUD casi + editor 7 giorni + gestione utenti + log tentativi