sinka/README.md
2026-09-16 04:57:09 +00:00

82 lines
2.3 KiB
Markdown

# 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_<slug>`).
## Subir local
Só MySQL + Redis no Docker; API e web no Node da máquina:
```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
```
### Tudo no Docker (demo / VPS)
Sobe MySQL, Redis, API e Next.js. Na VPS só precisa de Docker. Porta pública: **3000**.
```bash
cp .env.example .env
docker compose --profile full up -d --build
```
- App: http://localhost:3000 (ou `http://IP-DA-VPS:3000`)
- API (só na máquina): http://127.0.0.1:3001/api/health
Se a VPS já usa 3306, no `.env`: `SINKA_MYSQL_PORT=3307`. Com HTTPS na frente, `COOKIE_SECURE=true` e `WEB_ORIGIN=https://seu-dominio`.
Para apagar o projeto da VPS (containers, volumes, imagens locais, uploads):
```bash
docker compose --profile full down -v --rmi local --remove-orphans
rm -rf /opt/sinka
```
- 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).