{"id":15843916,"url":"https://github.com/basir/self-order-kiosk","last_synced_at":"2025-09-03T22:33:09.215Z","repository":{"id":52966076,"uuid":"335519312","full_name":"basir/self-order-kiosk","owner":"basir","description":null,"archived":false,"fork":false,"pushed_at":"2021-04-12T06:43:00.000Z","size":1018,"stargazers_count":7,"open_issues_count":1,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-27T04:08:19.663Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/basir.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}},"created_at":"2021-02-03T05:37:43.000Z","updated_at":"2025-02-15T03:54:49.000Z","dependencies_parsed_at":"2022-08-19T19:21:24.388Z","dependency_job_id":null,"html_url":"https://github.com/basir/self-order-kiosk","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basir%2Fself-order-kiosk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basir%2Fself-order-kiosk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basir%2Fself-order-kiosk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basir%2Fself-order-kiosk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/basir","download_url":"https://codeload.github.com/basir/self-order-kiosk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243781592,"owners_count":20347103,"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":[],"created_at":"2024-10-05T17:03:26.462Z","updated_at":"2025-03-15T19:31:36.884Z","avatar_url":"https://github.com/basir.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Food Self-Order Kiosk\nWelcome to my coding course to build a Self-Order Kiosk like Macdonalds. In this course, you will learn the essential tools and skills to a web application for Self-Order Kiosk using React, Context API, and Material UI in the frontend and Node and MongoDB in the backend.\n\nMy name is Basir and I'll be your instructor in this course.\n\nBy the end of this course, you will be able to build a professional and fully-functional web application to launch on a self-order kiosk in a restaurant.\nIn this path, you will learn the modern React concepts and libraries: \n- Material UI to build professional looking web applications\n- Themes, Animations, Modals, Boxes, Forms and etc\n- React Hooks like useState and useReducer to manage state in single components\n- Context API to handle complex states between multiple components\n-  Node and Express to build a simple simple and elegant backend\n- MongoDB and Mongoose to manage orders in the backend\n- Heroku to deploy your web application on cloud servers\n\nThis course is for non-coders or juniors who want to be a pro developer and find a job in 22 million job opportunities around the world.\n\nKnowing React basics like component, state and props are the only requirements for this course.\n\nFeel free to take a look at the course preview and enroll if it is along with your ambitions.\n\n\n## Run Locally\n\n### 1. Clone repo\n\n```\n$ git clone git@github.com:basir/self-order-kiosk\n$ cd self-order-kiosk\n```\n\n### 2. Setup MongoDB\n\n- Local MongoDB\n  - Install it from [here](https://www.mongodb.com/try/download/community)\n  - Create .env file in root folder\n  - Set MONGODB_URL=mongodb://localhost/self-order-kiosk  \n- Atlas Cloud MongoDB\n  - Create database at [https://cloud.mongodb.com](https://cloud.mongodb.com)\n  - Create .env file in root folder\n  - Set MONGODB_URL=mongodb+srv://your-db-connection\n\n### 3. Run Backend\n\n```\n$ npm install\n$ npm run server\n```\n\n### 4. Run Frontend\n\n```\n# open new terminal\n$ npm start\n```\n\n### 5. Seed Sample Data\n\n- Open: http://localhost:5000/api/products/seed\n- It creates 9 sample products\n\n### 6. Open App\n\n- Open: http://localhost:3000\n\n\n# Lessons\n1. Introduction\n2. Create home screen\n   1. install vs code and chrome\n   2. crate react app\n   3. create screens/HomeScreen.js\n3. Create choose order type screen\n   1. Create Choose Order Screen\n   2. Create React Context\n   3. Create Set Order Type Action\n   4. Redirect user to order screen\n4. Create backend api for categories\n   1. create server.js\n   2. create data.js with sample data\n   3. return categories\n5. List categories\n   1. Create Order Screen\n   2. get categoryList from context\n   3. list categories in use effect\n   4. show categories in left side\n6. Create backend api for products\n   1. connect to mongodb and use mongoose\n   2. create product model\n   3. seed products\n   4. create api for products\n7. List products\n   1. get productList from context   \n   2. list products in use effect\n   3. show products in main section\n8. Add \u0026 remove food to order\n   1. create add to order modal\n   2. create addToOrder action\n   3. create removeFromOrder action\n   4. create my order section\n   5. handle cancel order\n   6. handle finish order\n9. Create review order screen\n   1.  Create review screen\n   2.  add or remove items\n   3.  cancel or proceed to checkout\n10. Create select payment screen\n    1.  Create select screen\n    2.  show payment options\n    3.  create payment screen\n    4.  redirect to complete screen\n11. Complete order\n    1. create order model  \n    2. build backend api\n    3. create complete order screen\n12. Publish to heroku\n    1.  create Procfile\n    2.  serve build folder\n    3.  send index.html file\n    4.  create heroku account\n    5.  install heroku cli\n    6.  create cloud mongodb database\n    7.  get connection string from cloud mongodb\n    8.  put it in heroku\n    9.  seed data\n    10. test web app on heroku\n13. Create Admin Screen\n    1.  build list order api\n    2.  show order in the screen\n    3.  create ready, cancel and deliver button\n14. Create Queue Screen\n    1.  build list queue order api\n    2.  show queue in the screen in 2 columns","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasir%2Fself-order-kiosk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbasir%2Fself-order-kiosk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasir%2Fself-order-kiosk/lists"}