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
JWT
com expiração - Senhas criptografadas com
bcryptjs
- Atualização de perfil
- Exibição de perfil com 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 dev
Caso 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, 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": "teste@gmail.com",
"password": "12345678"
}
- Fazer login → POST
/login
{
"email": "teste@gmail.com",
"password": "12345678"
}
- Criar receita → POST
/recipes
(autenticado)
- Selecionar
Form Data
para incluir os dados com envio de imagem. Exemplo de dados:
name: Bolo de Chocolate
category: Sobremesa
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ê
Redefinição de senha para usuários com token via e-mail✅Deploy✅Documentação✅
Este projeto está licenciado sob a licença MIT