Este projeto é uma API RESTful para uma rede social fictícia chamada Your Bubble, desenvolvida como parte de um projeto Full Stack do curso Códigos do Amanhã (Resilia | Ebanx). A API foi construída utilizando Node.js com o framework Express, e integra com um banco de dados MongoDB através do Prisma ORM.
- Sobre o Projeto
- Tecnologias Utilizadas
- Instalação e Execução
- Entidades e Rotas
- Documentação das Rotas
- Testes
- Contribuidores
- Licença
O projeto foi dividido em duas etapas:
- Módulo 4: Foi desenvolvido o back-end, a API REST, que gerencia todas as entidades da rede social.
- Módulo 5: Será desenvolvido o front-end, que consumirá as rotas da API criada no módulo 4.
@prisma/client
- ^5.3.1express
- ^4.18.2
@faker-js/faker
- ^8.0.2jest
- ^29.7.0nodemon
- ^3.0.1prisma
- ^5.3.1
- Clone este repositório:
git clone https://github.com/Renato-Miranda/socialMedia-API
- Navegue até o diretório do projeto:
cd socialMedia-API
- Instale as dependências:
cd socialMedia-API
npm install
O próximo passo é criar uma Cluster e uma conexão, para isso consulte a documentação do Mongo DB, esse passo é importante para conseguirmos o DATABASE_URL para conseguir persistir os dados no banco de dados.
Para achar o DATABASE_URL você depois de criar o seu cluster, você irá clicar em "connect", e selecionar a opção "drivers"
E verá uma URL parecida com essa: Muda os campos nessários como "username", "password", "nome do cluster" e "nome do banco"
mongodb+srv://<username>:<password>@<nome-do-cluster>.easiezm.mongodb.net/<nome-do-banco>?retryWrites=true&w=majority
Agora é hora de configurar o prisma, você deve configurar o arquivo .env com os dados do seu banco de dados, abaixo temos um exemplo, mas você também pode ver no arquivo .env.example
DATABASE_URL=<url-de-conexão-database>
PORT=<porta>
Realizada a configuração do DATABASE_URL e a PORT desejada você deve criar as tabelas no seu database, execute o comando
npx prisma db push
Agora você deve gerar o client dele com o prisma client, para isso você vai rodar o comando
npx prisma generate
npm start
- Roda o servidornpm run dev
- Roda a aplicação em modo de desenvolvedornpm run test
- Roda os testes do Jestnpm run data
- Roda arquivo para inserir dados mockados para usuário
- Inicie o servidor:
npm start
- Inserir dados em usuários
npm run data
- Usuário
- Post
- Comentário
- Curtido
- Favorito
- Feed
-
Usuário
- GET /usuarios
- POST /usuarios
- PUT /usuarios/:id
- DELETE /usuarios/:id
- GET /usuarios/:id
- GET /usuario/:email
-
Comentário
- POST /comentario
- GET /comentario
- GET /comentario/:id
- PUT /comentario/:id
- DELETE /comentario/:id
-
Curtido
- POST /curtido
- GET /curtido
- GET /curtido/:id
- PUT /curtido/:id
- DELETE /curtido/:id
-
Favorito
- POST /favorito
- GET /favorito
- GET /favorito/:id
- PUT /favorito/:id
- DELETE /favorito/:id
-
Feed
- POST /feed
- GET /feed
- GET /feed/:id
- PATCH /feed/:feedId/:postId
- DELETE /feed/:id
-
Post
- POST /post
- GET /post
- GET /post/:id
- PUT /post/:id
- PATCH /post/:id
- DELETE /post/:id
Para utilizar a API e testar as rotas listadas acima você deve utilizar o Imsomnia. Abaixo temos um exemplo de como utilizar a rota usuário
Para postar um usuário
POST /usuarios
Exemplo de arquivo JSON para enviar no corpo da requisição
{
"nomeUsuario": "pessoa_teste",
"senha": "Testesenha11#",
"email": "pessoa@email.com"
}
{
"success": true,
"message": "Usuário pessoa_teste inserido com sucesso",
"data": {}
}
GET /usuarios
[
{
"id": "650a0ce410d66528a53d2108",
"nomeUsuario": "Brice.Botsford34",
"senha": "c_n3z8MdHkvd8aj",
"email": "Clifton15@yahoo.com",
"createAt": "2023-09-19T21:04:34.242Z",
"updateAt": "2023-09-19T21:04:34.242Z"
},
{
"id": "650a0ce410d66528a53d2109",
"nomeUsuario": "Ines_Wintheiser6",
"senha": "vgzSO5ZSKhVS4sr",
"email": "Kevin_McClure29@yahoo.com",
"createAt": "2023-09-19T21:04:34.242Z",
"updateAt": "2023-09-19T21:04:34.242Z"
},
{
"id": "650a0ce410d66528a53d210a",
"nomeUsuario": "pessoa_teste",
"senha": "Testesenha11#",
"email": "pessoa@email.com",
"createAt": "2023-09-19T21:04:34.242Z",
"updateAt": "2023-09-19T21:04:34.242Z"
}
]
GET usuarios/3
{
"id": "650a0ce410d66528a53d210a",
"nomeUsuario": "pessoa_teste",
"senha": "Testesenha11#",
"email": "pessoa@email.com",
"createAt": "2023-09-19T21:04:34.242Z",
"updateAt": "2023-09-19T21:04:34.242Z"
}
GET usuarios/pessoa@email.com
{
"id": "650a0ce410d66528a53d210a",
"nomeUsuario": "pessoa_teste",
"senha": "Testesenha11#",
"email": "pessoa@email.com",
"createAt": "2023-09-19T21:04:34.242Z",
"updateAt": "2023-09-19T21:04:34.242Z"
}
PUT usuarios/3
Exemplo de arquivo JSON para enviar no corpo da requisição
{
"nomeUsuario": "pessoa_teste_update",
"senha": "Testesenha22@",
"email": "pessoa@email.com"
}
DELETE usuarios/3
Iohan Torres GitHub |
João Victor Machado GitHub |
Renato Miranda GitHub |
Victor Martins GitHub |
Sinta-se à vontade para contribuir com o projeto. Qualquer feedback ou pull request será muito bem-vindo.
Este projeto está sob a licença MIT.