Config Project (Rust)
Overview
Bootstrap determinístico e idempotente: workspace Cargo com crate shared-kernel e binary api (Axum), Postgres via docker-compose dev, layout modular por camada sem namespaces redundantes.
Estrutura alvo
project-root/
├── Cargo.toml # [workspace]
├── crates/
│ ├── shared-kernel/ # Entity, ValueObject, Result, UseCase
│ └── api/
│ └── src/
│ ├── main.rs
│ ├── lib.rs
│ ├── config.rs
│ └── modules/ # um subdir por Bounded Context
│ ├── health/
│ └── <bc>/ # config-new-module-rs
├── migrations/ # sqlx (config-sqlx-rs)
├── tests/integration/ # test-e2e-rs
├── docker-compose.yml
└── .env.example
Namespaces (obrigatório)
Consultar ../config-shared-core-rs/references/rust-namespace-layout.md:
- ✅
modules::customers::domain::Customer - ❌
modules::customers::domain::customer::Customer - ❌
domain::cliente::Cliente
Workflow
- Detectar
Cargo.tomlworkspace na raiz; se ausente, copiar template. - Validar crates
shared-kerneleapi. - Configurar
.env,docker-compose.yml,migrations/. cargo buildecargo test -p shared-kernel.- Ao fechar cada épico: testes + CI +
config-cicd-rs/scripts/check-memory-rs.sh(verskills-standards.mdEpic Definition of Done).
Commands
node config-project-rs/scripts/project-init-rs.mjs --project-name=MyApp
cp .env.example .env && docker compose up -d
cargo run -p api
Nomes de crates são fixos:
apieshared-kernel(referenciados por-p api, importsuse api::{...}e CI).--project-namesó afeta logs/display do script — não renombra crates.
Resources
agents/openai.yamlscripts/project-init-rs.mjsassets/project-template-rs/references/bootstrap-contract-rs.md../config-shared-core-rs/references/rust-namespace-layout.md
Global Standards
- Consultar
../skills-standards.mdseção Rust Stack Standards.