Backend:
- Add routers/verticals.py with CRUD endpoints
- GET /verticals - list all bands
- POST /verticals/preferences/bulk - onboarding bulk set
- CRUD for individual preferences
Frontend:
- Add BandOnboarding component with checkbox grid
- Add /onboarding page route
- Calls bulk preferences API on submit
- Simplify Vertical model (remove color, emoji fields)
- Update vertical-context.tsx to just slug/name
- Update band-selector.tsx (no colors)
- Update all [vertical] page routes (no emojis in headings)
Themes will be added later as a separate feature.
Schema additions for fediversion multi-band architecture:
- SongCanon: Canonical master songs for cross-band linking
(e.g., 'Dark Star' links GD, D&C, Billy Strings versions)
- UserVerticalPreference: User band display preferences
- display_mode: primary/secondary/attribution_only/hidden
- priority: Sort order for UI
- notify_on_show: Per-band notification settings
- Vertical additions:
- primary_artist_id: Link to main Artist entity
- color: Hex branding color
- emoji: Display emoji
- Song additions:
- canon_id: Link to SongCanon for cross-band tracking
- Fork elmeg-demo codebase for multi-band support
- Add data importer infrastructure with base class
- Create band-specific importers:
- phish.py: Phish.net API v5
- grateful_dead.py: Grateful Stats API
- setlistfm.py: Dead & Company, Billy Strings (Setlist.fm)
- Add spec-kit configuration for Gemini
- Update README with supported bands and architecture