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.
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.
-
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 !
-
1 Primeiro de tudo, é necessário clonar o repositório, dentro da raiz você verá dois arquivos,
ExampleTestEnv
eExampleEnv
, é 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/
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
-
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 pastamigrations
para fora dedatabase
e rode os testes novamente.