Uma API genérica de autenticação desenvolvida com NestJS, projetada para ser base de autenticação em diferentes aplicações.
Este projeto é uma API de autenticação construída em NestJS, usando TypeScript e pronta para servir como base em qualquer aplicação que precise de:
- Registro de usuários
- Autenticação via JWT
- Documentação Swagger
- Segurança e boas práticas de backend
- NestJS — framework Node.js para aplicações escaláveis.
- Prisma — ORM moderno com tipagem forte.
- SQLite — banco de dados leve (arquivo local
dev.db). - JWT (jsonwebtoken) — autenticação com tokens.
- bcrypt — hash de senhas.
- class-validator / class-transformer — validação de DTOs.
- Swagger — documentação automática da API.
Obs.: você pode trocar o SQLite por Postgres/MySQL depois sem alterar sua camada de domínio; basta ajustar o
DATABASE_URLe regenerar o Prisma.
Clone o repositório:
git clone https://github.com/Lcamargodasilva/generic-api-auth.git
cd seu-repositorioInstale as dependências:
npm installCrie um arquivo .env na raiz do projeto:
# Prisma / Banco de dados
DATABASE_URL="file:./dev.db" # SQLite local
# Autenticação
SECRET_KEY="sua_chave_secreta_super_segura"Se usar Postgres:
DATABASE_URL="postgresql://usuario:senha@localhost:5432/minha_base?schema=public"
npx prisma initIsso cria prisma/schema.prisma e adiciona DATABASE_URL ao .env.
npx prisma generateCrie sua primeira migration com base no schema.prisma:
npx prisma migrate dev --name initSempre que alterar o schema, rode novamente
migrate devpara versionar suas mudanças emprisma/migrations.
npx prisma db seednpx prisma studio# Empurrar o schema sem migration (útil em protótipos)
npx prisma db push
# Resetar o banco (apaga tudo e reaplica migrations)
npx prisma migrate reset
# Ver estado das migrations
npx prisma migrate statusDica: em produção use
npx prisma migrate deploydurante o deploy (aplica migrations já criadas).
npm run start:devnpm run build
npm run start:prodRodar todos os testes unitários:
npm run testRodar testes e2e:
npm run test:e2eGerar relatório de cobertura:
npm run test:cov- Login com e-mail/usuário + senha
- Hash de senha com
bcrypt(saltconfigurável viaBCRYPT_SALT) - JWT assinado com
JWT_SECRETe expiraçãoJWT_EXPIRES_IN - Guards e Decorators para proteger rotas e extrair usuário autenticado
Recomenda-se usar
class-validatornos DTOs delogin/registere aplicar guards globalmente quando fizer sentido.
Neste projeto, o arquivo .env foi REMOVIDO do .gitignore.
Se você for utilizar este repositório em uma aplicação real, atente-se a esse detalhe para evitar o vazamento de informações sensíveis do sistema.
# .env // Não ignorar o .env por padrão neste projeto.env.
Mantenha-o fora do repositório e use variáveis de ambiente nativas do provedor (Docker, Vercel, Heroku, AWS, etc.).