Um serviço de autenticação robusto e escalável desenvolvido como projeto de aprendizado de micro-serviços.
Este projeto é parte de uma jornada educacional para dominar a arquitetura de micro-serviços, padrões de design e boas práticas de desenvolvimento.
Este projeto foi criado para explorar e consolidar conhecimentos sobre:
- ✅ Arquitetura de Micro-serviços - Isolamento de responsabilidades
- ✅ Padrões de Design - MVC, Dependency Injection, Service Layer
- ✅ Autenticação & Autorização - JWT, OTP via SMS
- ✅ Rate Limiting - Proteção contra abuso de requisições
- ✅ Prisma ORM - Migrations e gerenciamento de banco de dados
- ✅ TypeScript - Type Safety e desenvolvimento robusto
- ✅ Express.js - Framework web minimalista e flexível
- ✅ Tratamento de Erros - Middleware de erro global
- ✅ Utilitários - Hash de senhas, manipulação de datas
| Tecnologia | Versão | Propósito |
|---|---|---|
| Node.js | 18+ | Runtime JavaScript |
| TypeScript | 5.0 | Type Safety |
| Express.js | 4.18 | Framework Web |
| Prisma | 5.0 | ORM & Migrations |
| PostgreSQL | 12+ | Banco de Dados |
auth-service/
├─ prisma/
│ ├─ schema.prisma # Schema do banco de dados
│ └─ migrations/ # Histórico de migrations
│
├─ src/
│ ├─ app.ts # Configuração da aplicação Express
│ ├─ server.ts # Inicialização do servidor
│ ├─ prisma.ts # Cliente Prisma singleton
│ │
│ ├─ config/
│ │ ├─ env.ts # Variáveis de ambiente
│ │ └─ jwt.ts # Configuração JWT
│ │
│ ├─ modules/
│ │ └─ auth/ # Módulo de autenticação
│ │ ├─ auth.routes.ts # Rotas de autenticação
│ │ ├─ auth.controller.ts
│ │ ├─ auth.service.ts
│ │ ├─ otp.service.ts
│ │ └─ token.service.ts
│ │
│ ├─ middlewares/
│ │ ├─ rateLimit.ts # Middleware de rate limiting
│ │ └─ errorHandler.ts # Tratamento de erros global
│ │
│ ├─ providers/
│ │ └─ sms.provider.ts # Provedor de SMS para OTP
│ │
│ └─ utils/
│ ├─ hash.ts # Utilitários de hash
│ └─ date.ts # Utilitários de data
│
├─ .env # Variáveis de ambiente (não versionar)
├─ package.json
├─ tsconfig.json
└─ README.md
- Node.js 18+
- PostgreSQL 12+
- npm ou yarn
- Clone e instale dependências
npm install- Configure as variáveis de ambiente
cp .env.example .env
# Edite o arquivo .env com suas credenciais- Execute as migrations do Prisma
npm run prisma:migrate- Inicie o servidor em desenvolvimento
npm run devO servidor estará disponível em http://localhost:3000
# Desenvolvimento com hot reload
npm run dev
# Build para produção
npm run build
# Iniciar servidor de produção
npm start
# Executar migrations do Prisma
npm run prisma:migrate
# Abrir Prisma Studio (visualizar dados)
npm run prisma:studio- Login com email e senha
- Registro de novos usuários
- Geração de tokens JWT
- Refresh tokens
- Envio de códigos via SMS
- Validação de OTP
- Expiração automática de códigos
- Hash de senhas com bcrypt
- Rate limiting por IP
- Tratamento de erros global
- Validação de entrada
Separação clara entre controllers e lógica de negócio
Controller → Service → Repository (Prisma)
Injeção de dependências para melhor testabilidade
Stack de middlewares para autenticação, rate limiting e error handling
Middleware centralizado para tratamento de erros
- Fundamentos de micro-serviços
- Isolamento de responsabilidades
- Padrões de design
- Testes unitários
- Testes de integração
- CI/CD Pipeline
- Docker & Containerização
- Kubernetes Orchestration
- Service Mesh
- Implementar testes (Jest, Supertest)
- Adicionar validação com Zod/Joi
- Implementar caching com Redis
- Adicionar logging estruturado
- Documentar API com Swagger/OpenAPI
- Containerizar com Docker
- Implementar CI/CD
- Express.js Documentation
- Prisma ORM
- JWT Best Practices
- Node.js Best Practices
- Micro-services Architecture
MIT - Sinta-se livre para usar este projeto como referência
Autor: Desenvolvido como projeto educacional
Data de Criação: 2026
Status: Em Desenvolvimento 🚧