Skip to main content

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.
Seed scripts provision production essentials in every environment and add realistic demo data in non-production environments for development, testing, and stakeholder demos. Seeds are idempotent — running twice produces the same result (upsert, not duplicate insert).

Seeding by Environment

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 with status: '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 the system_setting table:

Customer Tags

VIP, Frequent Visitor, Inactive 60d+, Bridal, No-Show Risk, SPA Member, Referred

Demo 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)

Verify Seed

After seeding, run the verification script to check row counts and FK integrity:
This checks that all expected tables have the correct row counts and that no FK constraints are violated.
Last modified on June 29, 2026