{"id":21711643,"url":"https://github.com/heliolj/food-explorer-api","last_synced_at":"2026-04-09T02:03:18.232Z","repository":{"id":158078888,"uuid":"633156428","full_name":"helioLJ/food-explorer-api","owner":"helioLJ","description":"API Food Explorer para uma aplicação de menu e pedidos.","archived":false,"fork":false,"pushed_at":"2023-05-16T12:12:45.000Z","size":9213,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-16T19:53:17.017Z","etag":null,"topics":["express","nodejs","sqlite","sqlite3"],"latest_commit_sha":null,"homepage":"https://food-explorer-api-kxi2.onrender.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/helioLJ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-26T22:49:34.000Z","updated_at":"2023-05-16T12:13:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"d6972efc-8b7f-449f-a3fd-57a6f1669cd6","html_url":"https://github.com/helioLJ/food-explorer-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/helioLJ/food-explorer-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helioLJ%2Ffood-explorer-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helioLJ%2Ffood-explorer-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helioLJ%2Ffood-explorer-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helioLJ%2Ffood-explorer-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/helioLJ","download_url":"https://codeload.github.com/helioLJ/food-explorer-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helioLJ%2Ffood-explorer-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31581864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["express","nodejs","sqlite","sqlite3"],"created_at":"2024-11-25T23:28:33.816Z","updated_at":"2026-04-09T02:03:18.201Z","avatar_url":"https://github.com/helioLJ.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Logo](https://i.imgur.com/aRFMniY.png)\n\n# Food Explorer V2 API 🍜\n\nEssa API de um restaurante fictício pode ser utilizada para realizar o gerenciamento de pedidos e favoritos de seus clientes.\n\nAtravés da API, os usuários podem se cadastrar, autenticar-se, cadastrar seus pratos favoritos, visualizar todos os pratos disponíveis, adicionar pratos em seus carrinhos de compra, criar e finalizar pedidos.\n\nOs usuários também podem visualizar seus pedidos anteriores, atualizar seus dados pessoais e recuperar suas senhas, caso necessário.\n\nAlém disso, a API também conta com a funcionalidade de administrador, que permite que o restaurante gerencie todos os pratos disponíveis, atualize o status dos pedidos, visualize e edite os dados dos clientes cadastrados, e gerencie as avaliações e comentários dos clientes sobre os pratos oferecidos.\n\n## Índice\n\n- [Stack utilizada ⚙️](#stack-utilizada)\n- [Funcionalidades 🎯](#funcionalidades)\n- [Variáveis de Ambiente 🔑](#variáveis-de-ambiente)\n- [Rodando localmente 🏠](#rodando-localmente)\n- [Rodando os testes 🧪](#rodando-os-testes)\n- [Apêndice 🔍](#apêndice)\n- [Documentação da API 📖](#documentação-da-api)\n- [Licença 📜](#licença)\n\n\n## Stack utilizada\n\n\n⚙️ Node.js, Express, SQLite\n\n## Funcionalidades\n\n\n- Criar, editar, visualizar e deletar Usuário\n- Autenticação de Usuário\n- Criar, editar, adicionar uma imagem, visualizar e deletar Pratos\n- Favoriar, desfavoritar um Prato. E visualizar todos Pratos Favoritos\n- Criar um Pedido com um Prato, adicionar um Prato ao pedido ou alterar a quantidade de algum Prato no Pedido, excluir um Prato do Pedido, visualizar o Pedido detalhado e o Histórico de Pedidos\n\n\n## Variáveis de Ambiente\n\n🔑 Para rodar esse projeto, você vai precisar adicionar só uma variável de ambiente, como mostra o arquivo `env.example`\n\n```env\n  AUTH_SECRET=\n```\n\n## Rodando localmente\n\n🏠 Clone o projeto\n\n```bash\n  git clone https://github.com/helioLJ/food-explorer-api\n```\n\nEntre no diretório do projeto\n\n```bash\n  cd my-project\n```\n\nInstale as dependências\n\n```bash\n  npm install\n```\n\nInicie o servidor\n\n```bash\n  npm run dev\n```\n\n\n## Rodando os testes\n\n🧪 Para rodar os testes, rode o seguinte comando\n\n```bash\n  npm test\n```\n\n\n## Apêndice\n\n| Diagrama Entidade Relacionamento 💡      | Estrutura de Pastas do Projeto 🔍     |\n| ------------- | ------------- |\n| \u003cimg alt=\"Diagrama Entidade Relacionamento\" src=\"https://i.imgur.com/oeiETNw.png\"\u003e | \u003cimg alt=\"Estrutura de Pastas do Projeto\" src=\"https://i.imgur.com/Y2buOH0.png\"\u003e |\n\n\n\n## Documentação da API\n\n📖 Para alguns métodos da API, é necessário estar Autenticado, então se estiver recebendo algum erro para editar o Usuário, por exemplo, talvez seja porque você não se autenticou.\n\n### Usuários 👥\n\n#### Cria um Usuário\n\n```http\n  POST /users\n```\n\n```JSON\n{\n\t\"name\": \"John\",\n\t\"email\": \"john@email.com\",\n\t\"password\": \"123\"\n\t// \"isAdmin\": true (essa parâmetro é opcional caso queira criar um usuário Admin)\n}\n```\n\n#### Edita um Usuário\n\n```http\n  PUT /users\n```\n\n```JSON\n{\n\t\"name\": \"John\",\n\t\"email\": \"john@email.com\",\n\t\"old_password\": \"123\",\n\t\"new_password\": \"456\"\n}\n```\n\n#### Deleta um Usuário\n\n```http\n  DELETE /users\n```\n\n\n#### Retorna um Usuário\n\n```http\n  GET /users\n```\n\n```JSON\n{\n\t\"id\": 1,\n\t\"name\": \"John\",\n\t\"email\": \"john@email.com\",\n\t\"created_at\": \"2023-05-02 17:42:34\",\n\t\"updated_at\": \"2023-05-02 17:42:34\"\n}\n```\n\n### Sessões (Auth) 🔑\n\n#### Cria uma Sessão\n\n```http\n  POST /sessions\n```\n\n```JSON\n{\n\t\"email\": \"john@email.com\",\n\t\"password\": \"123\"\n}\n```\n\n### Pratos 🍲\n\n#### Cria um Prato\n\n```http\n  POST /dishes\n```\n\n```JSON\n{\n\t\"name\": \"Salada Ravanello\",\n\t\"description\": \"Rabanetes, folhas verdes e molho agridoce salpicados com gergelim. O pão naan dá um toque especial.\",\n\t\"image_url\": \"https://www.google.com/url?sa=i\u0026url=https%3A%2F%2Fpt.dreamstime.com%2Fvista-superior-das-folhas-frescas-de-salada-verde-vivas-com-tomates-vermelhos-e-fundo-texturizado-rabanete-image188958649\u0026psig=AOvVaw0_mVQmBnD-ZqgZC3R7o6CP\u0026ust=1683293670880000\u0026source=images\u0026cd=vfe\u0026ved=0CBEQjRxqFwoTCLiguNzj2_4CFQAAAAAdAAAAABAJ\",\n\t\"price\": 25.00,\n\t\"category\": \"Refeições\",\n\t\"ingredients\": [\"alface\", \"cebola\", \"pão naan\", \"pepino\", \"rabanete\", \"tomate\"]\n}\n```\n\n#### Edita um Prato\n\n```http\n  PUT /dishes/:dish_id\n```\n\n```JSON\n{\n\t\"name\": \"Saladinha Ravanello\",\n\t\"description\": \"Rabanetes, folhas verdes e molho...\",\n\t\"image_url\": \"https://www.google.com/url?sa=i\u0026url=https%3A%2F%2Fpt.dreamstime.com%2Fvista-superior-das-folhas-frescas-de-salada-verde-vivas-com-tomates-vermelhos-e-fundo-texturizado-rabanete-image188958649\u0026psig=AOvVaw0_mVQmBnD-ZqgZC3R7o6CP\u0026ust=1683293670880000\u0026source=images\u0026cd=vfe\u0026ved=0CBEQjRxqFwoTCLiguNzj2_4CFQAAAAAdAAAAABAJ\",\n\t\"price\": 30.00,\n\t\"category\": \"Refeições\",\n\t\"ingredients\": [\"alface\", \"cebola roxa\", \"pão integral\", \"rabanete\", \"tomate\"]\n}\n```\n\n#### Envia arquivo de imagem em um Prato\n\n```http\n  PATCH /dishes/picture/:dish_id\n```\n\n#### Deleta um Prato\n\n```http\n  DELETE /dishes/dish_id\n```\n\n#### Retorna um Prato\n\n```http\n  GET /dishes/:dish_id\n```\n\n```JSON\n{\n\t\"id\": 13,\n\t\"name\": \"Salada Ravanello\",\n\t\"description\": \"Rabanetes, folhas verdes e molho agridoce salpicados com gergelim. O pão naan dá um toque especial.\",\n\t\"image_url\": \"https://www.google.com/url?sa=i\u0026url=https%3A%2F%2Fpt.dreamstime.com%2Fvista-superior-das-folhas-frescas-de-salada-verde-vivas-com-tomates-vermelhos-e-fundo-texturizado-rabanete-image188958649\u0026psig=AOvVaw0_mVQmBnD-ZqgZC3R7o6CP\u0026ust=1683293670880000\u0026source=images\u0026cd=vfe\u0026ved=0CBEQjRxqFwoTCLiguNzj2_4CFQAAAAAdAAAAABAJ\",\n\t\"price\": 25,\n\t\"category\": \"Refeições\",\n\t\"created_at\": \"2023-05-04 13:37:52\",\n\t\"updated_at\": \"2023-05-04 13:37:52\",\n\t\"ingredients\": []\n}\n```\n\n#### Retorna todos os Pratos\n\n```http\n  GET /dishes\n```\n\n| QueryParams   | Tipo       | Descrição                                   |\n| :---------- | :--------- | :------------------------------------------ |\n| `category`      | `string` | **Opcional**. O categoria pela qual você quer pesquisar |\n| `ingredient`      | `string` | **Opcional**. O ingrediente pelo qual você quer pesquisar |\n| `min_price`      | `float` | **Opcional**. O preço mínimo pelo qual você quer pesquisar |\n| `min_price`      | `float` | **Opcional**. O preço máximo pelo qual você quer pesquisar |\n\n```JSON\n[\n\t{\n\t\t\"id\": 1,\n\t\t\"name\": \"Bolo\",\n\t\t\"description\": \"Bolo é um grão típico japonês...\",\n\t\t\"image_url\": \"fc43ebc873244687acd8-bolo.jpg\",\n\t\t\"price\": 10.02,\n\t\t\"category\": \"Sobremesa\",\n\t\t\"created_at\": \"2023-04-28 20:27:16\",\n\t\t\"updated_at\": \"2023-04-28 20:27:16\"\n\t},\n\t{\n\t\t\"id\": 8,\n\t\t\"name\": \"Lasanha\",\n\t\t\"description\": \"Lasanha é um...\",\n\t\t\"image_url\": \"\",\n\t\t\"price\": 10.02,\n\t\t\"category\": \"Refeição\",\n\t\t\"created_at\": \"2023-05-02 14:00:07\",\n\t\t\"updated_at\": \"2023-05-02 14:00:07\"\n\t},\n\t{\n\t\t\"id\": 13,\n\t\t\"name\": \"Salada Ravanello\",\n\t\t\"description\": \"Rabanetes, folhas verdes e molho agridoce salpicados com gergelim. O pão naan dá um toque especial.\",\n\t\t\"image_url\": \"https://www.google.com/url?sa=i\u0026url=https%3A%2F%2Fpt.dreamstime.com%2Fvista-superior-das-folhas-frescas-de-salada-verde-vivas-com-tomates-vermelhos-e-fundo-texturizado-rabanete-image188958649\u0026psig=AOvVaw0_mVQmBnD-ZqgZC3R7o6CP\u0026ust=1683293670880000\u0026source=images\u0026cd=vfe\u0026ved=0CBEQjRxqFwoTCLiguNzj2_4CFQAAAAAdAAAAABAJ\",\n\t\t\"price\": 25,\n\t\t\"category\": \"Refeições\",\n\t\t\"created_at\": \"2023-05-04 13:37:52\",\n\t\t\"updated_at\": \"2023-05-04 13:37:52\"\n\t}\n]\n```\n\n### Favoritos ❤️\n\n#### Cria um Favorito\n\n```http\n  POST /favorites/:dish_id\n```\n\n#### Deleta um Favorito\n\n```http\n  DELETE /favorites/:dish_id\n```\n\n#### Retorna todos os Favoritos do Usuário\n\n```http\n  GET /favorites\n```\n\n| QueryParams   | Tipo       | Descrição                                   |\n| :---------- | :--------- | :------------------------------------------ |\n| `category`      | `string` | **Opcional**. O categoria pela qual você quer pesquisar |\n| `ingredient`      | `string` | **Opcional**. O ingrediente pelo qual você quer pesquisar |\n| `min_price`      | `float` | **Opcional**. O preço mínimo pelo qual você quer pesquisar |\n| `min_price`      | `float` | **Opcional**. O preço máximo pelo qual você quer pesquisar |\n\n\n\n```JSON\n[\n\t{\n\t\t\"id\": 8,\n\t\t\"name\": \"Lasanha\",\n\t\t\"description\": \"Lasanha é um...\",\n\t\t\"image_url\": \"\",\n\t\t\"price\": 10.02,\n\t\t\"category\": \"Refeição\",\n\t\t\"created_at\": \"2023-05-02 14:00:07\",\n\t\t\"updated_at\": \"2023-05-02 14:00:07\"\n\t},\n\t{\n\t\t\"id\": 13,\n\t\t\"name\": \"Salada Ravanello\",\n\t\t\"description\": \"Rabanetes, folhas verdes e molho agridoce salpicados com gergelim. O pão naan dá um toque especial.\",\n\t\t\"image_url\": \"https://www.google.com/url?sa=i\u0026url=https%3A%2F%2Fpt.dreamstime.com%2Fvista-superior-das-folhas-frescas-de-salada-verde-vivas-com-tomates-vermelhos-e-fundo-texturizado-rabanete-image188958649\u0026psig=AOvVaw0_mVQmBnD-ZqgZC3R7o6CP\u0026ust=1683293670880000\u0026source=images\u0026cd=vfe\u0026ved=0CBEQjRxqFwoTCLiguNzj2_4CFQAAAAAdAAAAABAJ\",\n\t\t\"price\": 25,\n\t\t\"category\": \"Refeições\",\n\t\t\"created_at\": \"2023-05-04 13:37:52\",\n\t\t\"updated_at\": \"2023-05-04 13:37:52\"\n\t}\n]\n```\n\n### Pedidos 🛍️\n\n#### Cria um Pedido\n\n```http\n  POST /orders/:dish_id\n```\n\n#### Edita um Pedido\n\n```http\n  PUT /dishes/:order_id\n```\n\n- Aqui você tem duas opções de Requisições, são elas:\n\n```javascript\n{\n\t\"status\": \"Preparando\" // vai mudar apenas o status do Pedido\n}\n```\n\n```javascript\n{\n\t\"dish_id\": 4 // vai adicionar um Prato ao Pedido, se ele não estiver no Pedido\n\t\"quantity\": 1 // a quantidade do Prato no Pedido, aumente ou diminua até 1\n}\n```\n\n#### Deletar um Prato do Pedido\n\n```http\n  DELETE /orders/:order_id\n```\n\n```javascript\n{\n\t\"dish_id\": 4\n}\n```\n\n#### Retorna um Pedido com seus Pratos\n\n```http\n  GET /orders/:order_id\n```\n\n```JSON\n{\n\t\"order\": {\n\t\t\"id\": 9,\n\t\t\"user_id\": 8,\n\t\t\"status\": \"Pendente\",\n\t\t\"created_at\": \"2023-05-02 18:10:37\"\n\t},\n\t\"dishes\": [\n\t\t{\n\t\t\t\"name\": \"Café\",\n\t\t\t\"quantity\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Macarrão\",\n\t\t\t\"quantity\": 2\n\t\t}\n\t]\n}\n```\n\n#### Retorna todos os Pedidos do Usuário\n\n```http\n    GET /orders\n```\n\n```JSON\n[\n\t{\n\t\t\"order\": {\n\t\t\t\"id\": 10,\n\t\t\t\"user_id\": 9,\n\t\t\t\"status\": \"Entregue\",\n\t\t\t\"created_at\": \"2023-05-03 12:56:43\"\n\t\t},\n\t\t\"dishes\": [\n\t\t\t{\n\t\t\t\t\"name\": \"Café\",\n\t\t\t\t\"quantity\": 1\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"order\": {\n\t\t\t\"id\": 11,\n\t\t\t\"user_id\": 9,\n\t\t\t\"status\": \"Entregue\",\n\t\t\t\"created_at\": \"2023-05-03 12:59:39\"\n\t\t},\n\t\t\"dishes\": [\n\t\t\t{\n\t\t\t\t\"name\": \"Macarrão\",\n\t\t\t\t\"quantity\": 1\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"order\": {\n\t\t\t\"id\": 12,\n\t\t\t\"user_id\": 9,\n\t\t\t\"status\": \"Pendente\",\n\t\t\t\"created_at\": \"2023-05-04 13:44:00\"\n\t\t},\n\t\t\"dishes\": [\n\t\t\t{\n\t\t\t\t\"name\": \"Salada Ravanello\",\n\t\t\t\t\"quantity\": 1\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Macarrão\",\n\t\t\t\t\"quantity\": 1\n\t\t\t}\n\t\t]\n\t}\n]\n```\n## Licença\n\n- 📜 [MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheliolj%2Ffood-explorer-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheliolj%2Ffood-explorer-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheliolj%2Ffood-explorer-api/lists"}