/trybesmith

Projeto idealizado pela escola @Tryber e desenvolvido por mim. É uma API REST que faz consultadas diretamente em um banco de dados relacional (MySQL). Utilizei Node.js + Express.js + TypeScript para desenvolver (e autenticação com JWT).

Primary LanguageTypeScript

Trybesmith

Trybesmith é uma API Rest que foi criada com o intuito de entender o funcionamento da autenticação do usuário através do token com o JWT (JSON Web Token).

Foi construída com o JavaScript (Node.js) junto ao Express.js e Typescript para validação de tipos estáticos.

Sua base de dados foi toda construída em MySQL com a comunicação feita diretamente por query's SQL no código (hard-coded).

Como eu faço para executar este projeto?

Primeiro faça o clone e navegue até a pasta do projeto:

git clone git@github.com:Adolligit/trybesmith.git && cd trybesmith/

Instalação

🚨 É crucial que você já tenha em sua máquina as ferramentas citadas em cada tipo de instalação, com a correta versão ou superior.

Escolha uma das instalações a seguir:

Instalar com Docker 🐳 Requisitos
Você deve possuir as seguintes ferramentas:
  • Docker: v20.1
  • Docker Compose: v1.29
  1. Crie e inicie os contêiners:
docker compose up -d
  1. Entre no contêiner da aplicação:
docker exec -it trybesmith bash

Instalar localmente 💻 Requisitos
Você deve possuir as seguintes ferramentas:
  • Node.js: v16
  • npm: v8.19
  • MySQL: v8
  1. Renomeie o arquivo .env.example, que esta na pasta raiz, para .env.
  2. No arquivo .env, informe seus dados de acesso ao banco de dados MySQL nas chaves: MYSQL_USER e MYSQL_PASSWORD.
  3. Altere o valor da chave JWT_SECRET inserindo uma senha que será utilizada para criar o token de autenticação (lembre-se de salvar o arquivo .env).

Execução

Instalar as dependências do projeto:

npm install

Criar as tabelas no banco de dados MySQL:

npm run migration

Popular o banco de dados:

npm run seed

Iniciar o projeto:

npm start

Inciar o projeto em modo de desenvolvimento (nodemon):

npm run dev

Executar o ESLint para verificar os erros do código estático:

npm run lint

Recriar o banco de dados já populado:

npm run reset

Quais são as rotas desta API?

Deixei uma documentação feita com Swagger UI para facilitar e lhe orientar no uso da API. Você pode acessa-la em http://127.0.0.1:3000/v1/docs/. gif de demonstração de uso

Linguagens e ferramentas:

NodeJs NodeJs Express TypeScript NodeJs NodeJs

Agradecimento

Com este projeto, pude entender como funciona a autenticação de usuário através da utilização do JWT.

Agradeço muito a @tryber pela idealização deste projeto, pois para mim, toda teoria é mais fácil entender na prática.