Commit graph

66 commits

Author SHA1 Message Date
fullsizemalt
8718fc663a feat: Add relisten_link field to Show model
- Adds archive.org/Relisten deep link support
- Complements existing nugs_link, youtube_link, bandcamp_link
2025-12-28 16:40:54 -08:00
fullsizemalt
465017cda9 feat: Add On This Day endpoint (P2)
Some checks failed
Deploy Fediversion / deploy (push) Failing after 1s
- GET /on-this-day - shows matching today's month/day in history
- GET /on-this-day/highlights - top 5 for homepage widget
- Supports ?vertical= filter and ?month=&day= override
2025-12-28 16:39:52 -08:00
fullsizemalt
35ce12bc84 feat: Sprint 1 frontend polish
- Add landing page with hero, scenes, featured bands (FR-004)
- Add cross-band versions fetch to song page (FR-008)
- Create sprint plan artifact

Aligns with Specify spec fediversion-multi-band.md
2025-12-28 16:38:52 -08:00
fullsizemalt
159cbc853c feat: Enhance musician API with cross-band sit-in tracking
Some checks failed
Deploy Fediversion / deploy (push) Failing after 1s
- Add sit_in_summary to GET /musicians/{slug}
- Add stats: total_bands, current_bands, total_sit_ins
- Include song_title, show_date, vertical in guest appearances
- Add seed_musicians.py for initial musician data
2025-12-28 16:30:38 -08:00
fullsizemalt
5b236608f8 feat: Add SongCanon API for cross-band song linking
- Add routers/canon.py with endpoints:
  - GET /canon - list all canonical songs with versions
  - GET /canon/{slug} - get canon with all band versions
  - GET /canon/song/{id}/related - get related versions
- Add link_canon_songs.py auto-linker script
  - Finds songs with same title across bands
  - Creates SongCanon entries automatically
  - Run with --apply to execute
2025-12-28 16:28:58 -08:00
fullsizemalt
19c5e97e7f feat: Add scene filtering to verticals API
Some checks failed
Deploy Fediversion / deploy (push) Failing after 1s
- GET /verticals now supports ?scene= parameter
- Add GET /verticals/scenes endpoint
- Filter verticals by is_active=true
2025-12-28 16:07:46 -08:00
fullsizemalt
704a8d9a0b feat: Add Scene model for band genre categorization
- Add Scene model (Jam, Bluegrass, Dead Family, Funk)
- Add VerticalScene join table (many-to-many)
- Update Vertical with setlistfm_mbid, is_active, is_featured
- Add scenes relationship to Vertical
- Add seed_scenes.py script to populate initial data
2025-12-28 16:07:20 -08:00
fullsizemalt
5ced96f4e6 feat: Add personalized feed endpoint with vertical filtering
Some checks failed
Deploy Fediversion / deploy (push) Failing after 1s
- Add GET /feed/me endpoint
- Filters reviews and attendance by user's band preferences
- Excludes 'hidden' display_mode bands
- Falls back to all bands if no preferences set
2025-12-28 16:05:43 -08:00
fullsizemalt
c1c041bbe9 feat: Add user vertical preferences API and onboarding UI
Some checks failed
Deploy Fediversion / deploy (push) Failing after 1s
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
2025-12-28 16:04:18 -08:00
fullsizemalt
d8b949a965 refactor: Remove emojis and band colors from codebase
Some checks failed
Deploy Fediversion / deploy (push) Failing after 1s
- 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.
2025-12-28 15:07:42 -08:00
fullsizemalt
5c1b05a169 docs: Add Tailscale SSH push instructions to README
Some checks failed
Deploy Fediversion / deploy (push) Failing after 1s
2025-12-28 14:56:06 -08:00
fullsizemalt
56f52de7fc feat: Add cross-band entity relationship models
Some checks failed
Deploy Fediversion / deploy (push) Failing after 1s
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
2025-12-28 14:51:22 -08:00
fullsizemalt
42ede48a70 fix: Use fediversion.runfoo.run only (no .xyz domain yet) 2025-12-28 14:46:41 -08:00
fullsizemalt
4782b50f78 feat: Configure CI/CD for VPS deployment
- Update .forgejo/workflows/deploy.yml for fediversion
  - testing branch -> nexus-vector (fediversion.runfoo.run)
  - production branch -> tangible-aacorn (fediversion.xyz)
- Update docker-compose.yml:
  - Ports: backend 8030, frontend 3030
  - Network: fediversion
  - Add PHISHNET/SETLISTFM/GRATEFULSTATS API key env vars
  - Traefik labels for fediversion domains
  - Umami analytics at stats.fediversion.xyz
2025-12-28 14:36:17 -08:00
fullsizemalt
29c5d30ebb feat: Add multi-vertical frontend infrastructure
Phase 3 - Frontend Multi-Vertical Support:
- Add VerticalContext for band state management
- Add BandSelector dropdown component
- Create dynamic [vertical] routes for shows, songs, venues
- Update navbar to use band selector and vertical-aware links
- Update api-config.ts for Fediversion domain
- Rebrand from Elmeg to Fediversion
2025-12-28 13:56:22 -08:00
fullsizemalt
b4cddf41ea feat: Initialize Fediversion multi-band platform
- 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
2025-12-28 12:39:28 -08:00