O projeto valoriza consiste em valorizar o trabalho do seu colega dando o feedback do trabalho do seu colega, mais detalhadamente, o projeto possui um sistema de autenticação com JWT onde o usuário autenticado pode dar o feedback para outro usuário (que esteja cadastrado), é uma forma simples, mas muito interessante para animar o coleguinha :)
- Typescript
- Express
- Typeorm
- Insomnia
- Json web tokens
- MySQL
- Docker (milha extra)
Para facilitar a vida de quem vai executar ou consultar esse projeto em sua máquina para adquirir conhecimento ou referências eu criei um container Docker MySQL o projeto já esta totalmente configurado, bastando assim instalar o docker para executar o projeto. Dito isso pretendo adicionar a funcionalidade de recuperação de senha via email, mas agora tenho outras prioridades :( ... Caso esteja interessado nessa funcionalidade eu desenvolvi em outro projeto meu Project-advisor-3000 espero que goste.
Para colocar o projeto para rodar, basta seguir o passo a passo fornecido logo abaixo:
- 1º: Tenha o NODE instalado na sua máquina;
- 2º: Faça o download deste projeto;
- 3º: Com o terminal/prompt abra o diretório deste projeto e execute o comando
npm run
ouyarn
; - 4º: Esta etapa é referente ao banco de dados, existem duas formas, com container docker (passo 5) ou sem (passo 6).
- 5º: Para executar o banco de dados com o docker, tenha o docker instalado em sua máquina e execute o comando
yarn db-docker
; - 6º: Caso queria conectar a algum outro banco MySQL configure o arquivo
ormconfig.json
na raiz do projeto; - 7º: Com o banco de dados configurados, basta executar o comando
yarn typeorm migration:run
; - 8º: Agora para executar o servidor basta utilizar o comando
yarn dev
; - 9º: Espero que aproveite o projeto :)
Para testar as rotas da aplicação basta utilizar um aplicativo de requisições http, eu recomendo o insomnia inclusive deixei
um arquivo insomnia.json
para importar as requisições e já iniciar os testes.
Em alguns casos, você receberá a resposta unathorized
ou não autorizado
isso acontece porquê é necessária a autenticação no sistema. Para adquirir
a autenticação, basta utilizar a rota /auth
informando um JSON: {"email": "[email protected]", "password": "yourpassword"}
a resposta da rota
será um token, copie esse token e na rota onde você recebeu a mensagem de autorização vá na aba AUTH
escolha Bearer Token e no campo Token cole o mesmo.
ROTA | TIPO | AUTENTICAÇÃO | A ENVIAR | A RECEBER |
---|---|---|---|---|
/users | POST | NÃO |
{ "name": string, "email": string, "admin": boolean, "password": string } |
{ "id": string | uuid(string), "name": string, "email": string, "admin": boolean, "password": string, "created_at": string | Date, "updated_at": string | Date } |
/users | GET | SIM | {} |
[
{ "id": string | uuid(string), "name": string, "email": string, "admin": boolean, "password": string, "created_at": string | Date, "updated_at": string | Date }, ... ] |
/tags | POST | NÃO |
{ "name": string, } |
{ "id": string | uuid(string), "name": string, "created_at": string | Date, "updated_at": string | Date } |
/tags | GET | NÃO | {} |
[
{ "id": string | uuid(string), "name": string, "created_at": string | Date, "updated_at": string | Date, "tag_custom": string }, ... ] |
/compliments | POST | SIM |
{ "tag_id": string, "user_receiver": string, "message": string } |
{ "id": string | uuid(string), "user_sender": string, "user_receiver": string, "tag_id": string, "message": string, "created_at": string | Date, } |
/users/compliments/receive | GET | SIM | {} |
[
{ "id": string | uuid(string), "user_sender": string, "user_receiver": string, "tag_id": string, "message": string, "created_at": string | Date, } ... ] |
/users/compliments/send | GET | SIM | {} |
[
{ "id": string | uuid(string), "user_sender": string, "user_receiver": string, "tag_id": string, "message": string, "created_at": string | Date, } ... ] |
/auth | POST | NÃO |
{ "email": string, "password": string } |
string | jwt token |
Este projeto esta sob a MIT license para mais detalhes.
Siga @EddyPBR nas redes 😉
Siga a @Rocketeat nas redes