Skip to content

Neste projeto, foi desenvolvida uma aplicação full stack de um site de receitas utilizando Django Web Framework e Django Rest Framework possibilitando fazer um CRUD de receitas com um controle por parte dos administradores.

Notifications You must be signed in to change notification settings

TonyyCruz/django-recipes

Repository files navigation

Django Recipes

Neste projeto, foi desenvolvida uma aplicação full stack de um site de receitas utilizando Django Web Framework e Django Rest Framework possibilitando fazer um CRUD de receitas com um controle por parte dos administradores.



📃 Sobre o Projeto

Foi desenvolvida uma aplicação em Python Django que permite fazer um CRUD para um banco de dados. Esse CRUD possibilita tanto a criação quanto o login de usuários, assim como criação edição e deleção de receitas, tudo isso atravez de forms. Também foi disponibilizado uma API construida em Rest Framework, que possibilita também um CRUD na aplicação atravez de métodos HTTP, possibilitando também a adição e login de usuários, tendo sua validação através de Jwt validators, possibilitando também a criação edição e deleção de receitas. Foram feitos testes unitários funcionais e ponta a ponta cobrindo 90% da aplicação, foram utilizados: pytest, django testing e selenium.



🛠 Tecnologias e Bibliotecas utilizadas no desenvolvimento do projeto


🚀 Como executar o projeto

Clone o repositorio

  git clone git@github.com:TonyyCruz/django-recipes.git && cd django-recipes

  • Renomeie e configurar o arquivo .env.example (deve ser criado um arquivo .env com o conteudo do .env.example configurado)

💻 Rodando Localmente

Crie o ambiente virtual

 python3 -m venv .venv

Ative o ambiente virtual

 source .venv/bin/activate

Instale as dependências com o comando

 python -m pip install -r dev-requirements.txt

Rode o servidor

 python manage.py runserver

Rodar os testes

 python -m pytest

⚠️ Atenção: Não esqueça de que você deve estar com o ambiente virtual ativo.


🐳 Rodando no Docker

Rode na raiz do projeto o comando

  docker-compose up -d
  • Esse serviço irá inicializar um container chamado recipes e adicionará uma imagem docker chamada django-recipes_web.
  • A partir daqui você pode rodar o container via CLI ou abri-lo no VS Code.

Via CLI use o comando

docker exec -it recipes bash
  • Ele te dará acesso ao terminal interativo do container recipes criado pelo compose, que está rodando em segundo plano.

Rodar os testes

 python -m pytest

Ps: Os testes em selenium só estão funcionando rodando localmente.

Este container estara espelhando os arquivos da sua máquina.



Rotas utilizáveis na API

Ver rotas
POST
  • POST http://localhost:8000/authors/api/v2/ para cadastrar novo usuario. Utilize um body nesse formato:

      {
      	"first_name": "SeuNome",
      	"last_name": "SeuSobrenome",
      	"username": "SeuUsername",
      	"password": "SeuPassword1.",
      	"email": "[email protected]"
      }

  • POST http://localhost:8000/recipes/api/token/ para fazer login e receber um token. Utilize um body nesse formato:

      {
      	"username": "SeuUsername",
      	"password": "SeuPassword1.",
      }

  • POST http://localhost:8000/recipes/api/token/refresh/ para atualizar o token. Utilize um body nesse formato:

      {
          "refresh": "<O "refresh" token que foi recebido ao fazer login>"
      }

  • POST http://localhost:8000/recipes/api/token/verify/ para validar o token. Utilize um body nesse formato:

      {
          "token": "<O "access" token que foi recebido ao fazer login>"
      }

  • POST http://localhost:8000/recipes/api/v2/ para criar uma nova receita. Utilize um body nesse formato:
    Para essa ação, o usuário deve enviar o "access" token no Header da requisição. Authorization Bearer <access token>

      {
      	"title": "Minha receita",
      	"description": "Uma receita deliciosa",
      	"preparation_time":10,
      	"preparation_time_unit": "minute",
      	"servings": 10,
      	"servings_unit": "portion",
      	"preparation_steps": "Descrição dos passos necessários para a criação bem sucedida da receita."
      }

    ps: Para enviar a imagem, os mesmos dados devem ser enviados por multipart form com a inclusão do campo "cover".


GET
  • GET http://localhost:8000/authors/api/v2/<id> exibe os dados do próprioe só o mesmo pode acessar.
    Para essa ação, o usuário deve enviar o "access" token no Header da requisição. Authorization Bearer <access token>


  • GET http://localhost:8000/authors/api/v2/me exibe os dados do usuário autenticado.
    Para essa ação, o usuário deve enviar o "access" token no Header da requisição. Authorization Bearer <access token>


  • GET http://localhost:8000/authors/api/v2/ exibe todas as receitas publicadas.

  • GET http://localhost:8000/authors/api/v2/<id> uma receita publicada de acordo com o id.

  • GET http://localhost:8000/authors/api/v2/?category_id=<id> busca receitas publicada de acordo com a categoria.

  • GET http://localhost:8000/authors/api/v2/?q=<search> busca receitas de acordo com a palavra passada "".

PATCH

Para todos os métodos PATCH, o usuário devera enviar o "access" token no Header da requisição. Authorization Bearer <access token>

  • PATCH http://localhost:8000/authors/api/v2/<id>/ para atualizar dados do usuário. Utilize um body nesse formato:
  {
    "last_name": "Cruz"
  }

  • PATCH http://localhost:8000/recipes/api/v2/<id>/ para atualizar a receita. Utilize um body nesse formato:
    {
      "title": "Novo titulo",
      "description": "Nova descrição",
    }

DELETE

Para todos os métodos DELETE, o usuário devera enviar o "access" token no Header da requisição.
Authorization Bearer <access token>

  • DELETE http://localhost:8000/authors/api/v2/<id> deleta o usuário.

  • DELETE http://localhost:8000/recipes/api/v2/<id> deleta a receita se a mesma pertencer ao usuário.

HELP

Ao passar a Authorization é obrigatório o uso da palavra Bearer antes do token:


Funcionamento


  • A aplicação roda na url http://localhost:8000/
  • Para facilitar a sua experiência, tem um super usuário cadstrado Username: admin password: admin.
  • A área de administração do site fica em http://localhost:8000/admin.
  • Qualquer usuário cadastrado pode criar receitas, mas apenas administradores podem publicá-las.
  • Foram adicionadas algumas receitas fictícias para a visualização.

About

Neste projeto, foi desenvolvida uma aplicação full stack de um site de receitas utilizando Django Web Framework e Django Rest Framework possibilitando fazer um CRUD de receitas com um controle por parte dos administradores.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published