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 Sequelizepara 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
Userscom os atributos:iddisplaynameemailpasswordimage -
Uma tabela chamada
Categories, com os atributos:iddate -
Uma tabela chamada
BlogPosts, com os atributos:idtitlecontentuserIdpublishedupdateduserIdé uma chave estrangeira, referenciando o id da tabelaUsers -
Uma tabela chamada
PostCategories, contendo uma chave primária composta utilizando os dois atributos:postIdcategoryId
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
