O objetivo do projeto foi desenvolver uma API RESTful para autenticação de usuários, que permita operações de cadastro (sign up), autenticação (sign in) e recuperação de informações do usuário.
- Framework: Express.
npm start
- Segurança: JWT, BCrypt, Joi.
- Padronização: ESLint.
npm run lint
- Testagem: Jest, SuperTest.
npm run test
- Persistência de dados: Idealmente seria feita com um banco de dados na nuvem e conectado ao server com variáveis de ambiente, mas, como o tempo é curto e pela simplicidade, fiz um banco de dados em memória, onde as informações são mantidas apenas durante a execução da aplicação.
Nota: Logo logo irei disponibilizar e linkar nesse projeto uma simples web page utilizando desse backend (com o objetivo de fornecer uma testagem mais prática dos endpoints).
- 📂 src
- 📒 auth.js
- 📒 db.js
- 📒 schemas.js
- 📒 server.js
- 📂 tests
- 📒 server.test.js
- 📗 .eslint.json
- 📙 .gitignore
- 📗 jest.config.mjs
- 📗 package-lock.json
- 📗 package.json
- 📘 README.md
- Clone ou baixe esse repositório.
- Instale as dependências.
npm install
- Inicie a aplicação.
npm run dev
ounpm start
- Utilize os endpoints listados na seção abaixo.
- Para iniciar a suíte de testes use
npm run test
.
Alternativa: Com alguma ferramenta que realize requisições HTTP, você também pode testar os endpoints no link de deploy abaixo.
Deploy: https://escribo-2-api.onrender.com
Obs: Como é um deploy gratuito, a execução é lenta e a permanência dos dados na sessão não pode ser garantida. A aplicação é regularmente reiniciada e os dados resetados. Para melhor experiência siga os passos acima.
-
📘 [POST]
/signup
Cadastro- Input
{ "nome": "string", "email": "string", "senha": "string", "telefones": [{ "numero": "123456789", "ddd": "12" }] }
- Output
{ "id": "number", "data_criacao": "date", "data_atualizacao": "date", "ultimo_login": "", "token": "" }
- Input
-
📘 [POST]
/signin
Login- Input
{ "email": "string", "senha": "string" }
- Output
{ "id": "number", "data_criacao": "date", "data_atualizacao": "date", "ultimo_login": "date", "token": "string" // JWT Token }
- Input
-
📒 [GET]
/user
Dados- Header
{ "Authorization": "Bearer {token}" }
- Output
{ "nome": "string", "email": "string", "senha": "string", // Encrypted "telefones": [{ "numero": "123456789", "ddd": "12" }], "id": "number", "data_criacao": "date", "data_atualizacao": "date", "ultimo_login": "date", "token": "string" // JWT Token }
- Header