feat: Working sync between Navidrome & iPod

First full session of vibecoding with agents, super cool!

Signed-off-by: SindreKjelsrud <sindre@kjelsrud.dev>
This commit is contained in:
SindreKjelsrud 2025-12-21 21:18:17 +01:00
commit 758076fe32
Signed by: sidski
GPG key ID: D2BBDF3EDE6BA9A6
15 changed files with 6303 additions and 0 deletions

62
Cargo.toml Normal file
View file

@ -0,0 +1,62 @@
[package]
name = "navipod"
version = "0.1.0"
edition = "2021"
authors = ["Your Name <you@example.com>"]
description = "Sync songs and albums from Navidrome to iPod (stock OS or Rockbox)"
license = "MIT OR Apache-2.0"
repository = "https://github.com/yourusername/navipod"
[dependencies]
# Async runtime
tokio = { version = "1.0", features = ["full"] }
# HTTP client for Navidrome API
reqwest = { version = "0.11", features = ["json", "multipart"] }
# Serialization/Deserialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
# Configuration
config = "0.14"
dirs = "5.0"
# Error handling
anyhow = "1.0"
thiserror = "1.0"
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# File operations
walkdir = "2.4"
fs_extra = "1.3"
# Path handling
pathdiff = "0.2"
# CLI
clap = { version = "4.0", features = ["derive"] }
# ID3 tag parsing
id3 = "1.13"
# UUID generation
uuid = { version = "1.0", features = ["v4"] }
# GUI
eframe = { version = "0.27", default-features = false, features = ["default_fonts", "glow"] }
egui = "0.27"
rfd = "0.14"
home = "0.5.11" # Pin to version compatible with Rust 1.86
[[bin]]
name = "navipod-gui"
path = "src/gui_main.rs"
[dev-dependencies]
mockito = "1.0"
tokio-test = "0.4"