{"id":24516695,"url":"https://github.com/manjillama/food-loops","last_synced_at":"2026-04-10T04:37:48.030Z","repository":{"id":48358324,"uuid":"369110571","full_name":"manjillama/food-loops","owner":"manjillama","description":"An easy open-source Backend-as-a-Service (BaaS) that provides developers API needed for small restaurant/food businesses to go online.","archived":false,"fork":false,"pushed_at":"2021-08-05T16:46:25.000Z","size":955,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"dev","last_synced_at":"2025-01-22T01:28:56.997Z","etag":null,"topics":["express","food-delivery","food-ordering","good-first-pr","mongodb","mongoose","nodejs","react","rest-api","restaurant-app","typescript"],"latest_commit_sha":null,"homepage":"https://nutriseasons.herokuapp.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/manjillama.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-05-20T06:54:15.000Z","updated_at":"2023-02-21T18:23:51.000Z","dependencies_parsed_at":"2022-08-24T14:49:48.959Z","dependency_job_id":null,"html_url":"https://github.com/manjillama/food-loops","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manjillama%2Ffood-loops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manjillama%2Ffood-loops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manjillama%2Ffood-loops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manjillama%2Ffood-loops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manjillama","download_url":"https://codeload.github.com/manjillama/food-loops/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243719356,"owners_count":20336596,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","food-delivery","food-ordering","good-first-pr","mongodb","mongoose","nodejs","react","rest-api","restaurant-app","typescript"],"created_at":"2025-01-22T01:27:21.327Z","updated_at":"2025-12-30T19:07:17.568Z","avatar_url":"https://github.com/manjillama.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## 🥙 Project Introduction\n\nEasily customizable. **Food Loops** is an easy open-source Backend-as-a-Service (BaaS) that provides developers API needed for small restaurant/food businesses to go online. Just use food loops dashboard to add your food and get ready-to-use API for fetching your menu and implementing guest user checkout.\n\nCurrently created using Node.js on the top of Express framework and TypeScript. For database, we've decided to go with MongoDB and and Mongoose as an ODM. Also using AWS S3 for image storage but you can update code to your own requirements.\n\n\u003cdiv align=\"center\"\u003e\n  \n  ![](./banner.gif)\n  \n\u003c/div\u003e\n\nThe content is divided into several sections:\n\n- [Requirements](#-requirements)\n- [Setup](#-setup)\n- [Documentation](#-documentation)\n- [Contributing guide](#-contributing-guide)\n\n## 🎛 Requirements\n\n- NodeJS \u003e= 12.x\n- NPM \u003e= 6.x\n- MongoDB \u003e= 4.2\n\n## 🚀 Setup\n\nFirst of all, you need to check if you're using the required versions of Node.js and npm \u003cbr/\u003e\n\nThen, please follow the instructions below:\n\n### Clone the repository\n\n```bash\n\n# Clone with SSH\n$ git clone git@github.com:manjillama/food-app.git\n\n# Or with HTTPS\n$ git clone https://github.com/manjillama/food-app.git\n```\n\n### Installation\n\nThe project consists of a client-side admin app `/admin-app` and an API server `/api` in the project root directory. Navigate to respective project folder to see the installation instructions.\n\n## 📜 Documentation\n\nBased on simple REST principles, the Food Loops API endpoints returns JSON metadata.\n\nAPI Documentation for user-side actions i.e. fetching menu, menu items and checkout.\n\n### Get all menu\n\nRequest\n\n```curl\nGET /api/menu\n```\n\nYou can add sorting, filters, paginations by adding the request params to the request.\n\n| Request Params Fields                           | Values                                                                   |\n| ----------------------------------------------- | ------------------------------------------------------------------------ |\n| E.g. isHotMeal, isEnabled, type etc. (Optional) | Field value (Using same field multiple times will result in union query) |\n| page (Optional)                                 | Page number (default value is 1)                                         |\n| size (Optional)                                 | Size of response list per page (default is 40)                           |\n| sort (Optional)                                 | -field i.e. -price (Sort using price in descending order)                |\n| fields (Optional)                               | i.e. id, name, categories, etc. (Fetch provided fields only)             |\n\nResponse\n\n```json\n{\n  \"status\": \"success\",\n  \"data\": {\n    \"total\": 2,\n    \"size\": 40,\n    \"menuItems\": [\n      {\n        \"isHotMeal\": true,\n        \"isEnabled\": true,\n        \"type\": \"Main Dish\",\n        \"categories\": [\"Breakfast\", \"Lunch\", \"Dinner\"],\n        \"_id\": \"60a774a24367081449540954\",\n        \"name\": \"Grilled Steak Tortilla Salad\",\n        \"description\": \"Serve a plate of your favorite taco fixins' — greens, steak strips, and jalapeños.\",\n        \"price\": 249,\n        \"servingSize\": 597,\n        \"nutrients\": [\n          {\n            \"_id\": \"60a774a24367081449540955\",\n            \"name\": \"Carbohydrates\",\n            \"amount\": 120,\n            \"unit\": \"g\"\n          },\n          {\n            \"_id\": \"60a774a24367081449540956\",\n            \"name\": \"Protein\",\n            \"amount\": 200,\n            \"unit\": \"g\"\n          },\n          {\n            \"_id\": \"60a774a24367081449540957\",\n            \"name\": \"Fat\",\n            \"amount\": 150,\n            \"unit\": \"g\"\n          },\n          {\n            \"_id\": \"60a774a24367081449540958\",\n            \"name\": \"Cholesterol\",\n            \"amount\": 90,\n            \"unit\": \"mg\"\n          },\n          {\n            \"_id\": \"60a774a24367081449540959\",\n            \"name\": \"Fiber\",\n            \"amount\": 300,\n            \"unit\": \"g\"\n          },\n          {\n            \"_id\": \"60a774a2436708144954095a\",\n            \"name\": \"Sodium\",\n            \"amount\": 60,\n            \"unit\": \"mg\"\n          }\n        ]\n      },\n      {\n        \"isHotMeal\": true,\n        \"isEnabled\": true,\n        \"type\": \"Main Dish\",\n        \"categories\": [\"Lunch\", \"Dinner\"],\n        \"_id\": \"60a77536436708144954095b\",\n        \"name\": \"Chicken \u0026 Veggie Fajitas\",\n        \"description\": \"Time to clean out the fridge? These versatile skillet chicken fajitas are designed to work with whatever vegetables you happen to have on hand. The key is to slice all the veggies to approximately the same size so they cook evenly.\",\n        \"price\": 448,\n        \"servingSize\": 700,\n        \"nutrients\": [\n          {\n            \"_id\": \"60a77536436708144954095c\",\n            \"name\": \"Carbohydrates\",\n            \"amount\": 300,\n            \"unit\": \"g\"\n          },\n          {\n            \"_id\": \"60a77536436708144954095d\",\n            \"name\": \"Protein\",\n            \"amount\": 350,\n            \"unit\": \"g\"\n          },\n          {\n            \"_id\": \"60a77536436708144954095e\",\n            \"name\": \"Fat\",\n            \"amount\": 90,\n            \"unit\": \"g\"\n          },\n          {\n            \"_id\": \"60a77536436708144954095f\",\n            \"name\": \"Cholesterol\",\n            \"amount\": 70,\n            \"unit\": \"mg\"\n          }\n        ],\n        \"photo\": \"https://manjiltamang.com/public/menu-1621612320621.jpg\"\n      }\n    ]\n  }\n}\n```\n\n### Get menu by id\n\nRequest\n\n```curl\nGET /api/menu/60a4d13d87103d230da48c57\n```\n\nResponse\n\n```json\n{\n  \"status\": \"success\",\n  \"data\": {\n    \"menuItem\": {\n      \"isHotMeal\": false,\n      \"isEnabled\": false,\n      \"type\": \"Main Dish\",\n      \"categories\": [\"Lunch\", \"Dinner\", \"Breakfast\"],\n      \"_id\": \"60a4d13d87103d230da48c57\",\n      \"name\": \"Creamed Spinach\",\n      \"description\": \"Creamy, cheesy and easy creamed spinach prepared with cream cheese and spinach! It is the perfect party or dinner side dish.\",\n      \"price\": 220,\n      \"servingSize\": 100,\n      \"__v\": 12,\n      \"nutrients\": [\n        {\n          \"_id\": \"60a4dc46e48664250de42e6d\",\n          \"name\": \"Cholesterol\",\n          \"amount\": 12,\n          \"unit\": \"mg\"\n        },\n        {\n          \"_id\": \"60a4dc46e48664250de42e6e\",\n          \"name\": \"Fat\",\n          \"amount\": 40,\n          \"unit\": \"g\"\n        },\n        {\n          \"_id\": \"60a4dc46e48664250de42e6f\",\n          \"name\": \"Carbohydrates\",\n          \"amount\": 100,\n          \"unit\": \"g\"\n        },\n        {\n          \"_id\": \"60a4dc46e48664250de42e70\",\n          \"name\": \"Protein\",\n          \"amount\": 350,\n          \"unit\": \"g\"\n        },\n        {\n          \"_id\": \"60a77cef4367081449540972\",\n          \"name\": \"Fiber\",\n          \"amount\": 200,\n          \"unit\": \"g\"\n        },\n        {\n          \"_id\": \"60a77cef4367081449540973\",\n          \"name\": \"Sodium\",\n          \"amount\": 20,\n          \"unit\": \"mg\"\n        }\n      ],\n      \"photo\": \"https://manjiltamang.com/public/menu-1621756211054.jpg\"\n    }\n  }\n}\n```\n\n### Order Checkout\n\n```json\nPOST /api/checkout\n\n{\n    \"firstName\": \"Manjil\",\n    \"lastName\": \"Tamang\",\n    \"address\": \"Jorpati, Attherkhel\",\n    \"email\": \"lamamanjil@gmail.com\",\n    \"phoneNumber\": 9803587436,\n    \"deliveryDate\": \"2021-05-30\",\n    \"deliveryTime\": \"14:00\",\n    \"menuItems\": [\n        {\n            \"menuItem\": \"60a4d13d87103d230da48c57\",\n            \"quantity\": 1\n        },\n        {\n            \"menuItem\": \"60a774a24367081449540954\",\n            \"quantity\": 2\n        }\n    ]\n}\n```\n\n## 🤝 Contributing guide\n\nRead our [contributing guide](./CONTRIBUTING.md) to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes.\n\n## 📝 License\n\nLicensed under the [MIT License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanjillama%2Ffood-loops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanjillama%2Ffood-loops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanjillama%2Ffood-loops/lists"}