A rust implementation of skywatch-phash
1[package]
2name = "skywatch-phash-rs"
3version = "0.2.0"
4edition = "2024"
5authors = ["Giulia <skywatch@skywatch.blue"]
6description = "Perceptual hash-based image moderation for Bluesky (Rust rewrite)"
7license = "MIT"
8
9[dependencies]
10# Async runtime
11tokio = { version = "1", features = ["full"] }
12futures-util = "0.3"
13
14# ATProto client (Jacquard) - using local path
15jacquard = { path = "../jacquard/crates/jacquard" }
16jacquard-api = { path = "../jacquard/crates/jacquard-api" }
17jacquard-common = { path = "../jacquard/crates/jacquard-common", features = ["websocket"] }
18jacquard-identity = { path = "../jacquard/crates/jacquard-identity" }
19jacquard-oauth = { path = "../jacquard/crates/jacquard-oauth" }
20
21# Serialization
22serde = { version = "1.0", features = ["derive"] }
23serde_json = "1.0"
24
25# HTTP client
26reqwest = { version = "0.12", features = ["json"] }
27
28# Redis
29redis = { version = "0.27", features = ["tokio-comp", "connection-manager"] }
30
31# Image processing
32image = "0.25"
33image_hasher = "3.0"
34
35# Error handling
36miette = { version = "7.6", features = ["fancy"] }
37thiserror = "2.0"
38
39# Logging
40tracing = "0.1"
41tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
42
43# Config
44dotenvy = "0.15"
45
46# Utilities
47chrono = "0.4"
48url = "2.5"
49futures = "0.3"
50
51# Rate limiting
52governor = "0.8"
53
54[dev-dependencies]
55mockito = "1"
56tokio-test = "0.4"
57
58[[bin]]
59name = "skywatch-phash"
60path = "src/main.rs"
61
62[profile.release]
63opt-level = 3
64lto = true
65codegen-units = 1
66strip = true
67
68[profile.dev]
69opt-level = 0