chore: initial monorepo scaffold + WDS Phase 1+2 artifacts
- Nx 22.7 monorepo (pnpm 11.1, TypeScript 5.9, Node 24) - apps/api: NestJS 11 (CJS conforme CODING-RULES.md PGD-DB-004) - apps/web: React 19 + Vite 8 (ESM) - libs/shared/api-interface: Zod contract base - Docker Compose dev: Postgres 18, Valkey 8, MinIO, Mailpit - WDS artifacts: - design-artifacts/A-Product-Brief/ (5 docs canônicos + 16 dialogs) - design-artifacts/B-Trigger-Map/ (hub + 4 personas + feature impact) - Stack canon: STACK.md v2.2 + CODING-RULES.md v2.0 + brand.md - AGENTS.md + README.md como entrada para devs/agentes Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
97
README.md
Normal file
97
README.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# SAR — Força de Vendas
|
||||
|
||||
**Cliente:** JCS Sistemas · **Status:** MVP em desenvolvimento
|
||||
|
||||
> Plataforma SaaS B2B de força de vendas com 4 cockpits especializados (Rep / Supervisor / Dono / Admin) sobre dado único em tempo real, atravessado por WhatsApp nativo e IA contextual.
|
||||
|
||||
---
|
||||
|
||||
## Stack canônica
|
||||
|
||||
Ver [`STACK.md`](STACK.md) v2.2 (fonte da verdade técnica) e [`CODING-RULES.md`](CODING-RULES.md) v2.0 (invariantes + pegadinhas 🔥).
|
||||
|
||||
| Camada | Tecnologia |
|
||||
|---|---|
|
||||
| Runtime | Node 24 LTS · pnpm 11.1 · TypeScript 5.9 |
|
||||
| Monorepo | Nx 22.7 |
|
||||
| Backend | NestJS 11 (CJS) · Prisma 7 · PostgreSQL 18 · BullMQ |
|
||||
| Frontend | React 19 · Vite 8 · Ant Design 6.4 · TanStack Query/Router · Zustand |
|
||||
| Multi-tenancy | BD-por-workspace (ADR 0006) |
|
||||
| Infra | Proxmox on-prem BR (ADR 0004) · Docker Compose · Cloudflare |
|
||||
|
||||
---
|
||||
|
||||
## Quickstart (dev local)
|
||||
|
||||
```bash
|
||||
# Pré-requisitos: Node 24, pnpm 11.1 (via corepack), Docker
|
||||
|
||||
# 1. Instalar deps
|
||||
pnpm install
|
||||
|
||||
# 2. Copiar template de env
|
||||
cp .env.example .env
|
||||
|
||||
# 3. Subir stack de dev (Postgres, Valkey, MinIO, Mailpit)
|
||||
pnpm dev:up
|
||||
|
||||
# 4. Rodar api (Nest 11) — porta 3000
|
||||
pnpm dev:api
|
||||
|
||||
# 5. Em outro terminal, rodar web (Vite + React 19) — porta 4200
|
||||
pnpm dev:web
|
||||
```
|
||||
|
||||
**URLs locais:**
|
||||
- Web app: http://localhost:4200
|
||||
- API: http://localhost:3000
|
||||
- MinIO console: http://localhost:9001 (login `sar_minio_admin` / `sar_minio_dev_password`)
|
||||
- Mailpit (emails de teste): http://localhost:8025
|
||||
|
||||
---
|
||||
|
||||
## Estrutura do monorepo
|
||||
|
||||
```
|
||||
apps/
|
||||
├── api/ # NestJS HTTP — monólito modular por domínio
|
||||
├── api-e2e/ # E2E tests da API (Jest)
|
||||
├── web/ # SPA React + Vite + AntD
|
||||
└── web-e2e/ # E2E tests do frontend (Playwright)
|
||||
|
||||
libs/
|
||||
└── shared/
|
||||
└── api-interface/ # Zod schemas + tipos compartilhados api ↔ web
|
||||
|
||||
design-artifacts/ # WDS — Phase 1/2/3 docs (Brief, Trigger Map, Scenarios)
|
||||
_references/ # Logos, mockups legados, materiais
|
||||
scripts/ # SQL init, deploy scripts
|
||||
docs/ # Docs do projeto (ADRs futuras)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Scripts úteis
|
||||
|
||||
```bash
|
||||
pnpm build # Build de todos os projetos
|
||||
pnpm lint # ESLint em tudo
|
||||
pnpm test # Unit tests em tudo
|
||||
pnpm graph # Visualiza grafo de dependências Nx
|
||||
pnpm affected -- -t build # Só builda o que foi afetado pela mudança
|
||||
pnpm format # Prettier write
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Próximos passos do setup
|
||||
|
||||
- [ ] Provisionar VMs Proxmox para staging (Postgres, Valkey, MinIO, master-login, Vault)
|
||||
- [ ] Configurar Gitea Actions (`.gitea/workflows/`) — CI básico (lint + test + build)
|
||||
- [ ] Implementar master-login (IdP OAuth2/OIDC) — ADR 0005
|
||||
- [ ] Implementar multi-tenant BD-por-workspace — ADR 0006
|
||||
- [ ] Primeiro cockpit: Rafael (Rep) PWA mobile-first
|
||||
|
||||
---
|
||||
|
||||
_Powered by JCS Sistemas · Stack canon JCS v2.2_
|
||||
Reference in New Issue
Block a user