Welcome to Raddison Salon, a modern and elegant web-based salon management system built to streamline appointment bookings, service management, and customer interactions. This project brings together beauty and technology to create a seamless experience for both salon staff and customers.
- Browse Services: Explore our collection of regular and premium beauty services with detailed descriptions
- Easy Booking: Book appointments with your preferred staff member and time slot
- Service Categories:
- Regular Services (Haircuts, Styling, Grooming, Facials, etc)
- Premium Services (Luxury Spa, Gold Facial, Diamond Glow treatments, etc)
- Contact Us: Send inquiries and feedback directly through the website
- Responsive Design: Beautiful, mobile-friendly interface that works on all devices
- Real-time Availability: See available time slots and service durations
- Dashboard Overview: Get insights into appointments, customers, and services at a glance
- Appointment Management:
- View, create, edit, and cancel appointments
- Update appointment status (Scheduled, Completed, Cancelled)
- Add notes for special customer requests
- Expandable notes feature for detailed information
- Staff Management: Add, edit, and remove staff members with role assignments
- Customer Database: Maintain customer records with contact information
- Service Management:
- Separate tabs for Regular and Premium services
- Create, update, and delete services
- Set pricing and duration for each service
- Message Center: View and manage customer inquiries from the contact form
- Secure Login: Password-protected admin panel with bcrypt encryption
- Hashed password storage using bcrypt
- Database reconnection with exponential backoff
- Foreign key constraints for data integrity
- SQL injection prevention with parameterized queries
- Secure admin authentication
Welcome page featuring our elegant pastel-themed design with salon introduction and call-to-action
Browse through our comprehensive collection of regular beauty services with detailed descriptions and pricing
Premium luxury services section showcasing our exclusive spa and treatment packages fetched live from database
Easy-to-use appointment booking form with customer details, service selection, and preferred time slots
Learn about Raddison Salon's story, mission, and commitment to beauty excellence
Meet our professional team (data is fetched directly from database not hard-coded)
Get in touch with us through our contact form or find our location and business hours. Send a message which can be displayed through admin dashboard
Comprehensive admin panel overview showing appointments, customers, and service management
Appointment management interface with status tracking, notes, and expandable details
Staff management section for adding, editing, and organizing salon employees
Customer database with contact information and relationship tracking
Service management with separate tabs for regular and premium services, including pricing and duration settings
Frontend:
- HTML5, CSS3 (Custom pastel-themed design)
- Vanilla JavaScript (ES6+)
- Font Awesome Icons
- Google Fonts (Poppins & Playfair Display)
Backend:
- Node.js (v18+)
- Express.js (v4.18.2)
- MySQL2 (v3.6.0)
Security & Utilities:
- bcrypt (v6.0.0) - Password hashing
- dotenv (v16.3.1) - Environment variables
- cors (v2.8.5) - Cross-origin resource sharing
- body-parser (v1.20.2) - Request parsing
Before you begin, make sure you have the following installed:
- Node.js (version 18 or higher) - Download here
- MySQL (version 8.0 or higher) - Download here
- Git (optional, for cloning) - Download here
- A text editor like VS Code - Download here
Option A: Clone with Git
git clone https://github.com/DBMS-4/raddison-salon.git
cd raddison-salonOption B: Download ZIP (No Git Required)
- Go to https://github.com/DBMS-4/raddison-salon
- Click the green "Code" button → "Download ZIP"
- Extract the ZIP file to your desired location
- Open terminal/command prompt in the extracted folder
Open your terminal in the project directory and run:
npm installThis will install all the required packages listed in package.json.
-
Start MySQL Server
- Make sure your MySQL service is running
- Open MySQL Workbench or command line
-
Create the Database
CREATE DATABASE raddison_salon;
-
Import the Database Schema
Run the
database.sqlfile to create all tables and insert sample data:Using MySQL Command Line:
mysql -u your_username -p raddison_salon < database.sqlUsing MySQL Workbench:
- Open MySQL Workbench
- File → Run SQL Script
- Select
database.sql - Click "Run"
Easy Method: Rename .env.example to .env
Then edit the .env file with your MySQL credentials:
# Database Configuration
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_mysql_password
DB_NAME=raddison_salon
DB_PORT=3306
# Server Configuration
PORT=3000your_mysql_password with your actual MySQL password!
Run the application:
# For development (with auto-restart on changes)
npm run dev
# For production
npm startYou should see:
Server is running on port 3001
Connected to MySQL database successfully!
Open your web browser and visit:
- Homepage:
http://localhost:3000 - Services Page:
http://localhost:3000/services.html - Book Appointment:
http://localhost:3000/appointment.html - About Us:
http://localhost:3000/about.html - Contact:
http://localhost:3000/contact.html - Admin Panel:
http://localhost:3000/admin.html
Use these credentials to access the admin panel:
Username: admin
Password: ADMIN1234
raddison-salon/
│
├── public/ # Frontend files
│ ├── index.html # Homepage
│ ├── services.html # Services listing
│ ├── appointment.html # Booking form
│ ├── about.html # About page
│ ├── contact.html # Contact form
│ └── admin.html # Admin dashboard
│
├── server.js # Express server & API routes
├── database.sql # Database schema & sample data
├── package.json # Node.js dependencies
├── .env.example # Environment variables template
├── .env # Your actual credentials
├── .gitignore # Files to ignore in Git
├── LICENSE # Custom license file
└── README.md # This file!
GET /api/services- Get all regular servicesGET /api/premium- Get all premium servicesGET /api/all-services- Get all servicesPOST /api/services- Create a new servicePUT /api/services/:id- Update a serviceDELETE /api/services/:id- Delete a service
GET /api/appointments- Get all appointmentsPOST /api/appointments- Create an appointmentPUT /api/appointments/:id- Update appointmentPUT /api/appointments/:id/status- Update appointment statusDELETE /api/appointments/:id- Delete appointment
GET /api/staff- Get all staff membersPOST /api/staff- Add new staffPUT /api/staff/:id- Update staff infoDELETE /api/staff/:id- Remove staff
GET /api/customers- Get all customersPOST /api/customers- Add new customerPUT /api/customers/:id- Update customerDELETE /api/customers/:id- Delete customer
GET /api/messages- Get all messagesPOST /api/messages- Submit contact formDELETE /api/messages/:id- Delete message
POST /api/admin/login- Admin authentication
- Pastel Color Scheme: Soft pink and lavender tones for a welcoming feel
- Mobile Responsive: Works beautifully on phones, tablets, and desktops
- Smooth Animations: Hover effects and transitions for a polished experience
- Accessible Navigation: Mobile hamburger menu with smooth transitions
- Service Cards: Flexbox-aligned cards with consistent button positioning
- Admin Dashboard: Clean, organized interface for easy management
- Make sure MySQL is running
- Check if port 3000 is already in use
- Verify your
.envfile has correct database credentials
- Confirm MySQL service is running
- Double-check username and password in
.env - Ensure the database
raddison_salonexists - Check if the port (default 3306) is correct
- Run
npm installto install all dependencies - Delete
node_modulesfolder and runnpm installagain
- Make sure the
Adminstable has the default user - Verify bcrypt is installed:
npm install bcrypt
While this is a personal project, suggestions and feedback are always welcome! Feel free to:
- Report bugs by creating an issue
- Suggest new features
- Share your experience using the system
The system uses 6 main tables:
- Staff - Store employee information
- Customers - Customer database with contact details
- Services - Both regular and premium services
- Appointments - Booking records with status tracking
- Messages - Contact form submissions
- Admins - Admin user accounts
For detailed schema, see database.sql.
If you encounter any issues or have questions:
- Check the Troubleshooting section above
- Review the API documentation
- Ensure all prerequisites are installed correctly
This project was created as a Database Management System (DBMS) course project to demonstrate:
- Database design and normalization
- CRUD operations implementation
- Frontend-backend integration
- RESTful API development
- User authentication and security
- Real-world application development
- Font Awesome for beautiful icons
- Google Fonts for typography
- The Node.js and Express.js communities
- MySQL documentation and resources
This project is licensed under a Custom License - see the LICENSE file for details.
Note: Commercial use and redistribution are not permitted without explicit permission.
- SMS/Email notifications for appointments
- Payment gateway integration
- Customer loyalty program
- Staff scheduling system
- Revenue analytics dashboard
- Multiple salon locations support
- Online payment processing
- Customer reviews and ratings
Made with ❤️ for Raddison Salon
⭐ If you found this project helpful, please consider giving it a star!