← Tutte le idee Attività locali e immobiliare

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.