Data Seeding
In one line: Idempotent seed scripts provision production essentials in
every environment and add realistic demo data in non-prod.
prod gets
essentials only, pprd is never seeded (it receives anonymised prod data), and
dev/test get full demo fixtures.Seeding by Environment
- Tab Title
- Tab Title
- Tab Title
- Tab Title
Seeded: Branch, categories, services, settings, membership tiers, customer tags.Purpose: Production bootstrap — real data added by staff.
pprd is never seeded. It receives real (anonymized) data via nightly Neon branch reset from prod. See Git Workflow for the replication process.
Commands
Safety guard:
--reset is blocked on prod — the script checks APP_ENV
and exits with an error if you try.Seed Execution Order
Dependencies matter — FK constraints require specific insertion order:Production Essentials
These are seeded in all environments including production.Branch
The Rayasandra branch is the primary branch. A second branch (Marathahalli) is seeded withstatus: 'opens_soon' for future expansion.
Service Categories (10)
SPA Services (23)
Three tiers of SPA services, each available in 60-minute and 90-minute durations:- Standard SPA: Swedish Therapy, Thai Therapy, Aroma Therapy
- Premium SPA: Lomi Lomi Spa, Balinese Therapy, Deep Tissue Therapy
- VVIP SPA: Hot Stone Massage, Kerala Potli Massage, Synchronic Massage, Body Polish Massage, Body Scrub & Cleansing (4 variants)
Salon Services (~40)
Covering all 7 salon categories: haircuts, colouring/treatments, facials, waxing, manicure/pedicure, makeup, and hair spa.Membership Tiers
System Settings
Key-value pairs stored in thesystem_setting table:
Customer Tags
VIP, Frequent Visitor, Inactive 60d+, Bridal, No-Show Risk, SPA Member, ReferredDemo Data (Dev & Test Only)
Demo Staff (8 users — all roles covered)
Demo Customers (15 in dev, 5 in test)
Realistic Indian women’s names — target demographic. All demo emails use@demo.test domain — never accidentally sent real emails.
Acquisition source coverage is intentional: organic root, GMB deep-link, in-store QR, and converted Meta ad leads are all represented.
Demo Bookings — All Statuses Represented
Demo Memberships
- Active Gold — 5 hours used, 10 hours remaining
- Active Silver — almost expired (7 days left), 2 hours remaining
- Expired Gold — 6 hours forfeited (for testing expiry UI)