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 creador
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).