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

3.4 KiB

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 ?".
    • slugs 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.