The Problem

Salon owners need a single interface to track appointments, services, staff, and revenue across one or many locations. Manual spreadsheets or disparate tools lead to double‑bookings, lost client history, and inefficient reporting.

What This Does

The repository bundles two loosely‑related apps:

Admin Panel – a React‑based dashboard (155 files) that presents service catalogs, booking calendars, and analytics. Key UI components live under Admin Panel/ (e.g., index.js). AI Sakincare Recommendation – a client‑facing React app (src/ and public/) that calls a Flask or AWS‑Lambda backend (mlmodelflask/app.py, mlmodelAWSLambda/app.py) to run a skin‑analysis model stored in export.pkl.

The salon‑management front‑end consumes Firebase for real‑time data (mentioned in the README) while the skincare module provides a separate ML inference service.

How To Use It

Install the React front‑ends

Salon admin UI (requires a package.json – missing in repo) cd "Admin Panel" ❗ No package.json found; you must add one or copy from a CRA template npm install && npm start # expected command once package.json exists

AI skincare demo

cd "../AI Sakincare Recommandation" npm ci # uses package-lock.json npm start # runs CRA dev server (looks for src/index.js) Set up the ML back‑ends

Flask version

cd mlmodelflask python -m venv .venv source .venv/bin/activate pip install -r requirements.txt flask run # app.py defines a Flask app object

AWS‑Lambda version (Zappa deployment)

cd mlmodelAWSLambda pip install -r requirements.txt Deploy with Zappa – configuration in zappasettings.json zappa deploy production Configure Secrets

Admin Panel expects environment variables (e.g., Firebase keys) defined in Admin Panel/.env. The file is present and likely contains plaintext credentials – remove or replace it before any public deployment. The Flask/Lambda services read nothing from .env; you must supply any required API keys in their own config files (none are present). Run the full stack (demo)

In separate terminals

npm start # AI skincare React UI flask run # Flask inference service (default 5000) Point the UI to http://localhost:5000 via the fetch URLs in src/FacialAnalysis.js

Real‑World Use

A boutique chain can host the Admin Panel on a Firebase‑hosting site, linking it to a Firestore database that stores appointments, customers, and services. Staff use the dashboard to add new services or view a real‑time calendar. Meanwhile, the AI Sakincare UI could be embedded on the public website to offer a free skin‑type analysis that calls the Flask endpoint (/predict) and returns product recommendations.

// Example fetch from src/FacialAnalysis.js fetch(${process.env.REACTAPPAPIURL}/predict, { method: 'POST', body: imageFormData, }) .then(r => r.json()) .then(data => setResult(data));

Code Health & Issues

SeverityIssueLocation
HighPlaintext secrets in Admin Panel/.env.Admin Panel/.env
HighNo CI/CD pipeline – no automated builds or tests.Repository root lacks .github/, Jenkinsfile, etc.
MediumMissing package.json for the Admin Panel, preventing npm install/start.Admin Panel/
MediumMixed responsibilities: salon management UI and skincare ML are unrelated, increasing maintenance overhead.Entire repo
LowOnly four test files; they target the React UI (src/App.test.js) and do not cover backend logic.AI Sakincare Recommandation/src/App.test.js
LowNo LICENSE file – legal reuse unclear.Repository root
LowLarge nodemodules committed (e.g., Admin Panel/nodemodules/) – inflates repo size and masks dependency drift.Admin Panel/node_modules/

The Bottom Line

The project provides a functional React‑Firebase salon dashboard and a working ML inference demo, but the codebase is fragmented, missing essential build metadata for the admin UI, and contains exposed secrets. It may serve as a proof‑of‑concept for a small team willing to separate the two concerns and add proper CI, licensing, and secret management. Large‑scale or production deployments will require significant cleanup.