35 lines
1.3 KiB
Markdown
35 lines
1.3 KiB
Markdown
# RULES — Sinka
|
|
|
|
Stack obrigatório do desafio. **Não usar PHP.** Não reintroduzir Laravel, Blade, `public/index.php` nem pasta `app/` no estilo PHP.
|
|
|
|
## Stack
|
|
|
|
- Backend: Node.js + **NestJS** + TypeScript (`api/`)
|
|
- Frontend: **Next.js** + TypeScript (`web/`)
|
|
- Banco: **MySQL** — `sinka_platform` + um database por empresa
|
|
- Infra: **Docker**, **Docker Compose**, **Redis**
|
|
|
|
## Pastas
|
|
|
|
| Pasta | Responsabilidade |
|
|
| --- | --- |
|
|
| `api/` | NestJS: módulos, casos de uso, Prisma, filas |
|
|
| `web/` | Next.js App Router: landing + área autenticada |
|
|
| `docs/` | Arquitetura e decisões |
|
|
| `.cursor/rules/` | Regras do agente |
|
|
|
|
## Como evoluir uma feature
|
|
|
|
1. Modelar no Prisma tenant (`api/prisma/tenant`) se for dado da empresa; no platform se for catálogo
|
|
2. Módulo NestJS: controller → use case/service → DTO + validação
|
|
3. Abrir o PrismaClient do tenant do JWT — nunca consultar outro database
|
|
4. Tela em `web/src/app` (App Router)
|
|
5. Teste no módulo da API quando a regra for importante
|
|
|
|
## Não fazer
|
|
|
|
- PHP, Composer, views `.php`, PDO
|
|
- Framework PHP, mesmo “só para prototipar”
|
|
- Lógica de negócio em controller inchado ou em componente React
|
|
- Ler/escrever dado de empresa no banco da plataforma ou no database de outro tenant
|