armando 67589e9ec2 a
2026-09-16 01:33:44 -03:00
2026-09-15 21:10:42 -03:00
a
2026-09-16 01:33:44 -03:00
2026-09-15 21:10:42 -03:00
2026-09-15 22:00:43 -03:00
2026-09-15 22:00:43 -03:00
web @ a54be2fbb8
2026-09-15 21:10:42 -03:00
a
2026-09-16 01:33:44 -03:00
a
2026-09-16 01:33:44 -03:00
2026-09-15 21:10:42 -03:00
a
2026-09-16 01:33:44 -03:00
a
2026-09-16 01:33:44 -03:00
a
2026-09-16 01:33:44 -03:00
a
2026-09-16 01:33:44 -03:00
2026-09-15 21:10:42 -03:00

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

Description
No description provided
Readme 19 MiB
Languages
TypeScript 94.7%
CSS 4%
JavaScript 0.9%
Dockerfile 0.4%