Initialize Cargo workspace and project scaffolding #1

Closed
opened 2026-03-17 13:47:01 -04:00 by connor · 0 comments
Owner

Shanty is a modular music management application built in Rust. The project is organized as a Cargo workspace where each component (indexing, tagging, organization, watching, downloading, searching, web interface, etc.) lives in its own crate. Each crate serves as both a library (for integration into the larger app) and a standalone binary with its own CLI.

This issue covers the initial project scaffolding:

  1. Create a top-level Cargo.toml defining the workspace and listing all planned member crates
  2. Create stub crates for each planned component (to be later overwritten with submodules):
    • shanty-index — music file indexing and metadata extraction
    • shanty-tag — metadata tagging via online databases
    • shanty-org — file organization and renaming
    • shanty-watch — library watchlist management
    • shanty-dl — music downloading
    • shanty-search — online music search
    • shanty-notify — notifications (post-MVP, but scaffold now)
    • shanty-playlist — playlist generation (post-MVP, but scaffold now)
    • shanty-serve — music serving/streaming (post-MVP, but scaffold now)
    • shanty-play — built-in playback (post-MVP, but scaffold now)
    • shanty-web — web interface backend (Actix)
    • shanty-db — shared database schema and access layer
  3. Each crate should have a minimal lib.rs and main.rs (where applicable) with placeholder content
  4. Create a top-level readme.md explaining the project structure
  5. Add a .gitignore appropriate for Rust projects
  6. Ensure cargo build and cargo test succeed on the empty workspace

Acceptance Criteria

  • Cargo.toml at the workspace root lists all member crates
  • Each crate directory exists with its own Cargo.toml, src/lib.rs, and (where applicable) src/main.rs
  • cargo build --workspace succeeds
  • cargo test --workspace succeeds (even if no tests yet)
  • .gitignore excludes target/, .env, and other standard Rust artifacts
  • readme.md exists with a brief project description and crate listing
Shanty is a modular music management application built in Rust. The project is organized as a Cargo workspace where each component (indexing, tagging, organization, watching, downloading, searching, web interface, etc.) lives in its own crate. Each crate serves as both a library (for integration into the larger app) and a standalone binary with its own CLI. This issue covers the initial project scaffolding: 1. Create a top-level `Cargo.toml` defining the workspace and listing all planned member crates 2. Create stub crates for each planned component (to be later overwritten with submodules): - `shanty-index` — music file indexing and metadata extraction - `shanty-tag` — metadata tagging via online databases - `shanty-org` — file organization and renaming - `shanty-watch` — library watchlist management - `shanty-dl` — music downloading - `shanty-search` — online music search - `shanty-notify` — notifications (post-MVP, but scaffold now) - `shanty-playlist` — playlist generation (post-MVP, but scaffold now) - `shanty-serve` — music serving/streaming (post-MVP, but scaffold now) - `shanty-play` — built-in playback (post-MVP, but scaffold now) - `shanty-web` — web interface backend (Actix) - `shanty-db` — shared database schema and access layer 3. Each crate should have a minimal `lib.rs` and `main.rs` (where applicable) with placeholder content 4. Create a top-level `readme.md` explaining the project structure 5. Add a `.gitignore` appropriate for Rust projects 6. Ensure `cargo build` and `cargo test` succeed on the empty workspace ### Acceptance Criteria - [ ] `Cargo.toml` at the workspace root lists all member crates - [ ] Each crate directory exists with its own `Cargo.toml`, `src/lib.rs`, and (where applicable) `src/main.rs` - [ ] `cargo build --workspace` succeeds - [ ] `cargo test --workspace` succeeds (even if no tests yet) - [ ] `.gitignore` excludes `target/`, `.env`, and other standard Rust artifacts - [ ] `readme.md` exists with a brief project description and crate listing
connor added the MVPHighPriority labels 2026-03-17 13:48:30 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Shanty/Main#1