Skip to content

Deprecate release-backed labels in favor of music entities #109

@guidefari

Description

@guidefari

Summary

The record labels feature is still modeled as label content plus a dependent release list. That release dependency should be deprecated, and labels should be represented through the music entity system instead.

Current coupling

  • apps/vps/src/db/label.schema.ts defines labelsRelations.releases, so labels are directly tied to releases.
  • apps/vps/src/db/release.schema.ts requires labelId on every release.
  • apps/vps/src/services/release.service.ts resolves releases by label slug, validates label existence on create, and powers the label release listing API.
  • apps/vps/src/routes/content/release.routes.ts and release.handlers.ts expose /content/labels/:labelSlug/releases.
  • apps/www/src/routes/labels/$labelSlug.tsx renders a label page with a releases table and load-more flow.
  • apps/www/src/lib/http.ts has useReleasesByLabel, which hardcodes that page shape.
  • apps/www/src/routes/label-upload.lazy.tsx is a standalone label editor, separate from the music catalog.
  • apps/vps/src/routes/redirect/handlers/release.ts uses the label title as creator context for release OG/share pages.
  • apps/vps/src/routes/redirect/seo/sitemap.utils.ts, apps/vps/src/routes/admin/admin.handlers.ts, and apps/www/src/routes/admin/_components/-ContentTab.tsx all treat labels and releases as separate content types.
  • apps/vps/src/db/music-entity.schema.ts, apps/vps/src/routes/music/*, apps/www/src/routes/admin/music.tsx, and packages/ui/src/components/music-entity-*.tsx only support artist, album, track, and playlist today. There is no label music entity type yet.

Impact

This is wider than a single page swap. It affects:

  • DB schema and relations
  • content API contracts
  • public label pages
  • admin label/content surfaces
  • SEO/sitemap/share metadata
  • music entity type unions, seed data, and UI
  • tests and any migration/backfill path

Desired direction

  • Model record labels through the music entity system instead of release-backed label pages.
  • Remove the label-to-release dependency from the feature surface.
  • Add whatever music entity support is needed for labels end-to-end before deleting the old path.

Acceptance criteria

  • Record labels no longer depend on releases for their core feature behavior.
  • Label pages are powered by music entities, not a release list.
  • Music entity type support includes labels where needed across DB, API, admin UI, and shared UI.
  • Old release-backed label code paths are removed or clearly deprecated after migration.
  • Existing label data remains accessible during/after migration.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions