docs: update implementation checklist status
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user