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