Events Wizard – Disseny funcional
Aquest document descriu la idea de l’assistent d’alta/edició d’esdeveniments (“Events Wizard”) per a la Line Dance Platform (LDP).
Objectiu: oferir un flux clar i guiats per crear o editar events (socials, festivals, workshops…) sense perdre’s en formularis llargs.
1. Objectius del wizard
- Simplificar l’alta d’un event complet:
- metadades bàsiques (nom, dates, tipus),
- venue i location,
- programa (sessions / classes / socials),
- enllaços (web, xarxes, entrades),
- opcionalment, balls destacats.
- Reduir errors de dades:
- dates incoherents,
- venues duplicats,
- ubicacions incompletes.
- Preparar el model per a:
- futurs events recurrents,
- integració amb calendaris externs.
2. Rols i punts d’entrada
2.1. Rols que poden crear/editar events
- ADMIN
- pot crear/editar qualsevol event.
- TEACHER / ORGANIZER (segons model de rols definit)
- pot crear/editar només events dels quals és responsable (regla a definir).
2.2. Punts d’entrada
- Botó “Nou event” a la llista d’events (
/events). - Acció “Editar” a la fitxa d’un event existent.
Tots dos obren el mateix wizard, amb dades buides o preomplertes.
3. Estructura de passos
Proposta inicial de passos (pot ajustar-se en funció de l’UX):
- Metadades bàsiques
- Venue i ubicació
- Dates i horaris / sessions
- Programa i balls destacats (opcional)
- Enllaços i informació pública
- Revisió i confirmació
Pas 1 – Metadades bàsiques
Camps:
name(obligatori)event_type(social, festival, workshop, class night…)description(rich text simple)organizer_name(text lliure o referència futura a una entitat)- Idioma principal (opcional)
Validacions:
nameno buit.event_typerequerit.
Pas 2 – Venue i ubicació
Opcions:
- Seleccionar venue existent (selector amb cerca per nom, ciutat, país).
- Crear nou venue des d’aquest mateix pas (dialeg o subformulari embegut).
Camps clau:
location(country, city, state/region),venue(name, address, notes),- opcionalment coordenades (
lat,lng).
Validacions:
- No permetre guardar l’event sense tenir com a mínim
locationbàsica i unvenueassociat. - Evitar duplicats:
- suggerir venues existents quan es detecta un nom semblant a la ciutat indicada.
Pas 3 – Dates i horaris / sessions
L’event pot tenir:
- dates d’inici i fi generals (
start_at,end_at), - o bé una llista de sessions (per socials, workshops, etc.).
Model proposat:
event.start_at,event.end_at(franja global).- Taula
event_sessions(o equivalent) a futur:event_id,name(p. ex. “Friday Social”, “Workshop A”),start_at,end_at,room(si el venue te múltiples sales).
En el wizard:
- Si només hi ha una franja simple:
- formulari senzill d’inici/fi.
- Si hi ha múltiples sessions:
- UI tipus taula amb “Afegir sessió”.
Validacions bàsiques:
start_at<end_at.- Cap sessió amb dates fora del rang global de l’event (si es defineix).
Pas 4 – Programa i balls destacats (opcional)
En aquesta fase es poden associar:
dancesdestacats que se sap que es ballaran,- line-up de coreògrafs, DJs, instructors (segons model d’identitat).
A nivell MVP:
- Pot ser només un camp de text lliure (“notes del programa”).
- A futur:
- llistes estructurades de
dances, - enllaç amb sessions concretes.
- llistes estructurades de
Pas 5 – Enllaços i informació pública
Camps:
website_urltickets_urlfacebook_event_urlinstagram, etc.- Política bàsica de fotos/vídeo (text opcional).
Validacions:
- Formats bàsics d’URL.
- Possibilitat de marcar un enllaç com “oficial”.
Pas 6 – Revisió i confirmació
Resum en mode “read-only” de tots els passos previs:
- Metadades,
- Venue + location,
- Dates / sessions,
- Programa (si n’hi ha),
- Enllaços.
Accions:
- Guardar borrador (
status = DRAFT). - Publicar (
status = PUBLISHED). - Tornar a passos anteriors per corregir.
4. Integració amb el backend
4.1. DTO de treball
Es pot utilitzar un únic DTO CreateOrUpdateEventRequest que contingui:
- camps d’
event(bàsics), - bloc
venue(existent o nou), - bloc
sessions(llista), - blocs d’enllaços.
El frontend envia aquest DTO a:
POST /api/eventsper crear,PUT /api/events/{id}per actualitzar.
4.2. Persistència
El servei de backend ha de:
- Crear o reutilitzar
locationivenue. - Crear/actualitzar l’
event. - Crear/actualitzar les
sessions(si n’hi ha). - Gestionar les relacions amb balls/coreògrafs quan estiguin definides.
Els detalls de model de dades es documenten a architecture/db-redesign-plan.md.
5. Validació i UX
- Mostrar errors per pas (no globals) per no saturar l’usuari.
- Permetre guardar com a borrador en qualsevol moment.
- En cas d’error al backend:
- mostrar missatge clar amb camp afectat (si es pot),
- no perdre el que l’usuari ja ha omplert.
6. Properes decisions
- Definir exactament el model
event_sessions. - Decidir política per events recurrents (setmanals/mensuals).
- Decidir nivell de detall del programa (balls per sessió vs notes generals).
- Dissenyar diagrama de flux específic a
architecture/diagrams.md(Mermaid/Draw.io).
Aquest document és una guia de disseny; la implementació concreta pot anar-se afinant a mesura que es protegeixi amb el model de dades i l’UX real.