{"id":20261841,"url":"https://github.com/johnmata0427/food-ordering-api-restful","last_synced_at":"2026-02-07T18:02:30.436Z","repository":{"id":246828299,"uuid":"821050817","full_name":"JohnMata0427/Food-Ordering-API-RESTful","owner":"JohnMata0427","description":"RESTful API for System Food Ordering at ESFOT faculty of EPN","archived":false,"fork":false,"pushed_at":"2025-01-12T20:35:41.000Z","size":310,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-11T01:51:38.226Z","etag":null,"topics":["backend","expressjs","mongoose","render","restful-api"],"latest_commit_sha":null,"homepage":"https://food-ordering-api-restful.onrender.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JohnMata0427.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2024-06-27T17:55:16.000Z","updated_at":"2025-02-11T22:16:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"aaf22bd3-6e68-4f59-a0d6-47b219ce983b","html_url":"https://github.com/JohnMata0427/Food-Ordering-API-RESTful","commit_stats":null,"previous_names":["johnmata0427/food-ordering-api-restful"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JohnMata0427/Food-Ordering-API-RESTful","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnMata0427%2FFood-Ordering-API-RESTful","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnMata0427%2FFood-Ordering-API-RESTful/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnMata0427%2FFood-Ordering-API-RESTful/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnMata0427%2FFood-Ordering-API-RESTful/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JohnMata0427","download_url":"https://codeload.github.com/JohnMata0427/Food-Ordering-API-RESTful/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnMata0427%2FFood-Ordering-API-RESTful/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29203014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T17:44:10.191Z","status":"ssl_error","status_checked_at":"2026-02-07T17:44:07.936Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["backend","expressjs","mongoose","render","restful-api"],"created_at":"2024-11-14T11:27:23.028Z","updated_at":"2026-02-07T18:02:30.420Z","avatar_url":"https://github.com/JohnMata0427.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg height=\"35px\" src=\"https://github.com/JohnMata0427/Food-Ordering-API-RESTful/assets/150484680/842b4e83-fd68-4f5e-8b20-e644053a69cf\" alt=\"Logo\"\u003e\n  $\\color{Apricot}{Food\\ Ordering\\ at\\ ESFOT\\ API\\ RESTful}$\n  \u003cimg height=\"35px\" src=\"https://github.com/JohnMata0427/Food-Ordering-API-RESTful/assets/150484680/842b4e83-fd68-4f5e-8b20-e644053a69cf\" alt=\"Logo\"\u003e\n\u003c/h1\u003e\n\n---\n\n\u003e [!IMPORTANT]\n\u003e **Problematic Introduction**\n\u003e \n\u003e The lunchtime rush at ESFOT poses a significant operational challenge.\n\u003e The influx of students seeking to order their meals within a limited timeframe (11 AM to 2 PM) results in the formation of long queues.\n\u003e These extended wait times not only inconvenience students but also negatively impact their overall dining experience.\n\u003e Additionally, the manual ordering process, with its inherent limitations, can lead to inefficiencies and potential errors.\n\u003e The existing system struggles to accommodate the high volume of orders during peak hours, leading to delays and frustration among students.\n\n---\n\n\u003ch3 id=\"sprint-0\"\u003e🥣 Sprint 0 - Development Environment Configuration\u003c/h3\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e✅ Definition of Requirements and Constraints\u003c/summary\u003e\n\n\u003e - **User Registration and Authentication**\n\u003e   \n\u003e   - Users must be able to register with a username, password, and other relevant details.\n\u003e   - Users must be able to log in and log out of the system.\n\u003e \n\u003e - **Menu Management**\n\u003e\n\u003e   - Administrators must be able to add, edit, and delete menu items.\n\u003e   - Users must be able to view the available menu, including descriptions, prices, and availability of dishes.\n\u003e\n\u003e - **Placing Orders**\n\u003e\n\u003e   - Users must be able to select menu items and place an order.\n\u003e   - Users must be able to view a summary of their order before confirming it.\n\u003e   - Users must be able to modify or cancel an order before final confirmation.\n\u003e \n\u003e - **Order History**\n\u003e\n\u003e   - Users must be able to view their past orders.\n\u003e   - Users must be able to repeat previous orders easily.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e✅ Backend Project Structure\u003c/summary\u003e\n\n\u003e - **Tools**\n\u003e \n\u003e | Image                                                        | Name                       |\n\u003e |--------------------------------------------------------------|----------------------------|\n\u003e | ![VSCode](https://skillicons.dev/icons?i=vscode\u0026theme=light) | Visual Studio Code         |\n\u003e | ![MongoDB](https://skillicons.dev/icons?i=mongo\u0026theme=light) | MongoDB Atlas y Compass    |\n\u003e | ![NodeJS](https://skillicons.dev/icons?i=nodejs\u0026theme=light) | Node.js                    |\n\u003e | ![PNPM](https://skillicons.dev/icons?i=pnpm\u0026theme=light)     | PNPM (Recommendation)      |\n\u003e \n\u003e - **Project Initialization and Installation Dependencies**\n\u003e   \n\u003e   - Open the terminal and run the following command:\n\u003e     ```\n\u003e     npm init -y\n\u003e     ```\n\u003e   - Now proceed to install the following modules for the development and production environment:\n\u003e     ```\n\u003e     npm i express bcryptjs mongoose dotenv nodemailer jsonwebtoken cors\n\u003e     ```\n\u003e     \n\u003e - **Project File Structure**\n\u003e\n\u003e   - Now we proceed to create a series of files and directories for the web server, running each of these commands in order:\n\u003e     ```\n\u003e     mkdir src\n\u003e     ```\n\u003e     ```\n\u003e     cd src\n\u003e     ```\n\u003e     ```\n\u003e     \"config\",\"controllers\",”helpers”,”middlewares”,”models”,”routers” | %{New-Item -Name “$_” -ItemType “Directory”}\n\u003e     ```\n\u003e     ```\n\u003e     cd ..\n\u003e     ```\n\u003e   - Create the directories database.js index.js server.js .env .env.example .gitignore, the final result is this:\n\u003e   \n\u003e     ![image](https://github.com/JohnMata0427/Food-Ordering-API-RESTful/assets/150484680/a97398f6-1260-40ba-a4a8-56721dad300f)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e✅ Database Development\u003c/summary\u003e\n\n\u003e - MongoDB Collections\n\u003e   - Chefs\n\u003e   - Students\n\u003e   - Orders\n\u003e   - Products\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e✅ User Roles\u003c/summary\u003e\n  \n\u003e - Students 🧑‍🎓👩‍🎓\n\u003e - Chefs 👨‍🍳👩‍🍳\n\n\u003c/details\u003e\n\n---\n\n\u003ch3 id=\"sprint-1\"\u003e👨‍🍳 Sprint 1 - Chef Module\u003c/h3\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e✅ Endpoints to be Developeds\u003c/summary\u003e\n\n\u003e \u003cdiv align=\"center\"\u003e\n\u003e   \u003ch4\u003eDevelopment in Express\u003c/h4\u003e\n\u003e   \u003cimg src=\"https://skillicons.dev/icons?i=express\u0026theme=light\"\u003e\n\u003e \u003c/div\u003e\n\u003e\n\u003e \u003cp\u003eTo create the backend endpoints, the MVC model is used, and the files that contain the sprint presentable are:\u003c/p\u003e\n\u003e \n\u003e [![Model](https://img.shields.io/badge/Chef%20Model-000000.svg?logo=JavaScript)](/src/models/chef.js)\n\u003e [![Controller](https://img.shields.io/badge/Chef%20Controller-000000.svg?logo=JavaScript)](/src/controllers/chef_controller.js)\n\u003e [![View](https://img.shields.io/badge/Chef%20Route-000000.svg?logo=JavaScript)](/src/routes/chef.routes.js)\n\u003e\n\u003e 🛠️ Endpoint for registration\n\u003e\n\u003e ```http\n\u003e POST /api/register\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoints for sending and verifying email\n\u003e \n\u003e ```http\n\u003e GET /api/confirmar/:token\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for login\n\u003e \n\u003e ```http\n\u003e POST /api/login\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for password reset\n\u003e \n\u003e ```http\n\u003e POST /api/chef/recuperarpassword\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for cheking token for password reset\n\u003e \n\u003e ```http\n\u003e GET /api/chef/recuperarpassword/:token\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for new password\n\u003e \n\u003e ```http\n\u003e POST /api/chef/nuevopassword/:token\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for updating profile\n\u003e \n\u003e ```http\n\u003e PUT /api/chef/:id\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for updating password\n\u003e \n\u003e ```http\n\u003e POST /api/chef/actualizarpassword\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for getting chef by id\n\u003e \n\u003e ```http\n\u003e GET /api/chef/:id\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for getting all chefts\n\u003e ```http\n\u003e GET /api/chefs\n\u003e ```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e▶️ Interface Design\u003c/summary\u003e\n\n\u003e \u003cdiv align=\"center\"\u003e\n\u003e   \u003ch4\u003ePrototyping in Figma\u003c/h4\u003e\n\u003e   \u003cimg src=\"https://skillicons.dev/icons?i=figma\u0026theme=light\"\u003e\n\u003e \u003c/div\u003e\n\u003e\n\u003e 🎨 Figma layout URL: https://www.figma.com/design/QgTkoUAXTEj120bpNTTu5c/Food-Ordering-Application-at-ESFOT\n\n\u003c/details\u003e\n\n---\n\n\u003ch3 id=\"sprint-2\"\u003e👩‍🎓 Sprint 2 - Student Module\u003c/h3\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e✅ Endpoints to be Developeds\u003c/summary\u003e\n\n\u003e \u003cdiv align=\"center\"\u003e\n\u003e   \u003ch4\u003eDevelopment in Express\u003c/h4\u003e\n\u003e   \u003cimg src=\"https://skillicons.dev/icons?i=express\u0026theme=light\"\u003e\n\u003e \u003c/div\u003e\n\u003e\n\u003e \u003cp\u003eTo create the backend endpoints, the MVC model is used, and the files that contain the sprint presentable are:\u003c/p\u003e\n\u003e \n\u003e [![Model](https://img.shields.io/badge/Student%20Model-000000.svg?logo=JavaScript)](/src/models/estudiante.js)\n\u003e [![Controller](https://img.shields.io/badge/Student%20Controller-000000.svg?logo=JavaScript)](/src/controllers/estudiante_controller.js)\n\u003e [![View](https://img.shields.io/badge/Student%20Routes-000000.svg?logo=JavaScript)](/src/routes/estudiante.routes.js)\n\u003e\n\u003e 🛠️ Endpoint for registration\n\u003e\n\u003e ```http\n\u003e POST /api/estudiantes/registro\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoints for sending and verifying email\n\u003e \n\u003e ```http\n\u003e GET /api/estudiantes/confirmar/:id\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for login\n\u003e \n\u003e ```http\n\u003e POST /api/estudiantes/login\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for password reset\n\u003e \n\u003e ```http\n\u003e PUT /api/estudiantes/recuperarpassword\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for cheking token for password reset\n\u003e \n\u003e ```http\n\u003e GET /api/estudiantes/recuperarpassword/:token\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for new password\n\u003e \n\u003e ```http\n\u003e POST /api/estudiantes/nuevopassword/:token\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for updating profile\n\u003e \n\u003e ```http\n\u003e PUT /api/estudiantes/:id\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for updating password\n\u003e \n\u003e ```http\n\u003e PUT /api/estudiantes/actualizarpassword\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for getting student by ID\n\u003e \n\u003e ```http\n\u003e GET /api/estudiante/:id\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for getting all students\n\u003e \n\u003e ```http\n\u003e GET /api/estudiantes\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for getting student profile\n\u003e \n\u003e ```http\n\u003e GET /api/estudiantes/perfil\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for deleting student account\n\u003e ```http\n\u003e DELETE /api/estudiantes/:id\n\u003e ```\n\n\u003c/details\u003e\n\n---\n\n\u003ch3 id=\"sprint-3\"\u003e🏷️🍛 Sprint 3 - Products and Orders Module\u003c/h3\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e✅ Endpoints to be Developeds\u003c/summary\u003e\n\n\u003e \u003cdiv align=\"center\"\u003e\n\u003e   \u003ch4\u003eDevelopment in Express\u003c/h4\u003e\n\u003e   \u003cimg src=\"https://skillicons.dev/icons?i=express\u0026theme=light\"\u003e\n\u003e \u003c/div\u003e\n\u003e\n\u003e \u003cp\u003eTo create the backend endpoints, the MVC model is used, and the files that contain the sprint presentable are:\u003c/p\u003e\n\u003e \n\u003e [![Model](https://img.shields.io/badge/Order%20Model-000000.svg?logo=JavaScript)](/src/models/pedido.js)\n\u003e [![Controller](https://img.shields.io/badge/Order%20Controller-000000.svg?logo=JavaScript)](/src/controllers/pedido_controller.js)\n\u003e [![View](https://img.shields.io/badge/Order%20Routes-000000.svg?logo=JavaScript)](/src/routes/pedido.routes.js)\n\u003e\n\u003e [![Model](https://img.shields.io/badge/Product%20Model-000000.svg?logo=JavaScript)](/src/models/producto.js)\n\u003e [![Controller](https://img.shields.io/badge/Product%20Controller-000000.svg?logo=JavaScript)](/src/controllers/producto_controller.js)\n\u003e [![View](https://img.shields.io/badge/Product%20Routes-000000.svg?logo=JavaScript)](/src/routes/producto.routes.js)\n\u003e\n\u003e 🛠️ Endpoint for order registration\n\u003e\n\u003e ```http\n\u003e POST /api/pedido/registro\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoints for getting order by id\n\u003e \n\u003e ```http\n\u003e GET /api/pedido/:id\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for getting all orders\n\u003e \n\u003e ```http\n\u003e GET /api/pedidos\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for getting all orders of authenticated student\n\u003e \n\u003e ```http\n\u003e GET /api/pedidos/estudiante\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for updating order state\n\u003e \n\u003e ```http\n\u003e PUT /api/pedido/:id\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for deleting order\n\u003e \n\u003e ```http\n\u003e DELETE /api/pedido/:id\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for creating product\n\u003e \n\u003e ```http\n\u003e POST /api/productos/registro\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for getting all products\n\u003e \n\u003e ```http\n\u003e GET /api/productos\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for getting product by id\n\u003e \n\u003e ```http\n\u003e GET /api/productos/:id\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for updating product\n\u003e \n\u003e ```http\n\u003e PUT /api/productos/:id\n\u003e ```\n\u003e\n\u003e 🛠️ Endpoint for deleting product\n\u003e ```http\n\u003e DELETE /api/productos/:id\n\u003e ```\n\n\u003c/details\u003e\n\n---\n\n\u003ch3 id=\"sprint-3\"\u003e🥤🍫 Sprint 4 - Deploy and Documentation\u003c/h3\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e▶️ Deploy\u003c/summary\u003e\n\n\u003e \u003cdiv align=\"center\"\u003e\n\u003e   \u003ch4\u003eDeployment in Render\u003c/h4\u003e\n\u003e   \u003cimg height=\"50px\" src=\"https://cdn.sanity.io/images/34ent8ly/production/ec37a3660704e1fa2b4246c9a01ab34e145194ad-824x824.png\"\u003e\n\u003e \u003c/div\u003e\n\u003e\n\u003e 🌐 Render Deployment URL: https://food-ordering-api-restful.onrender.com\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e▶️ API Documentation\u003c/summary\u003e\n\n\u003e \u003cdiv align=\"center\"\u003e\n\u003e   \u003ch4\u003eDocumentation in Swagger\u003c/h4\u003e\n\u003e   \u003cimg height=\"50px\" src=\"https://cdn.svgporn.com/logos/swagger.svg\"\u003e\n\u003e \u003c/div\u003e\n\u003e \n\u003e 📓 API Documentation URL: https://app.swaggerhub.com/apis/ALANRIOSHD/api-res_tful_para_el_sistema_de_pedidos_de_comida_esfot/1.0.0\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnmata0427%2Ffood-ordering-api-restful","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnmata0427%2Ffood-ordering-api-restful","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnmata0427%2Ffood-ordering-api-restful/lists"}