[workspace] default-members = [ "crates/adapters/auth", "crates/adapters/event-publisher", "crates/adapters/metadata", "crates/adapters/poster-fetcher", "crates/adapters/object-storage", "crates/adapters/rss", "crates/adapters/sqlite", "crates/adapters/sqlite-federation", "crates/adapters/activitypub", "crates/adapters/export", "crates/adapters/nats", "crates/adapters/tmdb-enrichment", "crates/adapters/image-converter", "crates/adapters/http-axum", "crates/adapters/importer", "crates/adapters/media-server", "crates/event-payload", "crates/api-types", "crates/application", "crates/domain", "crates/bootstrap", "crates/server", "crates/worker", "crates/config", ] members = [ "crates/adapters/auth", "crates/adapters/event-publisher", "crates/adapters/metadata", "crates/adapters/poster-fetcher", "crates/adapters/object-storage", "crates/adapters/rss", "crates/adapters/sqlite", "crates/adapters/sqlite-federation", "crates/adapters/activitypub", "crates/adapters/export", "crates/event-payload", "crates/adapters/nats", "crates/api-types", "crates/application", "crates/adapters/tmdb-enrichment", "crates/adapters/image-converter", "crates/domain", "crates/bootstrap", "crates/adapters/http-axum", "crates/server", "crates/tui", "crates/worker", "crates/adapters/importer", "crates/adapters/media-server", "crates/config", ] resolver = "2" [workspace.package] edition = "2024" [workspace.dependencies] tokio = { version = "1.0", default-features = false } bytes = "1" futures = "0.3" async-stream = "0.3" dotenvy = "0.15" serde = { version = "1.0", default-features = false, features = ["std"] } serde_json = "1.0" anyhow = "1.0" thiserror = "2.0" tracing = "0.1" tracing-subscriber = { version = "0.3.23", default-features = false } async-trait = "0.1.92" uuid = { version = "1.23.0", default-features = false, features = ["std"] } chrono = { version = "0.4", default-features = false, features = ["std"] } chrono-tz = "0.10" sqlx = { version = "0.8.6", default-features = false, features = [ "runtime-tokio", "sqlite", "uuid", "derive", "migrate", ] } rand = "0.9" tempfile = "3" reqwest = { version = "0.13", default-features = false, features = ["json", "query", "charset", "http2", "system-proxy", "rustls-no-provider"] } sha2 = "0.10" hex = "0.4" object_store = { version = "0.11", default-features = false, features = ["aws"] } axum = { version = "0.8.8", default-features = false } csv = "1" figment = { version = "0.10", features = ["toml"] } rustls = { version = "0.23", default-features = false } tower = { version = "0.5", default-features = false } tower-http = { version = "0.6.8", default-features = false } utoipa = "5.5.0" utoipa-swagger-ui = "9.0.2" askama = "0.16.0" infer = "0.19.0" percent-encoding = "2" axum-governor = "2" email_address = "0.2.9" jsonwebtoken = "9" argon2 = { version = "0.5", default-features = false } rand_core = { version = "0.6", default-features = false } async-nats = "0.48.0" k-ap = { version = "0.5.1", registry = "gitea" } url = "2" ammonia = "4" calamine = "0.35" image = { version = "0.25", default-features = false } ravif = { version = "0.11", default-features = false } webp = "0.3" rss-feed = { package = "rss", version = "2" } ratatui = "0.30.0" keyring-core = "1.0.0" directories = "6" api-types = { path = "crates/api-types" } domain = { path = "crates/domain" } tmdb-enrichment = { path = "crates/adapters/tmdb-enrichment" } application = { path = "crates/application" } bootstrap = { path = "crates/bootstrap" } http-axum = { path = "crates/adapters/http-axum" } auth = { path = "crates/adapters/auth" } metadata = { path = "crates/adapters/metadata" } poster-fetcher = { path = "crates/adapters/poster-fetcher" } object-storage = { path = "crates/adapters/object-storage" } event-publisher = { path = "crates/adapters/event-publisher" } rss = { path = "crates/adapters/rss" } export = { path = "crates/adapters/export" } sqlite = { path = "crates/adapters/sqlite" } sqlite-federation = { path = "crates/adapters/sqlite-federation" } activitypub = { path = "crates/adapters/activitypub" } event-payload = { path = "crates/event-payload" } media-server = { path = "crates/adapters/media-server" } nats = { path = "crates/adapters/nats" } importer = { path = "crates/adapters/importer" } image-converter = { path = "crates/adapters/image-converter" } config = { path = "crates/config" } [profile.dev] debug = 1 # line tables only — still debuggable, much faster linking [profile.dev.package."*"] opt-level = 2 # compile deps faster at runtime; paid once, cached after