[workspace]
members = [
    "crates/adapters/auth",
    "crates/adapters/event-publisher",
    "crates/adapters/metadata",
    "crates/adapters/poster-fetcher",
    "crates/adapters/image-storage",
    "crates/adapters/poster-sync",
    "crates/adapters/rss",
    "crates/adapters/sqlite",
    "crates/adapters/postgres",
    "crates/adapters/sqlite-federation",
    "crates/adapters/postgres-federation",
    "crates/adapters/sqlite-event-queue",
    "crates/adapters/postgres-event-queue",
    "crates/adapters/template-askama",
    "crates/adapters/activitypub",
    "crates/adapters/export",
    "crates/adapters/event-payload",
    "crates/adapters/nats",
    "crates/api-types",
    "crates/application",
    "crates/adapters/tmdb-enrichment",
    "crates/adapters/image-converter",
    "crates/domain",
    "crates/presentation",
    "crates/tui",
    "crates/worker",
    "crates/adapters/importer",
    "crates/adapters/jellyfin",
    "crates/adapters/plex",
    "crates/adapters/sqlite-search",
    "crates/adapters/postgres-search",
    "crates/adapters/wrapup-renderer",
]
resolver = "2"

[workspace.dependencies]
tokio = { version = "1.0", features = ["macros", "net", "rt", "rt-multi-thread", "sync", "time"] }
bytes = "1"
futures = "0.3"
dotenvy = "0.15"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
anyhow = "1.0"
thiserror = "2.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
async-trait = "0.1"
uuid = { version = "1.23.0", features = ["v4", "v5", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
sqlx = { version = "0.8.6", features = [
    "runtime-tokio-rustls",
    "sqlite",
    "uuid",
    "macros",
] }
rand = "0.9"
reqwest = { version = "0.13", features = ["json", "query"] }
sha2 = "0.10"
hex = "0.4"
object_store = { version = "0.11", features = ["aws"] }
axum = { version = "0.8.8", features = ["macros", "multipart"] }
csv = "1"

api-types = { path = "crates/api-types" }
domain = { path = "crates/domain" }
tmdb-enrichment = { path = "crates/adapters/tmdb-enrichment" }
application = { path = "crates/application" }
presentation = { path = "crates/presentation" }
auth = { path = "crates/adapters/auth" }
metadata = { path = "crates/adapters/metadata" }
poster-fetcher = { path = "crates/adapters/poster-fetcher" }
image-storage = { path = "crates/adapters/image-storage" }
poster-sync = { path = "crates/adapters/poster-sync" }
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" }
postgres = { path = "crates/adapters/postgres" }
postgres-federation = { path = "crates/adapters/postgres-federation" }
template-askama = { path = "crates/adapters/template-askama" }
activitypub = { path = "crates/adapters/activitypub" }
event-payload = { path = "crates/adapters/event-payload" }
nats = { path = "crates/adapters/nats" }
sqlite-event-queue = { path = "crates/adapters/sqlite-event-queue" }
postgres-event-queue = { path = "crates/adapters/postgres-event-queue" }
importer = { path = "crates/adapters/importer" }
jellyfin = { path = "crates/adapters/jellyfin" }
plex = { path = "crates/adapters/plex" }
image-converter = { path = "crates/adapters/image-converter" }
sqlite-search = { path = "crates/adapters/sqlite-search" }
postgres-search = { path = "crates/adapters/postgres-search" }
wrapup-renderer = { path = "crates/adapters/wrapup-renderer" }
