
# 🧾 Project Overview: Service Booking App (On-Demand Beauty/Home Services)

This is a full-featured **on-demand service booking platform** designed primarily for **beauty and personal care services** (e.g., salon at home). Users can browse services, add them to a cart, schedule bookings, and pay online. The platform handles service categories, expert assignments, scheduling, order tracking, and user feedback.

---

## 🔧 Core Features

### 🧍 Users & Authentication
- Mobile-based login with OTP verification
- User profile with gender, DOB, profile image, and saved addresses

### 🛒 Service Discovery & Booking
- Browse services by category
- Add services to a cart with a preferred time
- Wishlist and review services
- View service FAQs

### 📦 Orders & Bookings
- Single order can have multiple service bookings
- Each booking linked to a beauty expert and optionally a rider (for equipment transport)
- Booking status and assignment tracking (confirmed, in-progress, completed, etc.)

### 👥 Admin Modules
- Manage categories, services, FAQs, and availability
- Assign bookings to experts and riders
- Monitor orders, payments, reviews, and system notifications

### 💸 Payments
- Payments tracked with status, method, and amount
- Integration-ready for any payment gateway (e.g., Razorpay, Stripe)

### 🔔 Notifications
- System-generated notifications for booking status, reminders, updates, etc.

### 📷 Media Handling
- Polymorphic media table to attach images to services, categories, etc.

---

## 🔗 Entities & Relationships

- **Users ↔ Bookings ↔ Services**
- **Bookings ↔ Beauty Experts / Riders**
- **Orders ↔ Payments ↔ Addresses**
- **Services ↔ Categories / FAQs / Reviews / Wishlist / Media**

---

## 🧠 Future-Ready

- Schema supports future expansion for:
  - Coupons/discounts
  - Multi-city support
  - Expert scheduling and availability
  - Dynamic pricing / variants per service

There are four tables for users: users, employees, beauty_experts and riders.
We have have four corresponding auth guards and clients for these. Each will be separate. 
