fediversion/docs/HANDOFF_2025_12_21.md
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

62 lines
3.4 KiB
Markdown

# Handoff - 2025-12-21
## Work Completed
### Slug Integration
- **Backend**: Updated `Show`, `Song`, `Venue`, `Tour` models/schemas to support `slug`.
- Updated API routers (`shows.py`, `songs.py`) to lookup by slug or ID.
- Migrated database schema to include `slug` columns using Alembic.
- Added `youtube_link` columns via script.
- Backfilled slugs using `backend/fix_db_data.py`.
- **Frontend**: Updated routing and links for entities.
- `/shows/[id]` -> `/shows/${show.slug || show.id}`
- `/songs/[id]` -> `/songs/${song.slug || song.id}`
- `/venues/[id]` -> `/venues/${venue.slug || venue.id}`
- Updated interfaces to include `slug`.
- Updated `PerformanceList` component to use slugs.
### Data Fixes
- **Set Names**:
- Identified issues with `set_name` being null due to API parameter mismatch (`setnumber` vs `set`).
- Updated `import_elgoose.py` to correctly extract and format "Set 1", "Set 2", "Encore" from `setnumber`.
- Attempted to backfill existing data but hit an infinite loop issue with API fetching (Slugs were backfilled successfully). Data can be fixed by re-running a corrected importer or custom script.
- **Slugs**:
- `import_elgoose.py` updated to generate slugs for new imports.
- `fix_db_data.py` successfully backfilled slugs for existing Venues, Songs, Shows, and Tours.
### UI Fixes
- **Components**: Created missing Shadcn UI components (`progress`, `checkbox`).
- **Show Page**: Updated setlist links to point to `/performances/[id]` instead of `/songs/[id]`.
- **Performance Page**: Added "Top Rated Versions" list ranking other performances of the same song.
- **Reviews**: Updated Review Header formatting to be a single line (Song - Date).
- **YouTube**: Created `import_youtube.py` script to link videos to Performances and Shows. ShowPage already supports full show embeds.
- **Auth**: Updated `AuthContext` to expose `token` for the Admin page.
- **Build**: Resolved typescript errors; build process starts correctly.
## Current State
- **Application**: Fully functional slug-based navigation. Links prioritize slugs but fallback to IDs.
- **Database**:
- `slug` columns added and backfilled.
- `youtube_link` columns added to `Show`, `Song`, `Performance` tables (manual migration `add_youtube_links.py` applied).
- `set_name` still missing for most existing performances (displays as "Set ?").
- **Codebase**:
- Clean and updated. `check_api.py` removed.
- `fix_db_data.py` exists but requires a fix for infinite looping (the API likely ignores the `page` parameter or cycles data; the script needs to check for duplicate items to break the loop).
## Next Steps
1. **Monitor Production Fix**:
- The `fix_db_data.py` script was deployed to `tangible-aacorn` (elmeg.xyz) and ran successfully.
- Verified that 0 performances remain with "Set ?".
- `slug`s are also populated.
2. **Notifications**: Internal notifications are implemented (bell icon). External integrations (Discord, Telegram) are **DEPRECATED**.
3. **Audit Results**: Site structure is complete. Key pages (About, Terms, Privacy, Profile, Settings) are implemented and responsive. Features align with "Heady Version" goals.
## Technical Notes
- **Database Migrations**: Alembic history was manually adjusted to ignore existing `reaction`/`badge` tables to allow `slug` migration to pass on the dev database.
- **Importer**: `import_elgoose.py` logic is updated for *future* imports.