Skip to main content

Events — el reglament d'esdeveniments

Estat (2026-04-28): model atòmic + festivals + refactor de tipus (9→5 valors) + sistema de tags + lloc polimòrfic (Venue o Location amb kind) tot implementat. Vegeu memòria del sprint a project_dev_state.md i el reglament del lloc a Venues & Locations.

Què és un Event a LDP​

Una activitat puntual amb data, hora i lloc. Si és recurrent (cada dimarts a la mateixa hora), no és un Event — és una classe.

Els 5 tipus​

Pregunta't: a què va la gent principalment?

TipusLa gent va a...Exemples
🎉 FESTIVALMúltiples activitats sota un paraigua"Festival Country Terrassa" (3 dies amb workshops + ballades + concerts)
💃 SESSIONBallarBallada setmanal, social, marató, party temàtica
🎓 WORKSHOPAprendre (puntualment)Taller iniciació, stage cap de setmana, conferència
🎤 SHOWVeure o escoltarConcert, exhibició, competició, jam session
🔧 OTHERCap de les anteriorsReunió associació, casting, cas atípic

La regla del polze quan dubtes​

Entre SESSION i SHOW:

  • Si la pista de ball és l'atracció principal → SESSION
  • Si l'escenari és l'atracció principal → SHOW

Exemples per il·luminar la regla:

SituacióTipusPer què
"Tribute Night ABBA, banda en directe + ball després"SESSIONLa gent ve a ballar, la banda ambienta
"Concert Lone Star Band, sense pista oficial"SHOWLa gent ve a escoltar
"Marató 8h amb 3 DJs"SESSIONÉs una ballada llarga
"Exhibició competitiva del club"SHOWLa gent mira

Tags — la classificació descriptiva​

Després de triar el tipus, afegeixes tags per descriure l'event sense afectar el seu funcionament. Fins a 8 per event.

Categories de tags suggerits:

CategoriaExemples
Estil de ballline-dance, country, two-step, west-coast-swing, bachata, salsa, swing
Nivellbeginner, intermediate, advanced
Preufree, paid
Temàticachristmas, halloween, tribute, charity
Públicchildren, seniors, members-only
Formatmarathon, practice, live-music, concert, competition, jam, open-mic, exhibition
Serveidinner-included, costume-required, outdoor, online
LliureEl que tu vulguis (text curt, normalitzat a kebab-case, fins a 40 caràcters)

Tags oficials (els suggerits per la plataforma) tenen traducció. Tags lliures són text pur. Visualment es diferencien per color del chip.

Camps que demana el sistema segons el tipus​

TipusSetlistTeacherDJNotes
FESTIVALProhibitProhibitProhibitLes activitats filles tenen el seu
SESSIONOpcionalOpcionalOpcionalCas majoritari, màxima flexibilitat
WORKSHOPProhibitObligatProhibitEl teacher és el cor
SHOWProhibitOpcionalOpcionalEl "teacher" pot ser un coreògraf que dirigeix l'exhibició
OTHEROpcionalOpcionalOpcionalEscape hatch

A més, tots demanen: nom, data/hora, venue (o location standalone, futur), descripció, imatge opcional.

Festivals — model parent-child​

Un FESTIVAL és un contenidor: té rang de dates, descripció, venue principal opcional, però no té setlist propi. El que fa són activitats filles (events vinculats al festival via parent_event_id).

Cada activitat filla és un Event normal (qualsevol dels 5 tipus excepte FESTIVAL). Té venue propi, horari propi, teacher/DJ propis, setlist propi.

Regles:

  • Un FESTIVAL no pot ser fill d'un altre (sense nesting)
  • Una activitat filla NO pot ser de tipus FESTIVAL
  • Les dates de les activitats han d'estar dins del rang del FESTIVAL pare
  • Un FESTIVAL sense activitats és vàlid (es publica primer, s'omple després)

Persones a un Event (multi-rol)​

Un Event pot tenir N persones amb diferents rols:

RolQuan s'usa
TEACHERImparteix workshop o classe oberta
DJPosa la música de la sessió
CHOREOGRAPHEREl coreògraf dels balls programats (per visibilitat)
STAFFEquip d'organització
ARTISTArtista/banda d'un show
ORGANIZEROrganitzador delegat
GUESTConvidat especial

Una mateixa persona només pot aparèixer un cop per event (amb el rol que fa al cap d'aquell event).

Atribució pública — qui consta com a organitzador​

Cal distingir tres papers (refinat 2026-06-10): organitzador (qui fa l'event), registrant (qui l'introdueix a la plataforma) i font (d'on surt la informació). Sovint coincideixen — un promotor publica el seu propi event —, però NO als events importats, on l'admin és un steward de dades, no l'organitzador.

Cada event mostra "Organitzat per: [...]" amb prioritat:

  1. Si està vinculat a una Organització acreditada → "Organitzat per: [Nom Org]" (link a fitxa) — etiqueta Verificat
  2. Si té organizerDisplayName (l'organitzador REAL: grup/persona) → "Organitzat per: [DisplayName]", i a sota, discret, "Registrat per [Nom user]" (+ "· via import" si source = IMPORT) — etiqueta Informació no verificada
  3. Si no → "Organitzat per: [Nom user creador]" (el creador és l'organitzador) — etiqueta Informació no verificada

El registrant sempre és visible com a responsable de la publicació (responsabilitat inalienable), però no com a organitzador: l'organitzador és qui realment fa l'event. L'única manera d'amagar el nom personal del registrant és vincular l'event a una organització acreditada (futur), o atribuir-lo a una font col·laboradora (programa de col·laboradors, T-230).

Estats de publicació​

EstatVisibilitatEditable
DRAFTNomés admins i el creadorSí
PUBLISHEDTothomSí (camps no estructurals)

Pendent (futur): CANCELLED, POSTPONED, ARCHIVED amb sistema de notificacions associat.

Confiança (Trust Levels)​

Cada event té un trust level derivat que determina quina etiqueta li posem públicament:

NivellSignificatBanner
VERIFIED_OWNERCreat per propietari acreditat del venueCap banner
VERIFIED_ENTITYVinculat a organització acreditada"Verificat"
INFORMATIVE_ADMINCreat per admin sense propietari acreditat"Informació no verificada"
INFORMATIVE_USERCreat per usuari sense entitat acreditada"Informació no verificada per l'organitzador ni pel propietari del lloc"

Què passa si tries malament​

No passa res greu: pots editar el tipus en qualsevol moment, els tags, l'horari, etc. Cap dada es perd. Les úniques limitacions són:

  • Un event passat no es pot reeditar (només canviar l'estat de publicació)
  • Un FESTIVAL no es pot escurçar de dates si té activitats que quedarien fora

Què NO és un Event​

  • Una classe regular (cada dimarts a les 19h durant 6 mesos) → és un Course
  • Un local físic → és un Venue
  • Una cançó o un ball → és catàleg

Per què aquesta estructura​

Cada nou cas d'ús (events benèfics, fires, temàtiques de Nadal…) pressiona per afegir un valor nou a un enum tradicional de tipus d'event. La llista creix linealment, el wizard es complica, els filtres es multipliquen.

La separació Type (5 valors estables) + Tags (lliures) evita aquesta inflació:

  • El Type drives el flow del wizard, validacions, camps obligatoris
  • Els Tags descriuen sense afectar el sistema

Quan apareix un cas nou (ex: "ballada zen al jardí"), no cal afegir un tipus — només els tags adequats (outdoor, meditation, experimental).