[package] name = "kittybox" version = "0.1.0" rust-version = "1.75.0" authors = ["Vika "] license = "AGPL-3.0-only" edition = "2021" default-run = "kittybox" autobins = false [features] default = ["rustls", "postgres"] webauthn = ["openssl", "dep:webauthn"] openssl = ["reqwest/native-tls", "reqwest/native-tls-alpn", "sqlx/tls-native-tls"] rustls = ["reqwest/rustls-tls-webpki-roots", "sqlx/tls-rustls"] cli = ["dep:clap", "dep:anyhow"] postgres = ["sqlx", "kittybox-util/sqlx"] [[bin]] name = "kittybox" path = "src/main.rs" required-features = [] #[[bin]] #name = "kittybox-bulk-import" #path = "src/bin/kittybox_bulk_import.rs" #required-features = ["migration", "cli"] #[[bin]] #name = "kittybox-database-converter" #path = "src/bin/kittybox_database_converter.rs" #required-features = ["migration", "redis", "cli"] [[bin]] name = "kittybox-indieauth-helper" path = "src/bin/kittybox-indieauth-helper.rs" required-features = ["cli"] [[bin]] name = "kittybox-check-webmention" path = "src/bin/kittybox-check-webmention.rs" required-features = ["cli"] [[bin]] name = "kittybox-mf2" path = "src/bin/kittybox-mf2.rs" required-features = ["cli"] [[example]] name = "sql" path = "examples/sql.rs" required-features = ["sqlparser"] [workspace] members = [".", "./util", "./templates", "./indieauth", "./templates-neo", "./tower-watchdog"] default-members = [".", "./util", "./templates", "./indieauth"] [workspace.dependencies] axum = "0.7.9" axum-core = "0.4.5" chrono = { version = "0.4.39", features = ["serde"] } clap = "4.5.23" data-encoding = "2.6.0" ellipse = "0.2.0" faker_rand = "0.1.1" futures = "0.3.31" futures-util = "0.3.31" html = "0.6.3" http = "1.2" include_dir = "0.7.4" libflate = "2.1.0" markup = "0.15.0" microformats = "0.14.0" rand = "0.8.5" serde = { version = "1.0.217", features = ["derive"] } serde_json = "1.0.134" serde_urlencoded = "0.7.1" serde_variant = "0.1.3" sha2 = "0.10.8" sqlx = { version = "0.8.1", features = ["json"] } thiserror = "2.0.9" time = "0.3.37" tokio = "1.42.0" tokio-stream = "0.1.17" tokio-util = "0.7.13" tower = "0.5.2" tower-http = "0.6.2" tower-layer = "0.3.3" tower-service = "0.3.3" tower-test = "0.4.0" tracing = "0.1.41" tracing-log = "0.2.0" tracing-subscriber = "0.3.19" tracing-test = "0.2.5" tracing-tree = "0.4.0" url = { version = "2.5.4", features = ["serde"] } uuid = "1.11.0" walkdir = "2.5.0" [dependencies.kittybox-util] version = "0.3.0" path = "./util" features = ["fs", "axum"] [dependencies.kittybox-frontend-renderer] version = "0.1.0" path = "./templates" [dependencies.kittybox-indieauth] version = "0.2.0" path = "./indieauth" features = ["axum"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dev-dependencies] faker_rand = { workspace = true } rand = { workspace = true } tempfile = "3.14.0" tracing-test = { workspace = true } wiremock = "0.6.2" [dependencies] anyhow = { version = "1.0.95", optional = true } argon2 = { version = "0.5.3", features = ["std"] } async-trait = "0.1.83" axum = { workspace = true, features = ["multipart", "json", "form", "macros"] } axum-extra = { version = "0.9.6", features = ["cookie", "cookie-signed", "typed-header"] } base64 = "0.22.1" bytes = "1.9.0" chrono = { workspace = true } clap = { workspace = true, features = ["derive"], optional = true } data-encoding = { workspace = true } either = "1.13.0" futures = { workspace = true } futures-util = { workspace = true } hex = "0.4.3" html5ever = "=0.27.0" http-cache-reqwest = { version = "0.15.0", default-features = false, features = ["manager-moka"] } hyper = "1.5.2" lazy_static = "1.5.0" listenfd = "1.0.1" markdown = "1.0.0-alpha.21" microformats = { workspace = true } mime = "0.3.17" newbase60 = "0.1.4" prometheus = { version = "0.13.4", features = ["process"] } rand = { workspace = true } redis = { version = "0.27.6", features = ["aio", "tokio-comp"], optional = true } relative-path = "1.9.3" reqwest = { version = "0.12.11", default-features = false, features = ["gzip", "brotli", "json", "stream"] } reqwest-middleware = "0.4.0" serde = { workspace = true } serde_json = { workspace = true } serde_urlencoded = { workspace = true } serde_variant = { workspace = true } sha2 = { workspace = true } sqlparser = { version = "0.53.0", features = ["serde", "serde_json"], optional = true } sqlx = { workspace = true, features = ["uuid", "chrono", "postgres", "runtime-tokio"], optional = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["full", "tracing"] } tokio-stream = { workspace = true, features = ["time", "net"] } tokio-util = { workspace = true, features = ["io-util"] } tower = { workspace = true, features = ["tracing"] } tower-http = { workspace = true, features = ["trace", "cors", "catch-panic", "sensitive-headers"] } tracing = { workspace = true, features = [] } tracing-log = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter", "json"] } tracing-tree = { workspace = true } url = { workspace = true } uuid = { workspace = true, features = ["v4"] } webauthn = { version = "0.5.0", package = "webauthn-rs", features = ["danger-allow-state-serialisation"], optional = true }