API RESTful desenvolvida para gerenciar receitas, comentários e favoritos de usuários.
Permite criar, visualizar, atualizar e deletar receitas, adicionar comentários e favoritar receitas.
📌 Observações
- Você pode conferir a API diretamente aqui! - Receitas API
- Documentação completa disponível em Documentação
- Testes podem ser feitos diretamente pela documentação, sem a necessidade rodar localmente!
- Cadastro e login de usuários
- Autenticação
JWTcom expiração - Senhas criptografadas com
bcryptjs - Atualização de perfil
- Perfil do usuário com biografia, quantidade de receitas cadastradas e curtidas
- Redefinição de senha via e-mail com token com
nodemailer
- CRUD completo (GET, POST, PUT, DELETE)
- Upload de imagens com
Cloudinary - Exibição das receitas cadastradas para o usuário autenticado
- Paginação para a exibição da lista de receitas
- Exibição formatada para evitar duplicação de dados
- Exibição da quantidade de likes e avaliações da receita
- Usuários autenticados podem adicionar comentários nas receitas
- Comentários podem ser deletados por quem os fez
- Exibição da lista de comentários com paginação por receita
- Usuários autenticados podem favoritar receitas
- As receitas favoritadas podem ser removidas quando desejar
- Paginação para a exibição da lista de receitas favoritadas
- Usuários autenticados podem deixar avaliações de 1 à 5 nas receitas
- As receitas possuem média de avaliações
- Só pode ser feita uma avaliação por usuário
- Node.js - Runtime JavaScript
- Express.js - Framework web
- Neon (PostgreSQL) - Banco de dados na nuvem
- JWT - Autenticação
- Bcrypt - Criptografia de senhas
- Joi - Validação de dados
- Nodemailer - E-mail para redefinição de senha
- PrismaORM - Comunicação com Banco de Dados
- Cloudinary - Upload de imagens
- Swagger - Documentação da API
Você pode aprender algumas etapas desse projeto nesses repositórios feitos por mim!
👉 Armazenando imagens em banco relacional 👉 Redefinir senha com nodemailer
- Clone o repositório:
git clone https://github.com/laracmiranda/Receitas_API.git- Entre na pasta do projeto:
cd Receitas_API- Instale as dependências:
npm install- Configure as variáveis de ambiente no arquivo
.env:
DATABASE_URL=postgresql://USER:PASSWORD@HOST:PORT/DATABASE
SECRET_JWT=SuaChaveSecreta
CLOUDINARY_CLOUD_NAME=seu_cloud_name
CLOUDINARY_API_KEY=sua_api_key
CLOUDINARY_API_SECRET=sua_api_secret
EMAIL_USER=email_completo_nodemailer
EMAIL_PASS=senha_app_nodemailer
PORT=sua_porta
- Rode as migrations do Prisma:
npx prisma migrate dev- Inicie a API:
npm run devCaso não defina uma rota personalizada, a API estará disponível em http://localhost:3000.
- User: id, name, email, password, recipes[], favorites[], comments[]
- Recipe: id, name, category, ingredients[], steps[], difficulty, portion, prepTime, status, image, userId, favorites[], comments[]
- Favorite: id, userId, recipeId, creationDate
- Comment: id, content, userId, recipeId, creationDate
- Rating: id, value, userId, recipeId
Sugestão de fluxo no Insomnia ou Postman:
- Criar usuário → POST
/users
{
"name": "Teste",
"email": "[email protected]",
"password": "12345678"
}- Fazer login → POST
/login
{
"email": "[email protected]",
"password": "12345678"
}- Criar receita → POST
/recipes(autenticado)
- Selecionar
Form Datapara incluir os dados com envio de imagem. Exemplo de dados:
name: Bolo de Chocolate
category: Sobremesa
description: "Receita de vó"
prepTime: "1h30"
portions: 5
difficulty: "Iniciante"
status: "Publicada"
ingredients: 2 ovos, 400g de farinha, 300g de nescau
steps: Misture tudo, unte uma forma e coloque para assar por 40 minutos
image: (upload de imagem)
- Adicionar comentário → POST
/comments/:recipeId(autenticado)
{
"content": "Gostei da receita"
}- Favoritar receita → POST
/favorite/:recipeId(autenticado)
- Passar o id da receita no endpoint
- Deixar uma avaliação → POST
/rating/:recipeId(autenticado)
- Passar o id da receita no endpoint
- Faça um fork deste repositório
- Crie uma branch com sua feature (
git checkout -b feature/nome-da-feature) - Commit suas mudanças (
git commit -m 'Adiciona nova feature') - Push para a branch (
git push origin feature/nome-da-feature) - Abra um Pull Request explicando o que altera e por quê
Este projeto está licenciado sob a licença GPL-2.0. Todos os contrubuidores e usuários estão sujeitos à licença!