You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
API de autenticação e gestão de sessão construída com foco em padrões de engenharia de software para produção: arquitetura em camadas, rastreabilidade de requisições, documentação OpenAPI, testes automatizados e CI com banco/redis reais.
5
+
API de autenticação e gestão de sessão com foco em robustez de backend: arquitetura em camadas, controle de sessão com rotação de token, rate limiting com Redis, documentação OpenAPI e pipeline de qualidade com testes automatizados.
6
6
7
-
## Visão do projeto
7
+
## Objetivo
8
8
9
-
Este repositório foi evoluído como base de estudo e portfólio técnico para demonstrar decisões de backend além do CRUD.
9
+
Este projeto foi construído como laboratório de engenharia aplicada para portfólio, com foco em decisões técnicas próximas de ambiente real de produção.
10
10
11
-
Escopo principal:
11
+
O escopo principal cobre:
12
12
13
13
- autenticação com `accessToken` + `refreshToken` com rotação;
14
14
- revogação de sessão por token e por usuário;
15
-
- validação e tratamento de erros consistentes;
16
-
- observabilidade mínima para operação real;
15
+
- validação de entrada e tratamento de erros consistente;
16
+
- observabilidade mínima para operação;
17
17
- qualidade contínua com lint, cobertura e CI.
18
18
19
19
## Snapshot de maturidade (fev/2026)
@@ -30,10 +30,10 @@ Escopo principal:
30
30
- Express 5
31
31
- TypeScript 5.9
32
32
- Prisma 7 + PostgreSQL
33
-
- Redis (ioredis)
33
+
- Redis (`ioredis`)
34
34
- JWT (`jsonwebtoken`) + `bcryptjs`
35
-
- Zod para validação de payload
36
-
- Pino para logging estruturado
35
+
- Zod (validação de payload)
36
+
- Pino (logging estruturado)
37
37
- Vitest + Jest + Supertest
38
38
- Biome (lint/format)
39
39
- Swagger UI + swagger-jsdoc
@@ -43,51 +43,36 @@ Escopo principal:
43
43
Padrão em camadas:
44
44
45
45
-`routes`: contrato HTTP e composição de middlewares
46
-
-`controllers`: orquestração de entrada/saída
46
+
-`controllers`: orquestração de request/response
47
47
-`services`: regras de negócio
48
48
-`repositories`: persistência e consultas
49
49
50
50
Middlewares críticos:
51
51
52
-
-`requestId`: correlação de requisição
52
+
-`requestId`: correlação por requisição
53
53
-`logger`: log estruturado com contexto
54
54
-`validate`: validação de entrada com Zod
55
55
-`authMiddleware`: proteção de rotas com JWT
56
-
-`rateLimiter`: proteção anti-abuso com Redis + fallback memória
57
-
-`errorHandler`: resposta de erro unificada
56
+
-`rateLimiter`: proteção anti-abuso com Redis + fallback em memória
57
+
-`errorHandler`: normalização de respostas de erro
58
58
59
-
## Fluxo de autenticação
59
+
## Fluxo de autenticação e sessão
60
60
61
-
1.`POST /auth/register` cria usuário com senha hasheada.
62
-
2.`POST /auth/login` valida credenciais e retorna`accessToken` + `refreshToken`.
63
-
3.`POST /auth/refresh` valida refresh token, revoga o antigo e emite novo par.
64
-
4.`POST /auth/logout` revoga refresh token atual.
65
-
5.`POST /auth/logout-session` e `POST /auth/logout-all` encerram sessões específicas ou todas.
61
+
1.`POST /auth/register`: cria usuário com senha hasheada.
62
+
2.`POST /auth/login`: valida credenciais e emite`accessToken` + `refreshToken`.
63
+
3.`POST /auth/refresh`: valida refresh token, revoga o token anterior e gera novo par.
64
+
4.`POST /auth/logout`: revoga a sessão atual.
65
+
5.`POST /auth/logout-session` e `POST /auth/logout-all`: encerram sessões específicas ou todas.
66
66
67
67
## Segurança e confiabilidade implementadas
68
68
69
69
- refresh token persistido com hash (`tokenHash`) no banco
70
70
- rotação por `jti` com revogação explícita
71
-
- validação de segredo JWT no startup (fail fast)
71
+
- validação de `JWT_SECRET` no startup (fail fast)
72
72
- tratamento centralizado de erro com `AppError`
73
-
- rate limit em endpoints sensíveis
74
-
- logs de aplicação ajustados para reduzir ruído em ambiente de teste
75
-
- encerramento adequado de conexões de teste para evitar open handles
76
-
77
-
## Progresso técnico recente
78
-
79
-
Últimas entregas relevantes em `main`:
80
-
81
-
-[#14](https://github.com/john-dalmolin/auth-api-node/pull/14) estabilidade de runtime de testes (teardown Prisma)
82
-
-[#15](https://github.com/john-dalmolin/auth-api-node/pull/15) aumento de branch coverage em fluxos de auth/rate limiter
83
-
-[#16](https://github.com/john-dalmolin/auth-api-node/pull/16) redução de ruído de logs em execução de teste
84
-
-[#18](https://github.com/john-dalmolin/auth-api-node/pull/18) cobertura completa de branches em `src/config/prisma.ts`
85
-
-[#19](https://github.com/john-dalmolin/auth-api-node/pull/19) cobertura completa de branches em `src/logger.ts`
86
-
-[#20](https://github.com/john-dalmolin/auth-api-node/pull/20) cobertura completa de branches em `validate.ts` e `errorHandler.ts`
87
-
88
-
## Backlog atual
89
-
90
-
As próximas tasks técnicas estão em `to-do.txt`, separando entregas concluídas de próximos incrementos de engenharia.
73
+
- rate limit para endpoints sensíveis
74
+
- redução de ruído em logs de teste
75
+
- teardown de recursos de teste para evitar open handles
91
76
92
77
## Setup local
93
78
@@ -128,6 +113,7 @@ Para testes, usar `tests/.env.test`.
128
113
-`npm run format`: valida formatação
129
114
-`npm test`: suíte principal (Vitest)
130
115
-`npm run test:coverage:jest`: cobertura com Jest
116
+
-`npm run test:coverage:vitest`: cobertura com Vitest
131
117
-`npm run typecheck`: verificação de tipos
132
118
133
119
## Validação rápida
@@ -138,7 +124,6 @@ npm run test:coverage:jest
138
124
npx jest --config jest.config.cjs --runInBand --detectOpenHandles --openHandlesTimeout=5000
0 commit comments