CTO Overview
mel é um Node + TypeScript app construído com DDD Light (Domain-Driven Design pragmático). Domínio puro (in-memory aggregates), infraestrutura plugada por adapters em application//infrastructure/. Abordagem: Start by the end — modela o end-state experience do casal primeiro, derivamos linguagem ubíqua, depois domínio, depois adapters.
Testes em três tiers (ADR 002): domain (in-memory, ms), infra (colocated, SQLite :memory: + LLM mock), e2e (Playwright + mock LLM gated por NODE_ENV=test). Specs são scenarios-first BDD — cada .md Gherkin tem sibling .spec.ts 1:1.
Estado atual (2026-06-03): 34 cenários green (000-026 + wa-001/2/3/4 + landing-001/2/3), 0 WIP red — specs passando contra impl real ou mock; backlog técnico (BaileysAdapter prod, write tools) trackado em /cpo/030-next/. 10 ADRs aceitas, dominio core estável.
Sub-pages
Section titled “Sub-pages”- Architecture (DDD Light) — bounded contexts, layering, cross-context rules.
- Decisions (ADRs) — 8 decisões técnicas atemporais.
- Scenarios Index — 24 cenários por status (green/red).
- Lead Time & Capacity — git tags + script, throughput tracking.
Stack summary
Section titled “Stack summary”- Runtime — Node.js + TypeScript (strict).
- LLM — Gemini 2.5 Flash via OpenRouter (Vercel AI SDK).
- Memory —
@mastra/memory+@mastra/libsqlviawithMastra(). - Persistence — drizzle + better-sqlite3 (domain repos).
- WhatsApp — Baileys (multi-device, MIT). Único canal user-facing.
- Landing/docs — Astro 6 + Cloudflare Pages.
- PDF — unpdf via subprocess (sync wrap).
- E2E — Playwright + mock LLM gated por env.
Detalhes em ADR 001.
Convenções de código
Section titled “Convenções de código”- VO-first, promoção a Entity/Aggregate quando o cenário forçar.
- Contexts nomeados pelo aggregate root ou capability (planning, agent).
domain/puro ·application/ports ·infrastructure/adapters.- PT-BR + EN mix livre nos nomes; texto pro casal sempre PT-BR (ADR 008).
Convenções completas em AGENTS.md.