This file provides context for Claude Code when working on the domainstack project.
This project maintains documentation in two locations to serve different audiences:
- Purpose: Entry point for GitHub users browsing the repository
- Audience: Developers discovering the project on GitHub
- Content: Overview, quick start, feature highlights, links to detailed docs
- Keep: Concise and scannable
- Purpose: Detailed documentation published to crates.io
- Audience: Users who have installed the crate and need reference material
- Content: Comprehensive guides, API reference, examples, patterns
- Location:
domainstack/domainstack/docs/*.md
| Location | File | Purpose |
|---|---|---|
| Root | README.md |
GitHub landing page |
| Root | CHANGELOG.md |
Version history for all crates |
| Workspace | domainstack/domainstack/docs/INSTALLATION.md |
Complete installation guide |
| Workspace | domainstack/domainstack/docs/DERIVE_MACRO.md |
Derive macro reference |
| Workspace | domainstack/domainstack/docs/RULES.md |
All 37 validation rules |
| Workspace | domainstack/domainstack/docs/JSON_SCHEMA.md |
JSON Schema generation |
| Workspace | domainstack/domainstack/docs/OPENAPI_SCHEMA.md |
OpenAPI schema generation |
| Workspace | domainstack/domainstack/docs/HTTP_INTEGRATION.md |
Framework adapters |
- New features: Update both root README.md (brief mention) AND detailed docs in workspace
- Bug fixes: Update CHANGELOG.md at root
- API changes: Update relevant docs in
domainstack/domainstack/docs/ - Examples: Add to
examples/directory with entry inexamples/README.md
domainstack/ # Repository root
├── README.md # GitHub landing page
├── CHANGELOG.md # Version history
├── CLAUDE.md # This file
├── domainstack/ # Cargo workspace
│ ├── domainstack/ # Core validation crate
│ │ ├── src/
│ │ └── docs/ # Detailed documentation for crates.io
│ ├── domainstack-derive/ # Proc macros (Validate, ToSchema, ToJsonSchema)
│ ├── domainstack-schema/ # Schema generation (OpenAPI, JSON Schema)
│ ├── domainstack-envelope/ # HTTP error envelopes
│ ├── domainstack-axum/ # Axum framework adapter
│ ├── domainstack-actix/ # Actix-web framework adapter
│ ├── domainstack-rocket/ # Rocket framework adapter
│ ├── domainstack-http/ # Shared HTTP utilities
│ └── domainstack-wasm/ # WASM browser validation
└── examples/ # Example applications
When publishing to crates.io, crates must be published in dependency order:
domainstack(core)domainstack-derive(depends on core)domainstack-schema(depends on core)domainstack-envelope(depends on core)domainstack-http(depends on core, envelope)domainstack-axum(depends on http)domainstack-actix(depends on http)domainstack-rocket(depends on http)domainstack-wasm(depends on core, derive)
Key feature flags to be aware of:
domainstack:derive,regex,async,chrono,serdedomainstack-derive:schema(enables ToJsonSchema derive macro)
# Run all tests
cargo test --workspace
# Run tests with specific features
cargo test -p domainstack-derive --features schema
# Run clippy
cargo clippy --workspace --all-features