Skip to content

RESTFul API, with user auth JWT, swagger docs, build with NodeJS, TypeScript and Express. TDD based structure

Notifications You must be signed in to change notification settings

alvarosoaress/comandas-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7dd2f99 · Dec 10, 2023
Sep 28, 2023
Nov 22, 2023
Sep 28, 2023
Nov 22, 2023
Aug 27, 2023
Sep 1, 2023
Sep 1, 2023
Sep 12, 2023
Sep 1, 2023
Nov 22, 2023
Nov 22, 2023
Dec 10, 2023
Sep 12, 2023
Sep 20, 2023
Nov 16, 2023
Oct 9, 2023
Sep 28, 2023

Repository files navigation

API RESTFul para o aplicativo React Native - Comandas. Com autenticação de usuário JWT, swagger docs, desenvolvida com NodeJS, TypeScript, Express e com testes Jest. Arquitetura Clean architecture TDD.

🧠 Descrição do Projeto

API RESTful desenvolvida com Node.js, TypeScript, Express, MySQL, DrizzleORM e com testes Jest. Ela inclui autenticação de usuário usando JSON Web Tokens (JWT), documentação Swagger para uma exploração fácil da API e segue uma estrutura baseada no Clean Architecture e desenvolvimento orientado a testes (TDD). Este projeto visa fornecer um backend robusto e escalável para os aplicativos do projeto Comandas.

💻 Tecnologias

TypeScript TsNode ExpressJs MySql NodeJs Swagger JWT Jest Drizzle

✨ Funcionalidades

  • Autenticação de usuários: Autenticação segura de usuário usando JSON Web Tokens (JWT), com refresh token criptografado no banco de dados.

  • Mudanças síncronas: API lida automáticamente com mudanças em cascata que impactam outras informações do banco de dados, por exemplo, quando uma nova avaliação de estabelecimento é submetida, a nota do lugar automaticamente se ajusta a ela.

  • API multi aplicativos: A API foi desenvolvida sendo pensada para funcionar em dois aplicativos distintos que compartilham algumas infomações entre si.

  • Proteção de rotas: Todas rotas que realizam operações de dados de usuário necessitam de um token JWT em sua requisição e ainda contam com proteção baseada em nível de permissão e tipo de usuário, por exemplo, um usuário que tenha seu token JWT assinado como tipo "customer" não pode realizar qualquer tipo de operação em rotas que necessitam o tipo "shop".

  • Documentação Swagger: Toda a API é totalmente documentada usando a biblioteca Swagger, incluindo todos seus endpoints e seus schemas de requisição e de resposta.

  • E muito mais!: Se aventure na documentação para descobrir todos mínimos detalhes que não cabem aqui !

🚀 Executando

  • 1 Primeiro de tudo, é necessário clonar o repositório, dentro da raiz você verá dois arquivos, ExampleTestEnv e ExampleEnv, é necessário abrir e edita-los de acordo com as instruções contidas nos próprios arquivos

  • 2 Agora é necessário instalar as dependências do projeto,

use seu gerenciador de pacotes de preferência.

yarn install
  • 3 Logo após é preciso realizar o migrate da estrutura do Banco de Dados
yarn migrate
  • 4 Pronto! Agora já é possível iniciar o servidor e ler a documentação !
yarn dev

Saída:

Docs available at http://localhost:8000/docs Server is running fine! http://localhost:8000/

🔧 Rodando testes

Esse projeto conta com testes desenvolvidos usando Jest. Eles foram criados para certificar que o código ainda funciona e a regra de negócio ainda está de acordo após alterações.

Cada module da API conta com testes unitários, quais testam a lógica e regra de negócio, e de integração, quais testam a integração do código com o banco de dados.

Os testes de integração criam schemas temporários dentro do seu MySQL para cada module da API, os schemas são automaticamente destruídos ao fim de cada teste.

  • 1 Tenha certeza de que existe um .test.env preenchido corretamente na raíz do projeto.

  • 2 Rode todos os testes

use seu gerenciador de pacotes de preferência.

yarn migrate

🚧 Possíveis problemas

  • Ao final dos testes, pode ser que o Jest não termine automáticamente, tentei muito resolver esse problema de "conexão aberta", porém, não consegui. Para terminar o processo basta executar um CTRL+C no terminal que está rodando os testes.

  • Quando executado os testes, é automaticamente checado se existe alguma migration já realizada, se não houver, a migration é criada.

  • Verifique a pasta database/migrations e veja se há apenas um .sql dentro dela, caso exista mais de um, mova temporariamente a pasta migrations para fora de database e rode os testes novamente.

About

RESTFul API, with user auth JWT, swagger docs, build with NodeJS, TypeScript and Express. TDD based structure

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published