add tagging system for media items

Introduces user-defined tag categories and tags with a many-to-many
relationship to media items. Tags are stored in a SQLite database
(medialore.db via better-sqlite3) with ON DELETE CASCADE for automatic
cleanup. Users can manage categories and tags at /manage/tags, assign
tags to games in the detail modal, and tag mixed media files via a
hover button on each tile.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-25 17:29:24 -04:00
parent bf54b45fa1
commit f788b1a441
17 changed files with 1680 additions and 5 deletions

View File

@@ -1,5 +1,6 @@
import { NextRequest, NextResponse } from 'next/server'
import { getLibrary, removeLibrary } from '@/lib/libraries'
import { removeAllAssignmentsForLibrary } from '@/lib/tags'
export async function DELETE(
_request: NextRequest,
@@ -13,5 +14,6 @@ export async function DELETE(
}
removeLibrary(id)
removeAllAssignmentsForLibrary(id)
return new NextResponse(null, { status: 204 })
}