docs: update implementation checklist status

This commit is contained in:
2026-04-02 23:05:49 +03:00
parent 54f6bfa676
commit a640251e7d

View File

@@ -477,98 +477,98 @@ Responsibilities:
## Project Setup ## Project Setup
- [ ] Choose repository structure and naming - [x] Choose repository structure and naming
- [ ] Initialize Go module - [x] Initialize Go module
- [ ] Initialize frontend app in `apps/web` - [x] Initialize frontend app in `apps/web`
- [ ] Add root `.editorconfig` - [x] Add root `.editorconfig`
- [ ] Add root `.gitignore` - [x] Add root `.gitignore`
- [ ] Add backend formatter/linter commands - [ ] Add backend formatter/linter commands
- [ ] Add frontend formatter/linter commands - [ ] Add frontend formatter/linter commands
- [ ] Add shared `Makefile` or task runner - [x] Add shared `Makefile` or task runner
- [ ] Add `.env.example` - [x] Add `.env.example`
- [ ] Add `docker-compose.yml` - [x] Add `docker-compose.yml`
- [ ] Add backend `Dockerfile` - [x] Add backend `Dockerfile`
- [ ] Add frontend `Dockerfile` if needed - [ ] Add frontend `Dockerfile` if needed
- [ ] Add CI workflow for lint/build/test - [ ] Add CI workflow for lint/build/test
## Backend Bootstrap ## Backend Bootstrap
- [ ] Create `cmd/server/main.go` - [x] Create `cmd/server/main.go`
- [ ] Add config loading - [x] Add config loading
- [ ] Add HTTP server bootstrap - [x] Add HTTP server bootstrap
- [ ] Add graceful shutdown - [x] Add graceful shutdown
- [ ] Add structured logging - [ ] Add structured logging
- [ ] Add health endpoint - [x] Add health endpoint
- [ ] Add request logging middleware - [x] Add request logging middleware
- [ ] Add panic recovery middleware - [x] Add panic recovery middleware
- [ ] Add CORS strategy for local dev - [x] Add CORS strategy for local dev
## Database ## Database
- [ ] Choose migration tool - [x] Choose migration tool
- [ ] Create initial schema migration - [x] Create initial schema migration
- [ ] Add DB connection setup - [x] Add DB connection setup
- [ ] Add migration runner at startup - [x] Add migration runner at startup
- [ ] Add indexes for artist/album/track lookup - [x] Add indexes for artist/album/track lookup
- [ ] Add indexes for search - [ ] Add indexes for search
- [ ] Add repository helpers or query layer - [x] Add repository helpers or query layer
## Auth and Users ## Auth and Users
- [ ] Create users table - [x] Create users table
- [ ] Implement password hashing - [x] Implement password hashing
- [ ] Implement login endpoint - [x] Implement login endpoint
- [ ] Implement session or bearer token issuance - [x] Implement session or bearer token issuance
- [ ] Implement auth middleware - [x] Implement auth middleware
- [ ] Implement current user endpoint - [x] Implement current user endpoint
- [ ] Implement admin bootstrap user creation - [x] Implement admin bootstrap user creation
- [ ] Add logout endpoint - [ ] Add logout endpoint
## Library Scanning ## Library Scanning
- [ ] Add library roots table - [x] Add library roots table
- [ ] Add config for one or more music paths - [ ] Add config for one or more music paths
- [ ] Recursively discover supported audio files - [x] Recursively discover supported audio files
- [ ] Ignore unsupported file types - [x] Ignore unsupported file types
- [ ] Read tags from files - [x] Read tags from files
- [ ] Map tags into normalized artist/album/track model - [x] Map tags into normalized artist/album/track model
- [ ] Extract embedded artwork when present - [x] Extract embedded artwork when present
- [ ] Load folder sidecar artwork when present - [x] Load folder sidecar artwork when present
- [ ] Persist scan results transactionally - [x] Persist scan results transactionally
- [ ] Track deleted files and remove stale DB rows - [x] Track deleted files and remove stale DB rows
- [ ] Add initial full scan command - [x] Add initial full scan command
- [ ] Add rescan endpoint or admin action - [x] Add rescan endpoint or admin action
- [ ] Add filesystem watch or scheduled scan - [ ] Add filesystem watch or scheduled scan
- [ ] Record scan job progress - [ ] Record scan job progress
- [ ] Expose scan status endpoint - [x] Expose scan status endpoint
## Browse API ## Browse API
- [ ] List artists - [x] List artists
- [ ] Artist detail with albums - [x] Artist detail with albums
- [ ] Album detail with tracks - [x] Album detail with tracks
- [ ] Track detail - [x] Track detail
- [ ] Recent albums - [x] Recent albums
- [ ] Random albums or songs - [x] Random albums or songs
- [ ] Favorites listing - [ ] Favorites listing
- [ ] Search endpoint - [x] Search endpoint
- [ ] Pagination support - [ ] Pagination support
- [ ] Sorting support - [ ] Sorting support
## Streaming ## Streaming
- [ ] Implement authenticated stream endpoint - [x] Implement authenticated stream endpoint
- [ ] Support range requests - [x] Support range requests
- [ ] Support HEAD where appropriate - [x] Support HEAD where appropriate
- [ ] Return correct content type - [x] Return correct content type
- [ ] Handle missing files gracefully - [x] Handle missing files gracefully
- [ ] Add cover art endpoint - [x] Add cover art endpoint
- [ ] Add basic download endpoint - [ ] Add basic download endpoint
## Playlists and History ## Playlists and History
- [ ] Create playlists table - [x] Create playlists table
- [ ] Create playlist tracks table - [x] Create playlist tracks table
- [ ] Add create playlist endpoint - [ ] Add create playlist endpoint
- [ ] Add rename playlist endpoint - [ ] Add rename playlist endpoint
- [ ] Add delete playlist endpoint - [ ] Add delete playlist endpoint
@@ -580,7 +580,7 @@ Responsibilities:
## Favorites ## Favorites
- [ ] Add favorites table - [x] Add favorites table
- [ ] Star track - [ ] Star track
- [ ] Unstar track - [ ] Unstar track
- [ ] Star album if desired - [ ] Star album if desired
@@ -590,20 +590,20 @@ Responsibilities:
## Subsonic Compatibility ## Subsonic Compatibility
- [ ] Implement request auth parsing - [x] Implement request auth parsing
- [ ] Support username/password auth where needed - [x] Support username/password auth where needed
- [ ] Support token/salt auth - [ ] Support token/salt auth
- [ ] Add common Subsonic response builder - [x] Add common Subsonic response builder
- [ ] Implement `ping` - [x] Implement `ping`
- [ ] Implement `getLicense` - [x] Implement `getLicense`
- [ ] Implement `getArtists` - [x] Implement `getArtists`
- [ ] Implement `getArtist` - [x] Implement `getArtist`
- [ ] Implement `getAlbum` - [x] Implement `getAlbum`
- [ ] Implement `getSong` - [x] Implement `getSong`
- [ ] Implement `stream` - [x] Implement `stream`
- [ ] Implement `getCoverArt` - [x] Implement `getCoverArt`
- [ ] Implement `search3` - [ ] Implement `search3`
- [ ] Implement `getRandomSongs` - [x] Implement `getRandomSongs`
- [ ] Implement `getStarred2` - [ ] Implement `getStarred2`
- [ ] Implement `star` - [ ] Implement `star`
- [ ] Implement `unstar` - [ ] Implement `unstar`
@@ -613,20 +613,20 @@ Responsibilities:
## Frontend Bootstrap ## Frontend Bootstrap
- [ ] Create Vite React TypeScript app - [x] Create Vite React TypeScript app
- [ ] Configure routing - [x] Configure routing
- [ ] Configure Tailwind - [x] Configure Tailwind
- [ ] Add Radix UI primitives - [ ] Add Radix UI primitives
- [ ] Add TanStack Query client - [x] Add TanStack Query client
- [ ] Add Zustand stores - [x] Add Zustand stores
- [ ] Add API client layer - [x] Add API client layer
- [ ] Add auth persistence strategy - [x] Add auth persistence strategy
- [ ] Add theme tokens and CSS variables - [ ] Add theme tokens and CSS variables
## Frontend App Shell ## Frontend App Shell
- [ ] Login page - [x] Login page
- [ ] App layout with sidebar/topbar/player area - [x] App layout with sidebar/topbar/player area
- [ ] Responsive navigation - [ ] Responsive navigation
- [ ] Toast/notification system - [ ] Toast/notification system
- [ ] Error boundary - [ ] Error boundary
@@ -634,10 +634,10 @@ Responsibilities:
## Frontend Music Views ## Frontend Music Views
- [ ] Home page - [x] Home page
- [ ] Artists grid/list page - [x] Artists grid/list page
- [ ] Artist detail page - [x] Artist detail page
- [ ] Album detail page - [x] Album detail page
- [ ] Playlist page - [ ] Playlist page
- [ ] Search results page - [ ] Search results page
- [ ] Favorites page - [ ] Favorites page
@@ -645,18 +645,18 @@ Responsibilities:
## Frontend Player ## Frontend Player
- [ ] Global player store - [x] Global player store
- [ ] Queue model - [x] Queue model
- [ ] Play/pause - [x] Play/pause
- [ ] Next/previous - [x] Next/previous
- [ ] Seek bar - [ ] Seek bar
- [ ] Volume control - [x] Volume control
- [ ] Repeat modes - [ ] Repeat modes
- [ ] Shuffle - [ ] Shuffle
- [ ] Track switching - [x] Track switching
- [ ] Keyboard shortcuts - [x] Keyboard shortcuts
- [ ] Mini player - [x] Mini player
- [ ] Expanded player - [x] Expanded player
## Quality and Testing ## Quality and Testing
@@ -668,18 +668,18 @@ Responsibilities:
- [ ] Frontend component tests for player and key pages - [ ] Frontend component tests for player and key pages
- [ ] Frontend E2E smoke tests - [ ] Frontend E2E smoke tests
- [ ] Test with a realistic sample library - [ ] Test with a realistic sample library
- [ ] Test on Windows paths - [x] Test on Windows paths
- [ ] Test on Linux paths - [ ] Test on Linux paths
- [ ] Test large album art and missing metadata edge cases - [ ] Test large album art and missing metadata edge cases
## Deployment ## Deployment
- [ ] Build production frontend assets - [x] Build production frontend assets
- [ ] Serve frontend assets from backend or reverse proxy - [x] Serve frontend assets from backend or reverse proxy
- [ ] Docker image for all-in-one deployment - [x] Docker image for all-in-one deployment
- [ ] Persistent DB volume - [x] Persistent DB volume
- [ ] Persistent cache volume - [x] Persistent cache volume
- [ ] Music folder mount strategy - [x] Music folder mount strategy
- [ ] Reverse proxy example - [ ] Reverse proxy example
- [ ] HTTPS deployment notes - [ ] HTTPS deployment notes
- [ ] Backup/restore notes - [ ] Backup/restore notes
@@ -688,7 +688,7 @@ Responsibilities:
- [ ] On-the-fly transcoding - [ ] On-the-fly transcoding
- [ ] Multi-bitrate streaming profiles - [ ] Multi-bitrate streaming profiles
- [ ] Lyrics support - [x] Lyrics support
- [ ] Last.fm or ListenBrainz scrobbling - [ ] Last.fm or ListenBrainz scrobbling
- [ ] Shareable public links - [ ] Shareable public links
- [ ] Smart playlists - [ ] Smart playlists