{"id":19829632,"url":"https://github.com/gracefullcoder/koe_the_cafe_ejs","last_synced_at":"2026-05-11T13:09:43.536Z","repository":{"id":228646562,"uuid":"771718291","full_name":"gracefullcoder/Koe_The_Cafe_EJS","owner":"gracefullcoder","description":null,"archived":false,"fork":false,"pushed_at":"2024-07-19T20:18:12.000Z","size":84433,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-11T09:47:15.236Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"EJS","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/gracefullcoder.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-03-13T20:22:13.000Z","updated_at":"2024-07-19T20:23:40.000Z","dependencies_parsed_at":"2025-01-11T09:55:57.776Z","dependency_job_id":null,"html_url":"https://github.com/gracefullcoder/Koe_The_Cafe_EJS","commit_stats":null,"previous_names":["gracefullcoder/final_release"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gracefullcoder%2FKoe_The_Cafe_EJS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gracefullcoder%2FKoe_The_Cafe_EJS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gracefullcoder%2FKoe_The_Cafe_EJS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gracefullcoder%2FKoe_The_Cafe_EJS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gracefullcoder","download_url":"https://codeload.github.com/gracefullcoder/Koe_The_Cafe_EJS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241188945,"owners_count":19924715,"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-11-12T11:19:24.497Z","updated_at":"2025-11-24T13:04:41.298Z","avatar_url":"https://github.com/gracefullcoder.png","language":"EJS","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Deployment\nDeployment Link - [Koe the Cafe  Website!](https://koe-the-cafe-dynamic.onrender.com)\n\n# Koe the Cafe\n\nWelcome to Koe the Cafe's Koe the Café is a full-stack web application. This project showcases a café management system with extensive features for both users and administrators. With a strong emphasis on frontend aesthetics and functionality, Koe the Cafe offers a delightful journey for visitors.\n\n## Key Features\n\n- **MVC Structured Code**:\n  - Organized codebase following the Model-View-Controller pattern for better code maintainability and scalability.\n  - Separation of concerns, making the development process more efficient.\n \n- **User Features**\n  - Profile Management: Update personal details and profile photo.\n  - Table Booking: Book, view, modify, or cancel table reservations.\n  - Workshop Registration: Register, view, and manage workshop participation.\n  - Testimonials: Add, edit, or delete testimonials.\n  - Dashboard: Centralized view of all user activities and perform CRUD operations.\n\n- **Admin Features**\n  - Dynamic Content Management: Update, add, or remove website content in real-time, including event sections, specialty sections, hero sections, and workshop sections, ensuring that the website is always fresh and engaging..\n  - Workshop Management: Create new workshops, manage workshop registrations, and handle workshop cancellations.\n  - User Management: Perform CRUD operations on registered users, including managing roles and permissions.\n  - Table Booking Management: View and manage table bookings, including today's bookings for efficient customer service.\n  - Notification System: Create and send notifications to users via the user dashboard, as well as send emails to all registered users using Nodemailer.\n  - Testimonial Management: Manage user testimonials for showcasing customer feedback.\n\n- **Authentication**: \n  - Implemented with Google OAuth strategy for seamless and secure user login.\n  - Local authentication strategy using Passport.js for traditional email/password login.\n  - Secure handling of user credentials with hashing and salting.\n\n- **Authorization**: \n  - Role-based access control to restrict access to admin features.\n  - Ensures only authorized users can perform sensitive operations.\n \n- **Notifications and Emails**:\n  - Send notifications to users directly from the admin dashboard.\n  - Use Nodemailer to send emails to all registered users, ensuring effective communication.\n    \n- **Express Session**: \n  - Session management using `express-session` with MongoDB as the store to persist session data.\n  - Ensures user sessions remain consistent across server restarts.\n    \n- **Custom Error Handling**: \n  - Centralized error handling mechanism to catch and manage errors effectively.\n  - Custom error messages and status codes for better debugging and user experience.\n\n- **Validation**: \n  - Comprehensive validation using Joi on both client-side and server-side to ensure data integrity.\n  - Prevents invalid data from being processed or stored in the database.\n\n- **Visitor Interaction:** Visitors can book tables for dining experiences and register for workshops directly from the website, enhancing user engagement.\n- **Server-side:** The server is powered by Express.js and Node.js, delivering a robust and efficient backend for seamless user experiences.\n\n## Technologies Used\n\n## Technologies Used\n\n- **Backend:** Node.js, Express.js\n- **Database:** MongoDB\n- **Frontend:** EJS, HTML, CSS\n- **File Uploads:** Multer, ImageKit\n- **Environment Management:** dotenv\n- **Schema Validation:** Joi\n- **Session Management:** express-session, connect-mongo\n- **Authentication:** Passport.js (Google Strategy, Local Strategy), passport-google-oidc, passport-local-mongoose\n- **Email Handling:** Nodemailer, send-email\n- **Other Tools:** method-override for RESTful routing, and more.\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js and npm installed\n- MongoDB installed\n\n### Installation\n\n1. Clone repository:\n    ```bash\n    git clone https://github.com/your-username/koe-the-cafe.git\n    ```\n2. Install dependencies:\n    ```bash\n    npm install\n    ```\n\n### Configuration\n\n1. Create `.env` file in root directory.\n2. Add environment variables for MongoDB URL and ImageKit credentials.\n\n### Running the Server\n\n1. Start MongoDB:\n    ```bash\n    mongod\n    ```\n2. Run the project:\n    ```bash\n    npm start\n    ```\n\nWith these steps and features, Koe the Cafe ensures both administrators and users have a smooth and enjoyable experience managing and interacting with the website.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgracefullcoder%2Fkoe_the_cafe_ejs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgracefullcoder%2Fkoe_the_cafe_ejs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgracefullcoder%2Fkoe_the_cafe_ejs/lists"}