From 99d36679c865ac7853b4f69e4391d80e41882669 Mon Sep 17 00:00:00 2001 From: Christian Nennemann Date: Mon, 6 Apr 2026 16:57:43 +0200 Subject: [PATCH] docs: add CLAUDE.md, unignore from .gitignore --- .gitignore | 1 - CLAUDE.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 CLAUDE.md diff --git a/.gitignore b/.gitignore index deb259e..19a1743 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,5 @@ qpc-server.toml docs/internal/ # AI development workflow files -CLAUDE.md master-prompt.md scripts/ai_team.py diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..f78c149 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,63 @@ +# product.quicproquo + +End-to-end encrypted group messaging over QUIC with MLS key agreement and post-quantum crypto. + +## Tech Stack + +- Rust 1.75+, Cargo workspace (12 crates) +- Crypto: OpenMLS 0.8, ML-KEM-768, X25519, ChaCha20-Poly1305, OPAQUE-KE +- Networking: Quinn (QUIC), Tokio, Tower middleware +- Serialization: Protobuf (prost) for v2, Cap'n Proto (legacy v1) +- DB: rusqlite with bundled SQLCipher +- Build: just (justfile), cargo-deny for supply chain audit + +## Commands + +```bash +just build # Build all workspace crates +just test # Run all tests +just test-core # Crypto tests only +just lint # clippy --workspace -- -D warnings +just fmt # Format check +just fmt-fix # Format fix +just proto # Rebuild protobuf codegen +just server # Build server binary +just client # Build client binary +cargo deny check # Supply chain audit (deny.toml) +``` + +## Architecture + +``` +crates/ + quicprochat-core/ # Crypto primitives, MLS, double ratchet + quicprochat-proto/ # Protobuf definitions + prost codegen + quicprochat-rpc/ # RPC framework over QUIC + quicprochat-sdk/ # High-level client SDK + quicprochat-server/ # Server binary + quicprochat-client/ # CLI client binary + quicprochat-p2p/ # P2P mesh via iroh (feature-gated: `mesh`) + quicprochat-plugin-api/ # Plugin interface + quicprochat-kt/ # Kotlin/JNI bindings + meshservice/ # Generic decentralized service layer (FAPP, Housing) +apps/gui/ # GUI application +proto/ # .proto source files +schemas/ # Data schemas +docker/ # Container configs +``` + +## Rules + +- `clippy::unwrap_used` is **deny** workspace-wide -- use proper error handling +- `unsafe_code` is **warn** -- avoid unless absolutely necessary, document why +- P2P crate (`quicprochat-p2p`) pulls ~90 extra deps via iroh -- only compiled with `mesh` feature +- All crypto operations must go through quicprochat-core, never inline crypto +- Protobuf is the v2 wire format; Cap'n Proto is legacy v1 only + +## Do NOT + +- Use `.unwrap()` or `.expect()` outside tests -- clippy will deny it +- Add crypto primitives outside of quicprochat-core +- Enable the `mesh` feature by default (heavy dependency tree) +- Mix v1 (capnp) and v2 (protobuf) serialization in new code +- Skip `cargo deny check` before adding new dependencies