Evenitto
Concerti, teatro e serate in un'unica pagina
Cosa fa
Un sito per trovare concerti, spettacoli teatrali e serate in un paese, raccolti in un solo posto.
Come guadagna
Startup appena presentata su BetaList, che non dichiara incassi. Idee nostre per guadagnare con un progetto simile: eventi in evidenza a pagamento per gli organizzatori, affiliazioni con la vendita dei biglietti.
Rendilo tuo
- Per una città italiana: cosa fare questo weekend a Bologna, Torino, Bari.
- Newsletter del giovedì con gli eventi del fine settimana.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Stasera in Città": un sito che raccoglie in un solo posto concerti, teatro, mostre, sagre e serate di una città o di una provincia, inseriti dagli organizzatori e dai calendari pubblici, con filtri per data e genere. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con "Stasera", "Questo weekend" e i generi
2. Elenco con filtri: data, genere, gratis/a pagamento, luogo, per bambini
3. Scheda dell'evento con mappa, orari, prezzo e link ai biglietti
4. Pubblica un evento (organizzatori)
5. Eventi salvati e avvisi per genere
Stile: vivace e notturno: sfondo blu notte #111827, magenta #EC4899, giallo #FACC15, carattere "Space Grotesk" per i titoli e "Inter" per il resto, locandine 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:
- "eventi": titolo, genere, luogo con coordinate, periodo (inizio e fine), prezzo, link, locandina, organizzatore, approvato, in evidenza fino a
- "luoghi": nome, indirizzo, coordinate
- "salvati": eventi salvati dall'utente
Regole di sicurezza obbligatorie:
- tutti vedono gli eventi approvati
- gli organizzatori gestiscono solo i loro eventi
- approvazione ed evidenza le cambiano solo la redazione e il pagamento
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. Eventi da fonti corrette
Gli eventi arrivano in tre modi: inseriti dagli organizzatori con il modulo (gratis, con approvazione), importati dai calendari pubblici che lo permettono (file iCal dei teatri, dati aperti del Comune), e inseriti dalla redazione. Non si copiano eventi da altri siti senza permesso.
Ogni evento ha un periodo (inizio e fine), così le mostre di più settimane compaiono ogni giorno in cui sono aperte. I filtri "Stasera" e "Questo weekend" si calcolano con gli intervalli di tempo nel database (codice nei Dettagli tecnici).
Ogni scheda ha mappa, orari, prezzo e link ai biglietti dell'organizzatore.
4. Evidenza e avvisi
Gli organizzatori possono mettere un evento "In evidenza" per 30 giorni pagando: compare in cima e nella newsletter del giovedì, sempre con l'etichetta "In evidenza".
Gli utenti salvano eventi e ricevono avvisi per genere ("nuovo concerto jazz"). Newsletter del giovedì con il weekend.
5. Pagamenti con Stripe
Aggiungi un pagamento singolo di 19 € per 30 giorni in evidenza. Il pagamento mette l'evento in evidenza per 30 giorni.
A pagamento riuscito il webhook imposta "in_evidenza_fino" a la data di oggi più 30 giorni nella tabella "eventi", sulla riga del evento 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. Date: inserisci una mostra dal 1 al 30 del mese: deve comparire in "Stasera" ogni giorno di apertura e sparire il 31.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Stasera e questo weekend
Ogni evento ha un periodo; la ricerca trova quelli che si sovrappongono alla sera di oggi o al weekend, con l'operatore && sugli intervalli.
create table eventi (
id uuid primary key default gen_random_uuid(),
utente_id uuid references auth.users(id) on delete set null, -- organizzatore
titolo text not null,
genere text not null,
luogo_id uuid not null,
periodo tstzrange not null,
gratis boolean not null default false,
link text,
approvato boolean not null default false,
in_evidenza_fino timestamptz
);
create index on eventi using gist (periodo);
alter table eventi enable row level security;
create policy "eventi approvati" on eventi for select using (approvato or auth.uid() = utente_id);
create policy "pubblico i miei" on eventi for insert
with check (auth.uid() = utente_id and not approvato and in_evidenza_fino is null);
-- Stasera (dalle 18 alle 3 di notte, ora italiana)
select id, titolo, genere, lower(periodo) as inizio
from eventi
where approvato
and periodo && tstzrange(
(current_date + time '18:00') at time zone 'Europe/Rome',
(current_date + 1 + time '03:00') at time zone 'Europe/Rome')
order by in_evidenza_fino > now() desc nulls last, lower(periodo);
-- Questo weekend (da venerdì alle 18 a lunedì alle 3)
select id, titolo, genere
from eventi
where approvato
and periodo && tstzrange(
(date_trunc('week', current_date)::date + 4 + time '18:00') at time zone 'Europe/Rome',
(date_trunc('week', current_date)::date + 7 + time '03:00') at time zone 'Europe/Rome');
Pezzi comuni a tutti i progetti
Glossario
- Intervallo di tempo (range)
- Un tipo di dato con un inizio e una fine: il database sa dire subito se due intervalli si sovrappongono.
- iCal
- Il formato standard dei calendari, che molti teatri e associazioni pubblicano.