Welcome to the Sunny Side Sandcastle Hotel Booking System! This project serves as the backend framework for a hotel booking website designed for a fictional company called "Sunny Side Sandcastle". With this website, customers can browse available rooms and services, register for their stay, and cancel reservations if needed. Additionally, users receive email notifications upon completing the registration process, facilitated by the Nodemailer library.
Admin users have special privileges, allowing them to log in and access a dashboard where they can manage bookings. Admins can view a list of all users who have booked rooms, update their data, or delete users as necessary. Admins can also sign up for accounts if they do not already have one in the database.
- Express: Used as the web framework for Node.js to handle HTTP requests and routes.
- Express Handlebars: Used for server-side rendering of HTML templates.
- Mongoose: MongoDB object modeling tool designed to work in an asynchronous environment, used for data modeling and validation.
- Nodemailer: Library for sending emails from Node.js applications.
- Nodemailer Express Handlebars: Plugin for Nodemailer to use Handlebars templates for email rendering.
- Express Validator: Middleware for Express.js used for input validation.
- MongoDB: A NoSQL database used for storing application data.
- dotenv: Used for loading environment variables from a
.envfile intoprocess.env.
-
Clone the repository:
git clone <repository-url> cd web-framework-project
-
Initialize npm and install dependencies:
npm init npm install nodemon --save-dev npm install express npm install express-handlebars npm install body-parser npm install nodemailer npm install nodemailer-express-handlebars npm install express-validator npm install mongoose npm install mongodb npm install dotenv
Start the server in development mode with automatic restart using nodemon:
npm run dev- Controllers: Contains controller logic for handling routes and business logic.
- models: Contains MongoDB schema definitions and database operations.
- public: Stores static files such as CSS, images, and client-side JavaScript.
- routes: Defines application routes and route handlers.
- views: Plugin for Nodemailer to use Handlebars templates for email rendering.
The project consists of additional accesibility features. That includes: high contrast mode, keyboard navigation.
