Files
cloudlysis/README.md
Vlad Durnea 2595e7f1c5
Some checks failed
ci / ui (push) Failing after 28s
ci / rust (push) Failing after 2m40s
images / build-and-push (push) Failing after 19s
feat(billing): implement tenant subscription entitlements system (milestones 0-6)
2026-03-30 18:41:23 +03:00

60 lines
2.3 KiB
Markdown

# Cloudlysis (monorepo)
Production-oriented, multi-service Rust workspace with an operator-facing Control Plane (API + Admin UI), S3-backed document storage, and an optional observability stack for local parity.
## Quickstart (local dev)
Core stack (includes MinIO + MailHog + Control Plane):
```bash
docker compose up -d --build
```
Full local stack with observability (Grafana/Loki/Tempo/VictoriaMetrics):
```bash
docker compose --profile observability up -d --build
```
Full local stack + Loki/Tempo using MinIO (S3 mode):
```bash
docker compose -f docker-compose.yml -f observability/docker-compose.s3.yml --profile observability up -d --build
```
## Local endpoints
- **Control UI**: `http://localhost:8082`
- **Control API**: `http://localhost:38080`
- **Grafana** (observability profile): `http://localhost:3000`
- **MailHog UI**: `http://localhost:8025` (SMTP on `localhost:1025`)
- **MinIO console**: `http://localhost:9001` (S3 API on `localhost:9000`)
## Repository layout (high level)
- **Rust services (Cargo workspace)**: `aggregate/`, `gateway/`, `projection/`, `runner/`, `control/api/`, `shared/`
- **Admin UI**: `control/ui/`
- **Docker / Swarm / Compose**: `docker/`, `docker-compose.yml`, `swarm/`, `observability/`
## Production (overview)
- **Control plane Swarm stack**: `swarm/stacks/control-plane-prod.yml`
- **S3 docs buckets**: `CONTROL_S3_BUCKET_DOCS` supports a comma-separated shard set (e.g. `cloudlysis-docs-0,cloudlysis-docs-1,cloudlysis-docs-2`). Bucket selection is deterministic per-tenant; keep the full shard set stable to avoid remapping tenants.
- **S3 provisioning helpers** (idempotent scripts; CI/CD friendly):
- `docker/scripts/s3_create_docs_bucket.sh`
- `docker/scripts/s3_apply_lifecycle_docs.sh`
- `docker/scripts/s3_verify_docs.sh`
- Gitea Actions workflow: `.gitea/workflows/s3-provision.yml`
## Docs
- **Docker / local dev / Swarm**: `DOCKER.md`
- **Developer docs**: `docs/developer/setup.md`, `docs/developer/testing.md`
- **Architecture**: `docs/architecture/overview.md`, `docs/architecture/transport.md`
- **Usage**: `docs/usage/quickstart.md`, `docs/usage/api.md`, `docs/usage/nats.md`
## Workspace verification
```bash
cargo fmt --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cd control/ui && npm ci && npm run lint && npm run typecheck && npm run test && npm run build
```