To Do Postgres - Back-end

Sobre o projeto

Esse repositório trata-se do back-end do projeto: todoPostgres-frontend.

Consiste em uma API Restful construida com NodeJS + Express, Prisma, Postgres e Docker e é responsável por enviar e receber dados do usuário de forma autenticada via JWT.

Tecnologias

  • NodeJS
    • Express
    • Cors
    • Bcrypt
    • Cookie-parser
    • JsonWebToken - JWT Token
  • Prisma
  • Postgres
  • Docker

Funcionalidades

USUÁRIOS:

  • Criar um novo usuário com email ainda não cadastrado
  • Login de usuário registrado no banco de dados
  • Logout do usuário

LISTA DE TAREFAS:

  • Criar uma nova tarefa na conta do usuário
  • Ler as tarefas criadas na conta do usuário
  • Renomear a tarefa adicionada
  • Marcar ou desmarcar a tarefa como concluida
  • Deletar tarefa cadastrada

Como rodar o projeto

Pré-requisitos

Para executar esse projeto, em ambiente de desenvolvimento, é necessário ter instalado na máquina o NodeJS e o Docker.

Link para instalar o NodeJS: link

Link para instalar o Docker: link

Instalação

Clonar o repositório

git clone https://github.com/br-gabriel/todoPostgres-backend
cd todoPostgres-backend

Instalação das dependências

yarn

ou

npm install

Variáveis de ambiente

Para a aplicação funcionar é preciso criar o arquivo .env, na raiz do projeto, e adicionar as seguintes variáveis, com valores do mesmo tipo descrito no exemplo abaixo.

Exemplo:

DATABASE_USER="nomeDoUsuario"             //string
DATABASE_PASSWORD="senhaDoBancoDeDados"   //string
DATABASE_NAME="nomeDoBancoDeDados"        //string
DATABASE_URL="postgresql://nomeDoUsuario:senhaDoBancoDeDados@localhost:5432/nomeDoBancoDeDados" //string

ORIGIN_URL="http://localhost:3000" //string - rota onde o frontend irá rodar

SECRET="962012d09b8170d912f0669f6d7d9d07" //string
PORT="3232" //string com 4 números
  • Os valores dentro do DATABASE_URL devem ser os mesmos contidos nas variáveis acima, cada um em seu respectivo local descrito.
  • O valor da variável SECRET consiste em uma string com valor aleatório.

Prisma

Após seguir os passos acima, rodamos o seguinte comando para configurar o banco de dados conforme descrito no schema do prisma.

npx prisma migrate dev

Token JWT

O token está definido para expirar após 7 dias do login do usuário, caso queira testar a autenticação, em um tempo diferente, acesse o arquivo: src/routes/user.routes.js

// Rota - /user/signin

const token = await jwt.sign(
     {
       id: userExists.id,
     },
     secret,
     {expiresIn: '7d'} //Altere aqui para o valor desejado [1m, 1h, 1d]
);

Docker

  1. Para a aplicação funcionar será necessário instalar o docker e o docker-compose, link do download
  2. Abrir o docker
  3. Usar o comando no terminal:
docker-compose up --build

Rodando o projeto

Após ter todas as dependências instaladas, as variáveis de ambiente definidas e com o docker rodando, você pode rodar a aplicação com o seguinte comando:

yarn dev

ou

npm run dev

Rotas

Rotas de usuário

  • POST - /user/signup - Criação de usuário
  • POST - /user/signin - Login de usuário
  • GET - /user/signout - Logout

Rotas de tarefas

  • POST - /user/todos - Criação de tarefa
  • GET - /user/todos - Ler as tarefas
  • PUT - /user/todos - Atualiza nome e status da tarefa
  • DELETE - /user/todos/:todoid - Deleta a tarefa selecionada