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

2.3 KiB

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:

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.

cp .env.example .env
docker compose --profile full up -d --build

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):

docker compose --profile full down -v --rmi local --remove-orphans
rm -rf /opt/sinka

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

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).