Neste projeto foi desenvolvido uma API e um banco de dados para a produção de conteúdo para um blog usando Node.js
com pacote sequelize
para fazer um CRUD
de posts.
Os endpoints estão conectados ao banco de dados seguindo os princípios básicos do REST.
O usuário deve fazer login, trabalhando assim a relação entre user
e post
.
Além disso, é necessária a utilização de categorias de posts, trabalhando assim a relação de posts
para categories
e de categories
para posts
.
🐋 Rodando no Docker vs Localmente
1.26.0
por 1.29.2
.
ℹ️ Rode os serviços
node
edb
com o comandodocker-compose up -d --build
.
-
Lembre-se de parar o
mysql
se estiver usando localmente na porta padrão (3306
), ou adapte, caso queria fazer uso da aplicação em containers; -
Esses serviços irão inicializar um container chamado
blogs_api
e outro chamadoblogs_api_db
; -
A partir daqui você pode rodar o container
blogs_api
via CLI ou abri-lo no VS Code;
ℹ️ Use o comando
docker exec -it blogs_api bash
.
- Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
ℹ️ Instale as dependências [Caso existam] com
npm install
. (Instale dentro do container)
-
⚠️ Atenção: Caso opte por utilizar o Docker, TODOS os comandos disponíveis nopackage.json
(npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comandodocker exec
citado acima. -
⚠️ Atenção: O git dentro do container não vem configurado com suas credenciais. Ou faça os commits fora do container, ou configure as suas credenciais do git dentro do container. -
⚠️ Atenção: Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.
ℹ️ Instale as dependências [Caso existam] com
npm install
-
Lembre-se de usar o prefixo
env $(cat .env)
ao rodar os comandos localmente para carregar as variáveis de ambiente do arquivo.env
. Por exemplo:env $(cat .env) npm run dev
-
⚠️ Atenção: Não rode o comandonpm audit fix
! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador. -
✨ Dica: Para rodar o projeto desta forma, obrigatoriamente você deve ter o
node
instalado em seu computador. -
✨ Dica: O avaliador espera que a versão do
node
utilizada seja a 16.
🔧 Instalação
- Clone o repositório
git clone git@github.com:Wesleyhmendes/blogs-api-back-end.git
.- Entre na pasta do repositório que você acabou de clonar:
blogs-api-back-end.git
- Instale as dependências [Caso existam]
npm install
- Crie uma branch a partir da branch
master
- Verifique que você está na branch
master
- Exemplo:
git branch
- Exemplo:
- Se não estiver, mude para a branch
master
- Exemplo:
git checkout master
- Exemplo:
- Agora crie uma branch com o nome desejado
📋 Requisitos
1 - Crie migrations para as tabelas users
, categories
, blog_posts
, posts_categories
2 - Crie o modelo User
em src/models/User.js
com as propriedades corretas
3 - Sua aplicação deve ter o endpoint POST /login
4 - Sua aplicação deve ter o endpoint POST /user
5 - Sua aplicação deve ter o endpoint GET /user
6 - Sua aplicação deve ter o endpoint GET /user/:id
7 - Crie o modelo Category
em src/models/Category.js
com as propriedades corretas
8 - Sua aplicação deve ter o endpoint POST /categories
9 - Sua aplicação deve ter o endpoint GET /categories
10 - Crie o modelo BlogPost
em src/models/BlogPost.js
com as propriedades e associações corretas
11 - Crie o modelo PostCategory
em src/models/PostCategory.js
com as propriedades e associações corretas
12 - Sua aplicação deve ter o endpoint POST /post
13 - Sua aplicação deve ter o endpoint GET /post
14 - Sua aplicação deve ter o endpoint GET /post/:id
15 - Sua aplicação deve ter o endpoint PUT /post/:id
16 - Sua aplicação deve ter o endpoint DELETE /post/:id
17 - Sua aplicação deve ter o endpoint DELETE /user/me
18 - Sua aplicação deve ter o endpoint GET /post/search?q=:searchTerm
Mencione as ferramentas que você usou para criar seu projeto
Nós usamos Docker para controle de versão.
- Wesley Mendes - Trabalho Inicial - Wesley Mendes