# dd0c — DevOps Developer Tools

Six products. One platform. Built for teams that ship.

## Products

| Product | Port | Description | Stack |
|---------|------|-------------|-------|
| [route](products/01-llm-cost-router/) | 3001 | LLM Cost Router & Dashboard | Rust (proxy + API), React |
| [drift](products/02-iac-drift-detection/) | 3002 | IaC Drift Detection | Go (agent), TypeScript/Fastify |
| [alert](products/03-alert-intelligence/) | 3003 | Alert Intelligence | TypeScript/Fastify |
| [portal](products/04-lightweight-idp/) | 3004 | Lightweight Service Catalog | TypeScript/Fastify, Meilisearch |
| [cost](products/05-aws-cost-anomaly/) | 3005 | AWS Cost Anomaly Detection | TypeScript/Fastify |
| [run](products/06-runbook-automation/) | 3006 | Runbook Automation | Rust (agent), TypeScript/Fastify |

## Quick Start

```bash
# 1. Start shared infra (Postgres, Redis, Meilisearch)
docker compose -f products/docker-compose.yml up -d postgres redis meilisearch

# 2. Create databases and run migrations
./products/init-db.sh

# 3. Start all services
docker compose -f products/docker-compose.yml up -d
```

## Architecture

```
┌─────────────┐  ┌─────────────┐  ┌─────────────┐
│  Cloudflare  │  │   Fly.io    │  │   Fly.io    │
│    Pages     │  │   (proxy)   │  │   (APIs)    │
│  React UIs   │  │  P1 route   │  │  P3-P6 SaaS │
└──────┬───────┘  └──────┬──────┘  └──────┬──────┘
       │                 │                │
       └────────────┬────┘────────────────┘
                    │
              ┌─────┴─────┐
              │   Neon PG  │  ← RLS per tenant
              │  + Upstash │  ← Redis cache
              └────────────┘
```

## Auth

All products share the same auth pattern:
- **JWT** (Bearer token) for browser/API access
- **API Key** (`dd0c_` prefix + 32 hex) for agents/CLI
- **HMAC** for webhook endpoints (per-provider secrets)
- **RBAC**: owner > admin > member > viewer

## Shared Patterns

- **RLS tenant isolation**: `withTenant()` wrapper on every DB call
- **Zod config validation**: Environment variables validated at startup
- **Fastify**: All Node services use Fastify with cors + helmet
- **Pino**: Structured JSON logging everywhere
- **Gitea Actions CI**: Test + typecheck + lint on every push

## Local Development

Each product can run standalone:

```bash
cd products/03-alert-intelligence
npm install
npm run dev  # tsx watch mode
```

Or run the full stack via Docker Compose (see Quick Start).

## Deployment

**V1 Target**: Fly.io (~$5/mo total)
- Each product has a `fly.toml` with scale-to-zero
- Shared Neon Postgres (free tier) + Upstash Redis (free tier)
- Cloudflare Pages for React dashboards
- Caddy for self-hosted TLS (optional)

**Scale Target**: AWS (ECS Fargate + RDS + ElastiCache)
- Same Docker images, only env vars change
- Migration path documented in each product's `INFRASTRUCTURE.md`

## CI/CD

All products use Gitea Actions with self-hosted runners:
- `.gitea/workflows/ci.yml` — test, typecheck, lint
- `.gitea/workflows/deploy.yml` — build + push to Fly.io (where applicable)

## License

Proprietary. © dd0c 2026.
