The Problem

Salon owners need a single system to schedule appointments, track customer histories, manage staff, inventory, and billing, yet many small‑business solutions are either overly complex or lack basic operational safeguards. This repo attempts to fill that gap, but the codebase shows several SDLC gaps that affect reliability and deployment confidence.

What This Does

The system is a PHP‑driven web application that stores salon data in a MySQL database (mysalon/Database/msmsdb.sql). Core screens are split between the front‑end (mysalon/index.php, mysalon/login.php, mysalon/appointment.php) and an admin console (mysalon/admin/index.php, mysalon/admin/dashboard.php, mysalon/admin/sales-reports.php). PHP backend logic lives in mysalon/includes/dbconnection.php, which wires the app to the database, while mysalon/includes/header.php and mysalon/includes/sidebar.php provide the consistent layout. JavaScript bundles under mysalon/admin/js/ (e.g., scripts.js, Chart.js) handle client‑side interactivity and reporting charts. Customer‑facing features such as profile management and enquiry submission are in mysalon/register.php, mysalon/message.php, and mysalon/submitmessage.php.

How To Use It

Clone the repository git clone https://github.com/Abhisheksingh0303/Salon-Management-System.git cd Salon-Management-System Import the database – load mysalon/Database/msmsdb.sql into a MySQL instance (e.g., mysql -u root -p salon < mysalon/Database/msmsdb.sql). Configure the database connection – edit mysalon/includes/dbconnection.php to match your host, database name, username, and password. The file currently contains placeholder credentials (localhost, root, no password) that must be replaced for production use. Start a PHP development server – from the project root: php -S localhost:8000 -t mysalon Log in – use the admin credentials (admin/admin) or customer credentials (user/user) as documented in the README.

No composer.json, package.json, or Dockerfile is present, so the above steps rely on the built‑in PHP server and manual database setup.

Real‑World Use

A receptionist opens mysalon/appointment.php, selects a stylist and service, and the system writes a new row to the appointments table via the PHP model in mysalon/includes/dbconnection.php. Later, the manager runs mysalon/admin/sales-reports.php, which queries sales invoices and renders a Highcharts chart (mysalon/admin/js/Chart.js) to review weekly revenue. If a customer updates their contact info, the form posts to mysalon/admin/edit-customer-detailed.php, which validates input before updating the customers table.

Code Health & Issues

Medium – No test files: repository-wide absence of PHPUnit, Pest, or any unit/integration tests means business logic (e.g., appointment scheduling, invoice generation) is untested. Medium – No CI/CD pipeline: .github/ is missing; there is no automated gate for linting, testing, or deployment, so changes can be merged without verification. Medium – Missing LICENSE file: the README references an MIT License, but no LICENSE file exists in the root, creating ambiguity about redistribution rights. High – Hardcoded credentials in mysalon/includes/dbconnection.php: the file contains localhost/root with no password; committing such secrets to version control is a security risk. Low – No evident input validation: several PHP pages (e.g., mysalon/admin/edit-services.php) appear to accept form data without obvious sanitisation, raising the risk of SQL injection or XSS. Low – Mixed PHP/HTML layout: inline PHP mixed with presentational HTML across many files (my_salon/admin/*.php) reduces separation of concerns and makes future refactoring harder.

The Bottom Line

This repo provides a functional, feature‑rich skeleton for salon management—appointment booking, customer profiles, inventory, and basic reporting—built with PHP and MySQL. It is suitable for a solo proprietor or very small team that needs a quick start and is comfortable manually handling database setup and security hardening. However, the lack of tests, CI, and a proper license, together with hardcoded DB credentials, makes it ill‑suited for production environments or collaborative development without immediate remediation.