{"id":20440839,"url":"https://github.com/lucasdasilva96/airbean-admin","last_synced_at":"2026-04-09T23:48:17.190Z","repository":{"id":243304999,"uuid":"812042904","full_name":"LucasDaSilva96/Airbean-ADMIN","owner":"LucasDaSilva96","description":"Airbean API and dashboard for the Admin","archived":false,"fork":false,"pushed_at":"2024-06-17T07:19:13.000Z","size":16081,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-15T20:24:11.107Z","etag":null,"topics":["authentication","express","jwt","jwt-authentication","nodejs","react","typescript"],"latest_commit_sha":null,"homepage":"https://airbean-admin-ui.onrender.com","language":"TypeScript","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/LucasDaSilva96.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}},"created_at":"2024-06-07T20:48:14.000Z","updated_at":"2024-08-07T04:36:07.000Z","dependencies_parsed_at":"2024-06-17T07:47:55.898Z","dependency_job_id":"9ab119c2-96f9-4612-aa82-dcda57ba0f01","html_url":"https://github.com/LucasDaSilva96/Airbean-ADMIN","commit_stats":null,"previous_names":["lucasdasilva96/airbean-admin"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasDaSilva96%2FAirbean-ADMIN","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasDaSilva96%2FAirbean-ADMIN/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasDaSilva96%2FAirbean-ADMIN/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasDaSilva96%2FAirbean-ADMIN/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LucasDaSilva96","download_url":"https://codeload.github.com/LucasDaSilva96/Airbean-ADMIN/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241989857,"owners_count":20053802,"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":["authentication","express","jwt","jwt-authentication","nodejs","react","typescript"],"created_at":"2024-11-15T09:26:57.205Z","updated_at":"2025-12-04T01:03:48.757Z","avatar_url":"https://github.com/LucasDaSilva96.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Airbean\n\n![Preview of the main page](/server/public/img/Ariben-Admin-preview.png)\n\n## Performance Consideration\n\nNote: This project is hosted on a free server, which may impact loading performance, especially during peak usage times. Please be aware that response times and server availability may vary.\nPlease use google chrome in order to get full access.\n\n## Description:\n\nThis project provides a robust backend API for managing authentication, menu items, and promotional offers for a restaurant or similar business. It includes secure user authentication, CRUD operations for menu items, and management of promotional offers. The API ensures data security through authentication and authorization mechanisms, allowing only authorized administrators to perform sensitive operations.\n\n### Key Features:\n\n- User authentication with token-based security.\n- CRUD operations for menu items, including image uploads.\n- Management of promotional offers with admin-only access.\n- Secure endpoints using middleware for authentication and authorization.\n\n### Technologies Used:\n\n- TypeScript\n- Node.js\n- Express.js\n- MongoDB (or your preferred database)\n- Multer for file uploads\n- JSON Web Tokens (JWT) for authentication\n- ES Modules for module loading\n\n### Future Enhancements:\n\n- Implementing user roles and permissions for more granular access control.\n- Enhancing API responses with standardized error handling.\n\n## API Documentation\n\n#### Authentication Routes\n\n**Logout**\n\n- **Method:** `GET`\n- **Endpoint:** `/api/logout`\n- **Description:** Logs out the authenticated user.\n\n**Get Reset Token**\n\n- **Method:** `POST`\n- **Endpoint:** `/api/getToken`\n- **Description:** Generates a reset token for password recovery.\n\n**Sign Up**\n\n- **Method:** `POST`\n- **Endpoint:** `/api/signUp`\n- **Description:** Registers a new user with optional profile image upload.\n\n**Login**\n\n- **Method:** `POST`\n- **Endpoint:** `/api/login`\n- **Description:** Logs in an existing user.\n\n**Reset Password**\n\n- **Method:** `POST`\n- **Endpoint:** `/api/resetPassword`\n- **Description:** Updates the password for a user.\n\n**Update User**\n\n- **Method:** `PATCH`\n- **Endpoint:** `/api/updateUser`\n- **Description:** Updates user information, requires authentication and supports image upload.\n\n#### Menu Routes\n\n**Get All Menu Items**\n\n- **Method:** `GET`\n- **Endpoint:** `/api/menu/`\n- **Description:** Retrieves all menu items.\n\n**Create Menu Item**\n\n- **Method:** `POST`\n- **Endpoint:** `/api/menu/`\n- **Description:** Creates a new menu item with optional image upload, requires admin privileges.\n\n**Update Menu Item**\n\n- **Method:** `PATCH`\n- **Endpoint:** `/api/menu/:itemID`\n- **Description:** Updates an existing menu item identified by `itemID`, requires admin privileges and supports image upload.\n\n**Delete Menu Item**\n\n- **Method:** `DELETE`\n- **Endpoint:** `/api/menu/:itemID`\n- **Description:** Deletes a menu item identified by `itemID`, requires admin privileges.\n\n#### Promotional Offers Routes\n\n**Get All Promotional Offers**\n\n- **Method:** `GET`\n- **Endpoint:** `/api/promotional/`\n- **Description:** Retrieves all promotional offers.\n\n**Create Promotional Offer**\n\n- **Method:** `POST`\n- **Endpoint:** `/api/promotional/`\n- **Description:** Creates a new promotional offer, requires admin privileges.\n\n**Update Promotional Offer**\n\n- **Method:** `PATCH`\n- **Endpoint:** `/api/offers/:offerID`\n- **Description:** Updates an existing promotional offer identified by `offerID`, requires admin privileges.\n\n**Delete Promotional Offer**\n\n- **Method:** `DELETE`\n- **Endpoint:** `/api/offers/:offerID`\n- **Description:** Deletes a promotional offer identified by `offerID`, requires admin privileges.\n\n#### Notes:\n\n- Ensure proper authentication and authorization using JWT tokens and middleware (`protect` and `adminOnly`).\n- Utilize Multer middleware (`upload.single('image')`) for handling file uploads, particularly for user avatars and menu item images.\n- Implement error handling and validation to ensure robustness and security of API endpoints.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasdasilva96%2Fairbean-admin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucasdasilva96%2Fairbean-admin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasdasilva96%2Fairbean-admin/lists"}