Ditey-Server
Esse é o back-end da aplicação ditey-web.
É uma API RESTful feita com Node.js + Express + PostgreSLQ que recebe os textos e as informações do usuário relacionadas à autenticação, e armazena/fornece esses dados para o cliente através de uma REST API.
O principal propósito dessa API é armazenar os textos do usuário, para que eles não sejam perdidos quando o usuário desligar a máquina ou acessar a aplicação ditey-web de outro dispositivo.
📌 Índice
🚀 Instalação
Pré-requisitos
- Ter Git para clonar o projeto.
- Ter Node.js instalado.
- Ter um gerenciador de pacotes como NPM ou Yarn para instalar as dependências do projeto.
- Ter o PostgreSLQ instalado.
Clonando o Repositório
$ git clone https://github.com/rodrigosuelli/ditey-api.git
$ cd ditey-api
Instalando as dependências
$ npm install
# ou
$ yarn
Criando o banco de dados
Crie um banco de dados com o nome ditey_api
. Para cria-lo você pode usar a cli do PostgreSQL psql
no seu terminal e executar os comandos abaixo. Ou, se preferir, você pode usar um cliente PostgreSQL como PgAdmin e replicar os comandos abaixo na interface gráfica. Ambos PgAdmin e psql que já vem instalado com o PostgreSQL por padrão.
Para usar a cli psql
execute o comando abaixo no terminal. Se estiver usando linux, antes de executar o comando você precisará logar na conta de usuário criada pelo PostgreSQL no procedimento de instalação, para fazer isso rode sudo -i -u postgres
no terminal.
# Ambos username e db padrão são postgres
$ psql --username=postgres --dbname=postgres
Se tudo deu certo você já estará logado no prompt do PostgreSQL psql
, você pode executar os comandos abaixo para criar o banco de dados e as tabelas de texto e usuário:
# Cria o banco de dados ditey_api
$ CREATE DATABASE ditey_api;
# Se conecta ao banco ditey_api
$ \c ditey_api
# Instala a extensão uuid-ossp no banco, necessária para gerar o UUID do usuário e criar a tabela users
$ CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
# Cria tabela de usuários
$ CREATE TABLE users(
id uuid DEFAULT uuid_generate_v4(),
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
PRIMARY KEY(id)
);
# Cria tabela de textos
$ CREATE TABLE texts(
id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
user_id UUID,
FOREIGN KEY (user_id) REFERENCES users(id)
);
Ainda conectado ao banco ditey_api, execute o comando abaixo para listar as tabelas do banco e ter certeza de que elas foram criadas:
# Lista todas as tabelas do banco em que você está conectado
$ \dt
Saia do psql com o comando:
# Sai do psql e volta ao terminal
$ \q
Executando o projeto
Faça uma copia do arquivo .env.example e a renomeie para .env
# Faz uma copia do arquivo .env.example e renomeia para .env
$ cp .env.example .env
No arquivo .env
insira sua senha de usuário do postgres na variável PGPASSWORD
e verifique se as outras variáveis de ambiente estão de acordo com o seu banco de dados.
Finalmente, com todas as dependências instaladas, o banco de dados criado e rodando na porta padrão(5432) e as variáveis de ambiente configuradas, você já pode executar o servidor no modo de desenvolvimento na porta(3333):
$ npm run dev
# ou
$ yarn dev
📃 Rotas
URL base: http://localhost:3333/api/
Rotas de autenticação
- post('/auth/login') - Faz log in em uma conta
- post('/auth/register') - Cria uma conta
- get('/auth/verify') - Verifica se o usuário está autenticado
- post('/auth/refresh-token') - Retorna um novo accessToken e refreshToken para o usuário autenticado.
Rotas privadas (autenticação necessária)
- get('/texts') - Lista todos os textos do usuário autenticado
- post('/texts') - Cria um texto com título e conteúdo vazios
- put('/texts/:id') - Modifica o título e conteúdo de um texto
- delete('/texts/:id') - Deleta um texto do banco de dados
🤔 Como contribuir
- Faça um fork desse repositório
- Faça um clone do seu fork (
git clone url-do-seu-fork && cd ditey-api
) - Crie uma branch com sua feature ou correção de bugs (
git checkout -b minha-branch
) - Faça commit das suas alterações (
git commit -m 'feature/bugfix: minhas alterações'
) - Faça push para a sua branch (
git push origin minha-branch
) - Abra sua Pull Request no repositório que você fez o fork
📝 Licença
Este projeto está licenciado sob a licença MIT.