Table of Contents
Kukeen is a full-stack web application designed to facilitate meal preparation with pre-packaged ingredients.
It allows users to sign up and log in as either customers or administrators.
- Customers can purchase mealkits, manage their cart, and perform other related actions,
- Administrators can perform CRUD (Create, Read, Update, Delete) operations on the mealkits inventory.
The application follows the Model-View-Controller (MVC) pattern for efficient organization and separation of concerns.
KuKeen/
│
├── assets/
│ ├── css/
│ ├── images/
│ └── togglePassword.js # Responsible for toggling the passsword visibility
│
├── controllers/
│ ├── cartController.js
│ └── generalController.js
│ └── loadDataController.js # Endpoint responsible to restart the database (emergency recovery)
│ └── mealkitsController.js
│
├── modules/
│ ├── mealKitModel.js
│ └── mealkitUtil.js
│ └── userModel.js
│
├── views/
│ ├── general/ # Contain all the general views (home.ejs, cart.ejs, etc)
│ ├── layouts/
│ └── main.ejs # Layout used in every page (using EJS-Layouts)
│ ├── mealkits/ # Contain all the mealkit's related views
│ ├── partials/
│ ├── footer.ejs
│ └── mealkits.ejs
│ └── navbar.ejs
│
├── .gitignore # Git ignore file
├── README.md # Project README file
└── server.js # Project Entry point
This section outlines some of the features of the website.
The website employs bcrypt.js to securely hash and store user passwords in MongoDB. Only registered users are permitted to log in.
I utilized express-session to secure endpoints, ensuring that only logged-in users can access certain pages. This also prevents customers from accessing administrator pages.
Administrators have the capability to create, delete, and edit meal kits through the admin panel.
Sessions are used to track user activity, maintaining the contents of the cart even if the user leaves the website. Users can also modify the quantity, add / remove items on their cart. By simulating the placement of an order, and email is sent to the registered user.
Distributed under the MIT License. See LICENSE.txt
for more information.
Special thanks to Nick Romanidis for guidance and support throughout the development process.