# Sinka Plataforma SaaS multi-tenant de inteligência logística (desafio técnico). **Stack:** NestJS · Next.js · TypeScript · MySQL · Redis · Docker Não há PHP neste repositório. ## Estrutura ``` api/ NestJS (porta 3001) web/ Next.js (porta 3000) docs/ Arquitetura e decisões ``` Leia `RULES.md`, `docs/DECISIONS.md` e `docs/TESTING.md` antes de alterar código. Isolamento: **um database MySQL por empresa** (`sinka_platform` + `sinka_t_`). ## Subir local ```bash docker compose up -d cp .env.example .env cd api && npm install && npm run prisma:setup && npm run start:dev cd web && npm run dev ``` - API: http://localhost:3001/api/health - Web: http://localhost:3000 - Login empresa demo: http://localhost:3000/demo/login - Sistema demo: http://localhost:3000/demo - Admin do produto: http://localhost:3000/admin/login ### Contas de demonstração | Área | Caminho | E-mail | Senha | | --- | --- | --- | --- | | Produto | `/admin` | tina.r@example.net | SinkaPlatform!1 | | Demo | `/demo` | xena.w@example.org | SinkaAdmin!1 | | Demo | `/demo` | james.b@example.com | SinkaManager!1 | | Demo | `/demo` | ursula.b@example.com | SinkaOperador!1 | Papéis na empresa: Administrador, Manager, Operador. ## Testes ```bash npm test npm run test:cov ``` Unidade Jest na API (frete, papéis, tenancy, chat, dashboard). A cobertura olha a regra de negócio, não o fio Nest/Prisma. Detalhes em `docs/TESTING.md`. ## Etapa atual Auth (JWT + refresh), área restrita, papéis, multi-tenant (banco por empresa), clientes, transportadoras e simulação de frete (ViaCEP + Nominatim).