How ade-nugraha306/sky-project works
Sky is a keyboard-first terminal music player. The main workflow starts in the TUI: it loads configuration and the SQLite library, lets users browse or filter tracks, then manages playback through a queue and audio player. Separate UI modes support folder selection and playlist management; scanning and metadata parsing populate the library. The excerpts show application startup, playback handling, persistence APIs, and selected UI behavior. Some scanner-to-metadata and decoder internals were not shown, so those links are omitted or marked unverified.
Main entry points: update.go Player TUI · model.go UI State · main.go Startup · player.go Audio Player
Components 18
Application UI
- Startup
main.go - Player TUI
internal/tui/update.go - UI State
internal/tui/model.go - Track Rows
internal/tui/item.go - Folder Browser
internal/tui/browser.go - Folder Preview
internal/tui/preview.go - Screen Views
internal/tui/view.go
Music Library
- Folder Scanner
internal/library/scanner.go - Metadata Parser
internal/library/metadata.go
Playback
- Playback Queue
internal/queue/queue.go - Audio Player
internal/player/player.go - Audio Decoder
internal/player/decoder.go
Persistence
- Settings
internal/config/config.go - Track Catalog
internal/db/tracks.go - Playlist Store
internal/db/playlists.go - Database Setup
internal/db/db.go
Other components
- Listener
- Audio Output
Connections 25
- Listener → Player TUI: operates
README.md - Startup → Settings: loads
main.go - Startup → Database Setup: opens
main.go - Startup → UI State: constructs
main.go - Startup → Player TUI: runs
main.go - UI State → Settings: uses
internal/tui/model.go - UI State → Database Setup: uses
internal/tui/model.go - UI State → Audio Player: creates
internal/tui/model.go - Player TUI → UI State: updates
internal/tui/update.go - Player TUI → Track Catalog: loads tracks
internal/tui/update.go - Player TUI → Playlist Store: manages playlists
internal/tui/update.go - Player TUI → Playback Queue: shuffles and locates
internal/tui/update.go - Player TUI → Audio Player: starts playback
internal/tui/update.go - Player TUI → Settings: saves resume
internal/tui/update.go - Player TUI → Folder Browser: updates
internal/tui/update.go - Player TUI → Folder Preview: requests preview
internal/tui/update.go - Player TUI → Track Rows: uses items
internal/tui/update.go - Screen Views → Track Rows: renders items
- Folder Scanner → Track Catalog: supplies tracks
- Metadata Parser → Folder Scanner: enriches tracks
- Player TUI → Folder Scanner: initiates scans
- Track Catalog → Metadata Parser: stores metadata fields
internal/db/tracks.go - Playlist Store → Track Catalog: looks up tracks
internal/db/playlists.go - Audio Player → Audio Decoder: decodes files
- Audio Player → Audio Output: plays audio
README.md