API Rest de autenticação de usuários desenvolvida em Node.js para aplicar conceitos de Test Driven Development (TDD) e SOLID. E aplicar os conceitos de autenticação utilizando tokens e praticar com algumas tecnologias, como: MongoDB, Docker, Nodemailer, Swagger
- Cadastro do usuário
- Autenticação
- Enviar email de redefinição da senha
- Recuperação de senha
- Enviar código de confirmação
- Ativar conta
Para mais detalhes de requisitos e regras de negócio, veja a documentação.
- Node.js - v12.22.10
- Typescript (Tipagem para Javascript)
- Express
- MongoDB
- jsonwebtokens
- Jest (Teste automatizados)
- Docker
- lint-staged
- husky
- Eslint
- validator
- fast-glob
- Nodemailer
- Handlebars Template
- Swagger
Ao executar a aplicação, é possível visualizar a documentação das rotas em localhost:3000/api-docs.
Antes de tudo, vai precisar ter instalado em sua máquina as ferramentas:
Recomendado utilização de Docker:
Para instalação do Docker: https://docs.docker.com/get-docker/
# Jwt
SECRET = secret to use in jwt
EXPIRES_IN = 1d # example
# MongoDB
MONGO_URL = mongodb://username:password@localhost:27017/?authMechanism=DEFAULT # example
MONGO_USER = username # example
MONGO_PASS = password # example
# Mail Service
SMTP_HOST =
SMTP_PORT =
SMTP_USER =
SMTP_PASS =
-
Para gerar SECRET para JsonWebToken:
- Pega uma chave em Random Keygen
- Coloque em SECRET
-
EXPIRES_IN é o tempo em que o token JWT se expira
- 10h para 10 horas
- 20d para 20 dias
- 60s para 60 segundos
-
MONGO_URL é a URI do MongoDB
- Utilize os paramêtros usado em MONGO_USER e MONGO_PASS
-
MONG0_USER é nome do administrador do banco de dados
-
MONGO_PASS é a senha do administrador do banco de dados
-
SMTP é sobre o serviço de email
- Para desenvolvimento, eu recomendo utilizar Ethereal
- Para construir os containers:
npm run up- Para destruir os containers
npm run downObs.: A utilização de containers é opcional, mas recomendado
- Para executar a aplicação sem os containers, configure o ambiente de desenvolvimento (arquivo .env) com o seu MongoDB. E prossiga seguindo a documentação.
- Clone o repositório
git clone https://github.com/matheusinit/authetication-api.git- Acesse a pasta do projeto
cd authentication-api- Instale as dependências
npm install- Execute a aplicação em desenvolvimento
npm run devO servidor estará rodando por padrão em http://localhost:3000
- Executar testes unitários
npm run test:unit- Executar testes de integração
npm run test:integration- Executar todos os testes
npm run testFeito com ❤️ por Matheus Oliveira