Skip to content

Neves-Rafael/FoodExplorer-BackEnd

Repository files navigation

Sign up

O FoodExplorer é uma aplicação fullstack, utilizando as tecnologias aprendidas durante o curso Explorer, simulando um restaurante fictício de acordo com o layout disponibilizado no Figma.

O food explorer possui duas personas: o admin e o usuário;

O admin é a pessoa responsável pelo restaurante e tem o acesso para criar, visualizar, editar, apagar um prato e alterar os status de pedidos a qualquer momento. Cada prato deve conter uma imagem, nome, categoria, descrição, ingredientes e o seu preço. Ao clicar em adicionar ou editar prato será redirecionado para a página e ao finalizar receberá uma mensagem de sucesso e será redirecionado para a página principal.

O usuário irá visualizar todos os pratos cadastrados, adicionar ao carrinho, fazer um pedido, adicionar aos favoritos, acompanhar seu histórico de pedidos, atualizar seu perfil e quando clicar em um prato, será redirecionado para uma nova tela com informações mais detalhadas sobre ele.

Link para o deploy da aplicação
Link para o Front-End



💻 Instalação

Pré-requisitos

Antes de começar, você vai precisar ter instalado em sua máquina NodeJs , uma ferramenta de versionamento como o GIT . Além disto é recomendado um editor de código, por exemplo oVSCode . Para fazer testes localmente uma boa opção é o Insomnia e para gerenciamento de banco de dados relacional o Beekeeper .

Configuração

Siga os seguintes passos para configurar e rodar a aplicação localmente:

  • Clone o repositório:

      git clone https://github.com/Neves-Rafael/FoodExplorer-BackEnd
  • Entre no diretório e instale as dependências:

      npm install
  • Preencha as variáveis seguindo o .env.exemplo:

      ADMIN_EMAIL=admin@admin.com
      PORT=3333
      AUTH_SECRET=a76da876da876$ds654a@7656
  • Rode o servidor local:

      npm run dev
  • Caso não ocorra nenhum erro a seguinte mensagem será apresentada:

      Server is running on port 3333.
  • Para utilizar todo dos recursos desta API, acesse o localhost com a porta adicionada no .env:

    http://localhost:3333

  • Para fazer as requisições utilize o insomnia ou qualquer outro programa de sua preferência.

🔧 Recursos

A aplicação possui duas personas:

  • Cliente:

    • Mostrar todos os pratos
    • Mostrar um prato especifico
    • Pesquisar por um prato ou ingrediente
    • Adicionar ao carrinho os pedidos
    • Fazer um pedido
    • Adicionar prato aos favoritos
    • Acessar todos os favoritos
    • Acessar histórico de pedidos
    • Acessar status do pedido
    • Atualizar informações da conta
    • Acessar página com informações sobre o restaurante

  • Administrador:

    • Mostrar todos os pratos
    • Mostrar um prato especifico
    • Pesquisar por um prato ou ingrediente
    • Acessar todos os pedidos
    • Acessar status do pedido
    • Atualizar status de pedidos
    • Atualizar informações da conta
    • Acessar página com informações sobre o restaurante
    • Cadastrar um novo prato
    • Atualizar um prato
    • Deletar um prato
    • Atualizar um pedido

📑 Funcionamento

  • Fazer login

    Para algumas requisições, a aplicação espera um token (JWT) no header da requisição, ou seja, o usuário tem que está autenticado.

    Para gerar um token basta fazer uma requisição:

    POST("/sessions")

    Com as seguintes informações:

     "email": "exemplo@email.com",
     "password": "exemplo123"
    

    Se tudo estiver correto será liberado acesso para a aplicação.

  • User

    Rota para criação de conta, por padrão é atribuído acesso de usuário, para ter acesso a uma conta de administrador adicione ao arquivo .env no campo de ADMIN_EMAIL o email desejado para ser atribuído como Administrador.

    POST("/users")

      ADMIN_EMAIL=admin@admin.com
      PORT=3333
      AUTH_SECRET=a76da876da876$ds654a@7656

    Com as seguintes informações:

     "nome": "Exemplo nome"
     "email": "exemplo@email.com",
     "password": "exemplo123"
    

    Rota para atualização da conta

    PUT("/users")

    Rota para uma segunda autorização que verificar se a conta foi criada corretamente.

    GET("/users/validated")

  • Plate

    As seguintes rotas são para visualização de todos os pratos ou pratos específicos selecionados.

    GET("/plates")

    GET("/plates/:id")

    Para o admin ele possui as seguintes rotas de criação, exclusão e atualização dos pratos.

    POST("/plates") admin require

    PUT("/plates/:id") admin require

    DELETE("/plates/:id") admin require

    PATCH("/plates/:id") admin require

  • Pagamento

    Rota para a criação de um pedido, com uma duração de 15 minutos para pagamento, que é ativado com a rota seguinte.

    POST("/payment")

    Pota para um fazer um "pagamento" fictício que atualiza o status do pedido.

    PUT("/payment/qrcode/:id")

    As seguintes rotas são para visualização de todos os pedidos daquele usuário e para pedidos específicos.

    GET("/payment")

    GET("/payment/:id")

    Rota que o admin consegue atualizar o status de qualquer pedido existente.

    PATCH("/payment/:id") admin require

  • Ingredientes

    Rota para exibir os ingredients.

    GET("/ingredients")

  • Favoritos

    Rotas para adição do prato aos favoritos e para visualização de todos os pratos adicionados.

    POST("/favorites")

    GET("/favorites")


🗂️ Requisitos

  • ✅ Projeto estruturado, com uma boa organização das pastas.
  • ✅ Os dados do admin, do restaurante e dos usuários serão armazenados em um banco de dados.
  • ✅ Os usuários se autenticam para entrar na aplicação através da tela de login, utilizando autenticação JWT.
  • ✅ Usuário e admin podem fazer uma busca tanto pelo nome do prato quanto pelos ingredientes;
  • ✅ O admin pode fazer upload de imagens para cadastrar os pratos.
  • ✅ Aplicação consome a sua própria API.

📊 Tecnologias e Licença

- NodeJs - bcryptjs - express - knex - Multer - SQLite - PM2 - JWT


Uso de Licença MIT: Essa licença permite o uso, modificação e distribuição do software sem restrições.


Feito com ❤️ por Rafael Neves 👋🏽 Entre em Contato

Releases

No releases published

Packages

No packages published