Projeto realizado no módulo de Back-end durante o curso de Desenvolvimento Web pela Trybe, a escola que te ensina a programar, a aprender e a trabalhar.
Foi desenvolvido uma API
e um banco de dados
para produção de conteúdo para um blog.
Este projeto é uma aplicação em Node.js
usando o pacote sequelize
para fazer um CRUD de posts
- Joi
- ExpressJS Async Errors
- JWT (Json Web Token)
- Nodemon
- Thunder Client
- DotEnv
- Docker
- Criar endpoints seguindo o padrão REST;
- Criar uma API de um CRUD (Create, Read, Update e Delete);
- Criar middlewares e validações;
- Desenvolvimento seguindo a arquitetura MSC;
- Utilizar o
ORM Sequelize
para criar e popular tabelas, consultar, inserir, alterar e deletar dados nas tabelas.
🗄️ Fornecido pela Trybe
- Arquivo
Dockerfile
,docker-compose.yml
,.sequelizerc
,der.png
,server.js
,.eslintrc.json
,.eslintignore
,.env.example
,./src/database/seeders
,./src/database/config/config.js
.
Diagrama de Entidade-Relacionamento
O Banco possui 4 tabelas criadas com o ORM Sequelize
:
-
Uma tabela chamada
Users
com os atributos:id
displayname
email
password
image
-
Uma tabela chamada
Categories
, com os atributos:id
date
-
Uma tabela chamada
BlogPosts
, com os atributos:id
title
content
userId
published
updated
userId
é uma chave estrangeira, referenciando o id da tabelaUsers
-
Uma tabela chamada
PostCategories
, contendo uma chave primária composta utilizando os dois atributos:postId
categoryId
npm run drop
npm run prestart
npm run seed
Para rodar esse projeto, você vai precisar adicionar as seguintes variáveis de ambiente no seu .env
É importante configurar as variáveis: MYSQL_HOST
, MYSQL_PORT
, MYSQL_USER
, MYSQL_PASSWORD
#### SERVER VARS
NODE_ENV=development
API_PORT=3000
#### DATABASE VARS
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_DB_NAME=blogs-api
MYSQL_USER=root
MYSQL_PASSWORD=password
#### SECRECT VARS
JWT_SECRET=suaSenhaSecreta
Caso opte por uma configuração padrão basta renomear o arquivo .env.example
para .env
Para rodar esta aplicação é necessário ter o Docker 🐳 e Docker Compose instalados no seu computador.
O Docker Compose precisa estar na versão 1.29 ou superior.
git clone git@github.com:tiemifaustino/blogs-api.git
- Entre na pasta do repositório que você acabou de clonar:
cd blogs-api
docker-compose up -d --build
Esses serviços irão inicializar um container chamado blogs_api
e outro chamado blogs_api_db
3. Use o comando abaixo para ter acesso ao terminal interativo do container blogs_api
criado pelo compose, que está rodando em segundo plano.
docker exec -it blogs_api bash
npm install
npm start
6. Caso utilize a extensão Thunder Client do VS Code:
- os endpoints estão salvos no diretório
thunder-tests