Implement configuration management and app startup orchestration #11
Notifications
Total Time Spent: 18 minutes
connor
18 minutes
No due date set.
Dependencies
No dependencies set.
Reference: Shanty/Main#11
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Shanty needs a unified configuration system that all crates can use, plus a top-level orchestrator that starts the web server and any background services. Currently each crate accepts its own CLI args, but when running as a unified web app, there needs to be one config file and one startup command.
This issue covers:
Configuration crate or module — create a shared configuration type (either in
shanty-dbor a newshanty-configcrate) that includes:library_path— root directory for organized music filesimport_paths— list of directories to scan for new musicdatabase_path— path to the SQLite database filedownload_path— temporary directory for downloads before organizationorganization_format— template string for file organizationweb.port— HTTP port (default 8085)web.bind_address— bind address (default 0.0.0.0)tagging.auto_tag— whether to auto-tag new files after indexingtagging.write_tags— whether to write tags back to filestagging.confidence_threshold— match confidence thresholddownload.concurrent_limit— max simultaneous downloadsdownload.default_format— default audio format~/.config/shanty/config.tomlor./shanty.toml)SHANTY_WEB_PORT=9090)Top-level binary — create a
shantybinary (the main entry point) that:Logging — set up structured logging (using
tracingcrate) across all crates:SHANTY_LOGorRUST_LOG)Acceptance Criteria
shantybinary starts the web server and initializes the databaseDependencies