Esse projeto consiste em uma api para um restaurante, sendo possivel cadastrar usuários, funcionários e entregadores. Na aplicação da para fazer pedidos, tem sistema de entrega, formas de pagamento, entre outros recursos. O processo se inicia com a criação do usuário, após isso é possível ver o cardapio, escolher os alimentos, efetuar/pagar o pedido e acompanhar a entrega (aceita por um entregador cadastrado). A criação e edição dos pratos é feita por um funcionário, mais especificamente, um gerente (validado através do token jwt).
Para garantir a qualidade, o sistema foi feito com arquitetura limpa, juntamente com testes unitários, utilizando vitest.
Este projeto está utilizando as seguintes tecnologias:
A seguir estão as rotas da aplicação (a maioria só pode ser acessada com a validação do token jwt, além das rotas privadas, que apenas gerentes podem acessar):
- GET
/users
: lista todos os usuários. - GET
/users/:id
: lista um usuário buscando pelo id. - GET
/users/email/:email
: lista um usuário buscando pelo email. - POST
/users
: cria um novo usuário. - POST
/users/login
: faz o login. - PUT
/users/:id
: atualiza as informações do usuário. - PATCH
/users/:id
: atualiza a senha do usuário. - DELETE
/users/:id
: deleta um usuário.
- GET
/deliverymans
: lista todos os entregadores. - GET
/deliverymans/:id
: lista um entregador buscando pelo id. - GET
/deliverymans/email/:email
: lista um entregador buscando pelo email. - POST
/deliverymans
: cria um novo entregador. - POST
/deliverymans/login
: faz o login. - PUT
/deliverymans/:id
: atualiza as informações do entregador. - PATCH
/deliverymans/:id
: atualiza a senha do entregador. - DELETE
/deliverymans
: deleta um entregador.
- GET
/employees
: lista todos os funcionários. - GET
/employees/role/:employee_role
: lista os funcionários buscando pelo cargo. - GET
/employees/:id
: lista um funcionário buscando pelo id. - GET
/employees/email/:email
: lista um funcionário buscando pelo email. - POST
/employees
: cria um novo funcionário. - POST
/employees/login
: faz o login. - PUT
/employees/:id
: atualiza as informações do funcionário. - PATCH
/employees/:id
: atualiza a senha do funcionário. - DELETE
/employees/:id
: deleta um funcionário.
- GET
/foods
: lista todos os alimentos. - GET
/foods/category/:category
: lista todos os alimentos de uma determinada categoria. - GET
/foods/:id
: lista um alimento buscando pelo id. - GET
/foods/name/:food_name
: lista um alimento buscando pelo nome. - POST
/foods
: cria um novo alimento. - PUT
/foods/:id
: atualiza as informações de um alimento. - DELETE
/foods/:id
: deleta um alimento.
- GET
/orders
: lista todos os pedidos. - GET
/orders/cards
: lista todos os pedidos pagos com cartão. - GET
/orders/pixs
: lista todos os pedidos pagos com pix. - GET
/orders/card/:id_card
: lista todos os pedidos feito com um cartão especifico. - GET
/orders/user/:id_user
: lista todos os pedidos feito por um usuário especifico. - GET
/orders/status/:status
: lista todos os pedidos com determinado status. - GET
/orders/:id
: lista um pedido buscando pelo id. - POST
/orders
: cria um novo pedido. - PATCH
/orders/:id
: atualiza o status do pedido.
- GET
/pixs
: lista todos os pixs. - GET
/pixs/user/:id_user
: lista todos os pixs feito por um usuário especifico. - GET
/pixs/status/:status
: lista todos os pixs com determinado status. - GET
/pixs/:id
: lista um pix buscando pelo id. - GET
/pixs/code/:code
: lista um pix buscando pelo código. - POST
/pixs
: cria um novo pix. - PATCH
/pixs/:id
: atualiza o status do pix.
- GET
/cards
: lista todos os cartões. - GET
/cards/user/:id_user
: lista todos os cartões feito por um usuário especifico. - GET
/cards/:id
: lista um cartão buscando pelo id. - GET
/cards/card_number/:card_number
: lista um cartão buscando pelo número do cartão. - POST
/cards
: cria um novo cartão. - DELETE
/pixs/:id
: delete um cartão.
- GET
/deliveries
: lista todas as entregas. - GET
/deliveries/not_accepted
: lista todas as entregas que ainda não foram aceitas. - GET
/deliveries/deliveryman/:id_deliveryman
: lista todas as entregas de um determinado entregador. - GET
/deliveries/:id
: lista uma entrega buscando pelo id. - POST
/deliveries
: cria uma nova entrega. - PATCH
/deliveries/:id/deliveryman/:id_deliveryman
: aceita a entrega associando a um entregador. - PATCH
/deliveries/:id
: finaliza a entrega.
# clone o repositório
$ git clone https://github.com/bastosmatheus/api-restaurant.git
# arquivo .env
DATABASE_URL="postgresql://username:password@localhost:5432/yourdatabase?schema=public"
# depois de clonado, procure a pasta do projeto
$ cd api-restaurant
# instale todas as dependências
$ npm install
# execute o projeto
$ npm run dev