{"id":19565338,"url":"https://github.com/odhithsen/snackaroo","last_synced_at":"2026-04-13T22:32:00.246Z","repository":{"id":257938949,"uuid":"868048570","full_name":"odhithSen/snackaroo","owner":"odhithSen","description":"🍽️ Snackaroo - A full-featured restaurant and order management system","archived":false,"fork":false,"pushed_at":"2024-10-17T07:23:29.000Z","size":715,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-06T14:05:18.106Z","etag":null,"topics":["full-stack","mysql","nodejs","react","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/odhithSen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2024-10-05T10:44:16.000Z","updated_at":"2024-10-17T07:23:33.000Z","dependencies_parsed_at":"2024-10-19T07:08:10.203Z","dependency_job_id":null,"html_url":"https://github.com/odhithSen/snackaroo","commit_stats":null,"previous_names":["odhithsen/snackaroo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/odhithSen/snackaroo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odhithSen%2Fsnackaroo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odhithSen%2Fsnackaroo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odhithSen%2Fsnackaroo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odhithSen%2Fsnackaroo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/odhithSen","download_url":"https://codeload.github.com/odhithSen/snackaroo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odhithSen%2Fsnackaroo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31774025,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T20:17:16.280Z","status":"ssl_error","status_checked_at":"2026-04-13T20:17:08.216Z","response_time":93,"last_error":"SSL_read: 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":["full-stack","mysql","nodejs","react","typescript"],"created_at":"2024-11-11T05:26:20.299Z","updated_at":"2026-04-13T22:32:00.229Z","avatar_url":"https://github.com/odhithSen.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Snackaroo - Restaurant Management Application\n\n## Table of Contents\n\n1. [Project Overview](#project-overview)\n2. [Features](#features)\n3. [Technologies Used](#technologies-used)\n4. [Setup Instructions](#setup-instructions)\n5. [Database Schema](#database-schema)\n6. [API Documentation](#api-documentation)\n7. [Error Handling and Validation](#error-handling-and-validation)\n8. [Project Structure](#project-structure)\n9. [Conclusion](#conclusion)\n10. [License](#license)\n\n## Project Overview\n\nThis is a full-stack restaurant management system that allows customers to make food orders to partner restaurants. It's implemented using **React.js** for the frontend, **Node.js** for the backend, and **MySQL** as the database. The app allows restaurant admins to manage restaurant menus, orders, and reports through a RESTful APIs. It supports features like JWT-based authentication, user management, order placement, reporting, and more.\n\n## Features\n\n- **User Authentication**: Users can sign up, log in, and log out using JWT-based authentication.\n- **Restaurant Management**: Restaurant admins can manage restaurant menu items.\n- **Order Management**: Users can place orders, view order history, and track order status.\n- **User Management**: Admins can manage Restaurants, view Restaurant details, and manage users.\n- **Reporting**: Restaurant admins can view order reports, sales reports, and other analytics.\n\n## Technologies Used\n\n### Frontend:\n\n- **React.js**: User interface development.\n- **Shadcn**: For UI components.\n- **Tailwind CSS**: For styling.\n- **Auth0**: For user authentication.\n- **Redux Toolkit**: For state management.\n- **Axios**: For making API requests.\n- **React Router**: For navigation and route protection.\n  \\\n  \\\n  [![Frontend](https://skillicons.dev/icons?i=ts,react,tailwind,redux)](/)\n\n### Backend:\n\n- **Node.js**: Backend framework.\n- **Express.js**: Used for building the RESTful API.\n- **Sequelize**: ORM for interacting with the MySQL database.\n- **JWT**: JSON Web Token for user authentication.\n- **AJV**: For request body validation.\n  \\\n  \\\n  [![Backend](https://skillicons.dev/icons?i=nodejs,express,ts,sequelize)](/)\n\n### Database:\n\n- **MySQL**: Relational database used to store user, restaurant, menu, and order information.\n  \\\n  \\\n  [![Database](https://skillicons.dev/icons?i=mysql)](/)\n\n## Setup Instructions\n\n### Prerequisites:\n\n- Node.js (v14+)\n- MySQL (v8+) / Docker desktop\n- Git\n- Auth0 application setup - [Configure Auth0](https://auth0.com/docs/quickstart/spa/react/01-login)\n\n### Cloning the repository\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/odhithSen/snackaroo.git\n   ```\n\n### Development Database Setup\n\nYou can either use a local MySQL database or start the configured mysql Docker image using `docker compose`. Here are the steps to set up a MySQL database using Docker:\n\n1. Create a `.env` file in the root directory (Check .env.example) and add the following environment variables:\n   ```bash\n    MYSQL_ROOT_PASSWORD\n    MYSQL_DATABASE\n    MYSQL_USER\n    MYSQL_PASSWORD\n   ```\n2. Start the MySQL Docker container:\n   ```bash\n    docker compose up\n   ```\n\n### Mono-repository Setup\n\nThis project uses a mono-repository setup with a shared `node_modules` folder for the frontend and backend. To set up the mono-repository, follow these steps:\n\n1. Configure npm workspace:\n   ```bash\n   npm install\n   ```\n\n### Backend Setup\n\n1. Navigate to the `backend` directory:\n\n   ```bash\n   cd backend\n   ```\n\n2. Install the dependencies:\n   ```bash\n   npm install\n   ```\n3. Create a `.env` file in the backend directory (Check .env.example) and add the following environment variables:\n   ```bash\n    PORT\n    DB_HOST\n    DB_USER\n    DB_PASS\n    DB_NAME\n    DB_PORT\n    AUTH0_AUDIENCE\n    AUTH0_DOMAIN\n   ```\n4. Run database migrations and seed data\n   ```bash\n   npx sequelize-cli db:migrate\n   npx sequelize-cli db:seed:all\n   ```\n5. Start the server:\n   ```bash\n   npm run dev\n   ```\n\n### Frontend Setup\n\n1. Navigate to the `frontend` directory:\n\n   ```bash\n   cd ../frontend\n   ```\n\n2. Install the dependencies:\n   ```bash\n   npm install\n   ```\n3. Create a `.env` file in the frontend directory (Check .env.example) and add the following environment variables:\n   ```bash\n    REACT_APP_AUTH0_DOMAIN\n    REACT_APP_AUTH0_CLIENT_ID\n    REACT_APP_AUTH0_CALLBACK_URL\n    REACT_APP_API_AUTH0_AUDIENCE\n    REACT_APP_BACKEND_URL\n   ```\n4. Start the server:\n   ```bash\n   npm start\n   ```\n\n## Database Schema\n\nDatabase diagrams and DB schema definitions can be found in the [DB schema](https://dbdiagram.io/d/snackaroo-6700e56afb079c7ebd6acac7) file.\n\n## API Documentation\n\nApi documentation generated using Postman and can be accessed by [API documentation](https://documenter.getpostman.com/view/20091662/2sAXxTapib) file.\n\n## Error Handling and Validation\n\n- **AJV**: Used for request body validation to ensure proper input.\n\n## project-structure\n\n```bash\n/frontend\n    /public\n    /src\n        /assets\n        /components\n        /hooks\n        /models\n        /pages\n        /services\n        /slices\n        /utils\n    /.env\n\n/backend\n    /config\n    /migrations\n    /seeders\n    /src\n        /controllers\n        /enums\n        /middlewares\n        /models\n        /routes\n        /services\n        /utils\n    /.env\n\n/LICENSE.txt\n/README.md\n/docker-compose.yml\n/.env\n```\n\n## Conclusion\n\nThis project implements a full-featured restaurant management system with essential features for user authentication, menu management, order management, and reporting. It adheres to best practices in full-stack development, ensuring security, and performance.\n\n## License\n\nPlease review the [license](LICENSE.txt) file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fodhithsen%2Fsnackaroo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fodhithsen%2Fsnackaroo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fodhithsen%2Fsnackaroo/lists"}