[package]
name = "privchat"
version = "0.1.0"
edition = "2021"
description = "High-performance instant messaging server built on msgtrans"
authors = ["zoujiaqing <zoujiaqing@gmail.com>"]
license = "Apache-2.0"
homepage = "https://privchat.dev"
repository = "https://github.com/privchat/privchat"
keywords = ["chat", "messaging", "server", "websocket", "quic"]
categories = ["network-programming", "web-programming"]
[[bin]]
name = "privchat"
path = "src/main.rs"
[dependencies]
msgtrans = { path = "../msgtrans", version = "1.0" }
privchat-protocol = { path = "../privchat-protocol", version = "0.1" }
tokio = { version = "1.0", features = ["full"] }
tokio-stream = "0.1"
async-trait = "0.1"
futures = "0.3"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
tracing-appender = "0.2"
chrono = { version = "0.4", features = ["serde"] }
snowflake_me = { version = "0.5", features = ["ip-fallback"] }
dashmap = "5.5"
parking_lot = "0.12"
thiserror = "1.0"
anyhow = "1.0"
toml = "0.8"
dotenvy = "0.15"
clap = { version = "4.0", features = ["derive"] }
uuid = { version = "1.0", features = ["v4", "v5", "serde"] }
url = "2.5"
num-bigint = "0.4.6"
redis = "0.32.3"
bb8 = "0.9.0"
bb8-redis = "0.24.0"
moka = { version = "0.12.10", features = ["future"] }
fastrand = "2.3.0"
jsonwebtoken = "9.3"
bcrypt = "0.15"
bytes = { version = "1.5", features = ["serde"] }
sled = "0.34"
bincode = "1.3"
rand = "0.8"
rustc-hash = "1.1"
lazy_static = "1.4"
axum = "0.8"
tower = "0.5"
tower-http = { version = "0.6", features = ["cors", "compression-gzip"] }
axum-extra = { version = "0.12.5", features = ["multipart"] }
multer = "3.1.0"
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres", "uuid", "chrono", "json"] }
opendal = { version = "0.55", default-features = false, features = ["services-fs", "services-s3"] }
metrics = "0.22"
metrics-exporter-prometheus = { version = "0.13", default-features = false, features = ["http-listener"] }
[features]
default = []
redis = []
[[example]]
name = "current_status_demo"
path = "examples/current_status_demo.rs"
[[example]]
name = "simple_server_demo"
path = "examples/simple_server_demo.rs"
[[example]]
name = "logging_demo"
path = "examples/logging_demo.rs"
[[example]]
name = "offline_worker_demo"
path = "examples/offline_worker_demo.rs"
[[example]]
name = "simple_offline_worker_test"
path = "examples/simple_offline_worker_test.rs"
[[example]]
name = "handler_demo"
path = "examples/handler_demo.rs"
[[example]]
name = "core_chat_demo"
path = "examples/core_chat_demo.rs"
[[example]]
name = "service_communication_demo"
path = "examples/service_communication_demo.rs"
[[example]]
name = "simple_chat_demo"
path = "examples/simple_chat_demo.rs"
[[example]]
name = "simple_dashmap_demo"
path = "examples/simple_dashmap_demo.rs"
[[example]]
name = "simple_channel_test"
path = "examples/simple_channel_test.rs"
[[example]]
name = "channel_architecture_demo"
path = "examples/channel_architecture_demo.rs"