Skip to content

Um serviço de autenticação robusto e escalável desenvolvido como projeto de aprendizado de micro-serviços.

Notifications You must be signed in to change notification settings

KaykyOne/auth-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔐 Auth Service

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.

📚 Objetivo de Aprendizado

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

🚀 Stack Tecnológico

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

📁 Estrutura do Projeto

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

🛠️ Instalação & Setup

Pré-requisitos

  • Node.js 18+
  • PostgreSQL 12+
  • npm ou yarn

Passos

  1. Clone e instale dependências
npm install
  1. Configure as variáveis de ambiente
cp .env.example .env
# Edite o arquivo .env com suas credenciais
  1. Execute as migrations do Prisma
npm run prisma:migrate
  1. Inicie o servidor em desenvolvimento
npm run dev

O servidor estará disponível em http://localhost:3000

📝 Scripts Disponíveis

# 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

🔑 Funcionalidades Principais

Autenticação

  • Login com email e senha
  • Registro de novos usuários
  • Geração de tokens JWT
  • Refresh tokens

OTP (One-Time Password)

  • Envio de códigos via SMS
  • Validação de OTP
  • Expiração automática de códigos

Segurança

  • Hash de senhas com bcrypt
  • Rate limiting por IP
  • Tratamento de erros global
  • Validação de entrada

🧪 Padrões Implementados

1. Service Layer Pattern

Separação clara entre controllers e lógica de negócio

Controller → Service → Repository (Prisma)

2. Dependency Injection

Injeção de dependências para melhor testabilidade

3. Middleware Pipeline

Stack de middlewares para autenticação, rate limiting e error handling

4. Error Handling

Middleware centralizado para tratamento de erros

📚 O Que Estou Aprendendo

  • 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

🤝 Próximas Etapas

  1. Implementar testes (Jest, Supertest)
  2. Adicionar validação com Zod/Joi
  3. Implementar caching com Redis
  4. Adicionar logging estruturado
  5. Documentar API com Swagger/OpenAPI
  6. Containerizar com Docker
  7. Implementar CI/CD

📖 Recursos & Referências

📄 Licença

MIT - Sinta-se livre para usar este projeto como referência


Autor: Desenvolvido como projeto educacional
Data de Criação: 2026
Status: Em Desenvolvimento 🚧

About

Um serviço de autenticação robusto e escalável desenvolvido como projeto de aprendizado de micro-serviços.

Topics

Resources

Stars

Watchers

Forks