SaaS multi-tenant enterprise-grade para gestão de pequenos negócios, creches e inventário.
| Camada | Tecnologia |
|---|---|
| Runtime | Node.js 22+ |
| Framework | Express 5 |
| ORM | Prisma 7 |
| Banco | PostgreSQL 16 |
| Auth | JWT + bcrypt (refresh token com rotação) |
| Validação | Zod 4 |
| Testes | Vitest |
| Frontend | React 19 + Vite 6 + Tailwind v4 |
src/
├── config/ # Env, auth
├── lib/ # Prisma, DI Container, Winston, Audit
├── middlewares/ # JWT, tenant, RBAC, validation, error handler
├── modules/ # 10 domínios (Controller → Service → Repository)
│ ├── auth/ # Register, login, refresh, logout
│ ├── customers/ # CRUD + search
│ ├── children/ # CRUD + dados médicos
│ ├── appointments/ # CRUD + workflow de status
│ ├── financial/ # Lançamentos + summary
│ ├── dashboard/ # Métricas do negócio
│ ├── reports/ # Financeiro, agendamentos, comparativo
│ ├── inventory/ # Itens com categorias
│ ├── employees/ # Funcionários com roles
│ └── notifications/ # Fila + status
├── shared/ # Errors, permissions, constants, pagination
└── app.ts / server.ts
Todos os módulos seguem Controller → Service → Repository com injeção de dependência, DTOs, Mappers e schemas Zod.
Dashboard com métricas do negócio
Gestão de clientes com paginação
Demonstração do fluxo de login e navegação
- Multi-tenancy — Isolamento total via
tenantIdem todas queries - RBAC — Permissões por ação (CREATE, READ, UPDATE, DELETE) com roles ADMIN/STAFF
- Refresh Token — JWT com rotação, revogação e logout-all
- Auditoria — Change Data Capture automático via Prisma
$extends - Soft Delete — Nenhum dado perdido (
deletedAtem todas entidades) - Segurança — Helmet + CORS + Rate-limit + bcrypt (12 rounds)
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /api/auth/register |
Register + tenant |
| POST | /api/auth/login |
Login (JWT + refresh) |
| POST | /api/auth/refresh |
Renovar access token |
| POST | /api/auth/logout |
Revogar refresh token |
| POST | /api/auth/logout-all |
Revogar todos os tokens |
| GET/POST/PATCH/DELETE | /api/customers |
CRUD clientes |
| GET/POST/PATCH/DELETE | /api/children |
CRUD crianças |
| GET/POST/PATCH/DELETE | /api/appointments |
CRUD agendamentos |
| GET/POST/DELETE | /api/financial |
CRUD financeiro |
| GET/POST/PATCH/DELETE | /api/inventory |
CRUD inventário |
| GET/POST/PATCH/DELETE | /api/employees |
CRUD funcionários |
| GET | /api/dashboard |
Métricas |
| GET | /api/reports/* |
Relatórios |
| GET | /api/health |
Health check |
Documentação interativa em http://localhost:3000/api-docs.
git clone https://github.com/RFernandes10/Business-Manager-SaaS-.git
cd Business-Manager-SaaS-
npm install
cp .env.example .env
npx prisma migrate dev
npx prisma generate
npm run devRequires Node.js 22+ and PostgreSQL 16+.
npm run prisma:seedPopula o banco com tenant, admin, clientes, crianças, funcionários, agendamentos, financeiro e inventário.
Login: [email protected] / Teste1234
npm test # Unitários + Integração
npm run test:coverage # Com cobertura41 testes (34 unitários + 7 integração):
- Unitários: auth service, customer service, pagination, date-filter, AppError
- Integração (superTest + PostgreSQL): health, register, login, refresh, logout
MIT — veja LICENSE.