Roadmap LDP
Última actualització: 2026-04-25 Documenta on som, on anem i en quin ordre. Per a tasques concretes, veure Backlog. Per a idees aparcades, veure Ideas.
Visió i nord
LDP és la plataforma de referència del món del ball: catàleg comú (balls, cançons, coreògrafs), esdeveniments (ballades, festivals, workshops, classes) i comunitat.
Regla de producte no negociable:
Mobile = consumir (l'app és el producte). Web = gestionar (admin, owners, professors, coreògrafs).
Estat global
| Fase | Descripció | Estat |
|---|---|---|
| 1 | API base i entitats principals | ✅ Complet |
| 2 | Frontend bàsic (UI admin) | ✅ Complet |
| 3 | Auth JWT + rols + legal compliance Fase 1 | ✅ Complet |
| 4A | CRUD manual ric (events, identity, governance) | 🟡 En curs (avançat) |
| 4B-4E | Import + enriquiment (CSV, staging, AI, scraping) | 🟡 Parcial |
| 5 | App mòbil (Android) | ⏳ Pendent |
| 6 | Multi-estil + Classes + Rankings | ⏳ Pendent |
Capes arquitectòniques i estat
LDP es construeix en 5 capes apilables. Cada capa està en un estat diferent:
Capa 1 — Identitat (qui és qui)
| Peça | Estat |
|---|---|
| User + auth JWT + verificació email | ✅ |
| Person + PersonRole (multi-rol) | ✅ |
| Choreographer + claim flow (existent) | ✅ |
| Email verification + password reset | ✅ |
| Organization (associació, club, escola, federació) | 📝 Disseny aprovat — implementació pendent |
Capa 2 — Governance (qui pot fer què)
| Peça | Estat |
|---|---|
Listing status INFORMATIVE → CLAIMED per Choreographer | ✅ |
OwnershipRequest claims de coreògraf | ✅ Backend, falta UI admin |
| Listing status unificat per Venue | ⏳ Pendent (Fase 1B) |
| Claims Module unificat (Choreographer + Venue + Org + Role) | ⏳ Pendent (Fase 1B) |
| Trust Levels d'event derivats | ⏳ Pendent (depèn Claims) |
| Carrils de creació d'events (4 carrils) | 2 implementats, 2 pendents |
| Content Report flow | 📝 Disseny obert |
Capa 3 — Contingut (catàleg + activitats)
| Peça | Estat |
|---|---|
| Catàleg Dance / Song / Choreographer / Link | ✅ |
| Music Providers (Spotify/iTunes/Deezer) + auto-link | ✅ |
| ACRCloud identification | ✅ Backend, falta validació real |
| YouTube import individual (Gemini AI) | ✅ |
| Event model atòmic + Festivals parent-child | ✅ |
| Event People multi-rol (V84/V85) | ✅ |
| Event organizer display + banner verificat | ✅ |
| Refactor EventType (9→5) + sistema de Tags | ⏳ Pla redactat, execució pendent |
| Courses (Classes regulars) | 📝 Disseny aprovat — implementació pendent |
| Setlist publicat + balls realment ballats | ⏳ Pendent |
Capa 4 — Moderació i propostes
| Peça | Estat |
|---|---|
| Admin Console centralitzat (Fases 1+3) | ✅ Implementat (commit 51661ff) |
| Dance Suggestions des de cerca de cançó | ✅ Implementat |
| AdminPendingSummary + badge numèric | ✅ Implementat |
| Song Suggestions (Cercle 4) | ⏳ Branca feature/song-suggestions |
| Content Report | 📝 Disseny obert |
Capa 5 — Import / ETL
| Peça | Estat |
|---|---|
| YouTube individual + Gemini AI | ✅ |
| YouTube bulk Streamlit (fases 1-3) | ✅ |
| YouTube bulk fases 4-6 (Master songs, dedup, export) | ⏳ Pendent |
| linedance.cat crawler POC | ✅, pipeline pendent |
| ACRCloud recovery (934 balls sense cançó) | ⏳ Pendent |
| Bulk enrichment 3000+ cançons | 🟡 Implementat però UNTESTED |
Sprint actual — Events
Pla detallat:
.claude/plans/cryptic-enchanting-dove.md(intern)
✅ Fet en aquest sprint
- Event People multi-rol (V84/V85)
- Event import millores + filtres locations
- Admin Console + Dance Suggestions (V86/V87)
📝 Disseny consolidat (no codi encara)
- Memo Organizations:
memory/project_organizations.md+ doc públic - Memo Courses:
memory/project_courses.md+ doc públic - Pla refactor types+tags:
.claude/plans/event-types-and-tags-refactor.md - Doc Events: reglament Events (post-refactor)
- Doc Venues & Locations: reglament
- Principi finançament transparent:
memory/project_roadmap_transparency.md
⏳ Pendent dins del sprint
- Fase B: execució del refactor types+tags (V88 + V89, backend + frontend)
- Fase C: gaps Events
- Overlap de persones (teacher/DJ a 2 events solapats)
- GDPR creator display al
DataErasureService - Lifecycle CANCELLED / POSTPONED / ARCHIVED
Properes 3 fites (per ordre)
Fita 1 — Tancar sprint Events ⭐ ACTUAL
- Executar Fase B (types+tags refactor)
- Executar Fase C (gaps Events)
- Documentar resultats als memos
Fita 2 — Sprint Governance
- Claims Module unificat (Choreographer + Venue + Organization + Role)
- Trust Levels derivats
- Activar carril 3 (events a Location standalone)
- Implementació Organizations (model base + CRUD)
Fita 3 — Sprint UX llançament
- Design System v2 (logo, paleta, tipografia, breakpoints definitius)
- Benchmarking referents (CopperKnob, Spotify, Eventbrite, Linear, Strava)
- Normalització mobile-first per rol
- Roadmap transparency a UI ("properament" consistent)
Què ve després (vista llarga)
Mig termini
- Espai personal de l'usuari (llistes balls, favorits, estadístiques) — Fase 4 valor diferencial
- Events avançats (mapa interactiu, calendari, setlist publicat, "Remember")
- Implementació Courses (Fase 4 — depèn de Capa 2 governance complet)
- Cercador global unificat (amb cerca per veu via ACRCloud)
- Dedup balls + cançons (qualitat de catàleg)
- YouTube bulk fases 4-6 (master songs, dedup global, export)
Llarg termini
- App Android (MVVM + Jetpack Compose) — el producte real
- Infraestructura producció (Hetzner / Azure / Vercel+Fly.io — decisió pendent)
- CI/CD pipelines
- Sistema d'avatars (S3 + CloudFront + Rekognition)
- Rankings i Analytics (depèn de setlists amb dades)
- Notícies, articles, marketplace
- Monetització MVP (Stripe, tiers, promoció)
- Social/comunitat (perfils públics, follow, comentaris)
- Notificacions (push + email + in-app)
- Internacionalització (CA → ES/EN/FR)
- Multi-estil (taxonomia Style/Substyle, més enllà del line dance)
Idees parking lot
- Mode "playlist" / social night planner
- Mode DJ/ballada (peticions/votacions de balls per assistents)
- IA creativa: generar cartells d'events per xarxes socials
- Onboarding mòbil (selecció estils, nivell, ubicació)
- Integració calendaris (iCal, Google Calendar)
- Jobs programats (health checks, enllaços trencats)
- Perfil públic verificat per coreògrafs (badge, links oficials)
Veure Ideas per al detall.
Què no és part del pla
Per evitar dispersió:
- No fem Tests pre-existents trencats abans del seu sprint dedicat (no bloqueja la branca actual, sí bloqueja el merge a
main) - No anticipem optimitzacions abans de tenir dades reals (perfils públics, índexs avançats)
- No anem cap a Mobile abans que l'API estigui estable amb endpoints agregats per pantalla
Sobre el finançament
LDP és un projecte personal mantingut per una sola persona, no un servei finançat. El roadmap es desplega segons disponibilitat de temps.
Eventualment necessitarà alguna forma de finançament (subscripcions professionals, donacions, sponsorship) per:
- Hosting i infraestructura escalable
- Pagaments integrats (Stripe per Courses)
- Notificacions push automatitzades
- Certificats de finalització
- Manteniment continuat
El missatge a l'usuari serà transparent i convidant, no de queixa. Veure el principi a memory/project_roadmap_transparency.md.
Documents relacionats
Domini funcional (què fa el producte)
- Events — el reglament d'esdeveniments
- Courses (Classes) — classes regulars
- Organizations — entitats acreditables
- Venues & Locations — llocs i sales
Operatiu
Tècnic
- Architecture overview
- ADRs — decisions tècniques
Vista de producte
- Vision — visió general del producte
- Tech Stack