Skip to content

MOP 1.1 — Global Society Onboarding & Infrastructure Setup

Audience: super_admin Outcome: A new society (or umbrella society with multiple phases) is registered in the platform with verified location, units count and chargeable infrastructure metadata so that residents, vendors, events and coaches can be onboarded against it.

1. Pre-requisites

  • A super_admin account on the Admin Dashboard (/api/admin-dashboard).
  • Society documents (RWA registration / GST / proof-of-association PDF) — uploaded to MinIO via the dashboard.
  • Ideally lat/lng + 6-digit pincode (auto-fills via Google Maps).

2. Workflow

2.1 Add the parent society

  1. Sign in as super_admin → sidebar Societies+ Add Society.
  2. Fill core fields: name, brand_name, address, pincode, city, state, total_units, entity_type (apartment / township / gated).
  3. Pick the location pin (the map auto-geocodes the pincode and stores geo_point as a GeoJSON Point used by /api/nearby/*).
  4. Save → POST /api/admin/societies.

2.2 Add child phases (umbrella mode)

For townships with multiple phases (Phase-1, Phase-2, Tropical Greens etc.) use Society → Phases / Blocks: 1. Click + Add Phase / Block on the society detail page. 2. Provide name, phase, block_tower, total_units. 3. Save → row stored in society_children with parent_society_id = <parent.id>.

2.3 Sub-domain / branding (optional)

  • Pricing & ad slots are configured per society from Pricing & Ads sections — see MOP 3.2.

3. Snapshot

Super Admin Dashboard

4. APIs touched

Method Endpoint Purpose
POST /api/admin/societies Create parent society
GET /api/admin/societies?limit=200 List for super-admin
POST /api/admin/societies/{society_id}/children Add a phase / block
GET /api/admin/societies/{society_id}/children List child phases

5. Data model

societies
  id, name, brand_name, address, pincode, city, state,
  latitude, longitude, geo_point: { type: "Point", coordinates: [lng, lat] },
  total_units, entity_type, status, master_id, created_at

society_children
  id, parent_society_id, name, phase, block_tower, total_units, is_active

A 2dsphere index on events.geo_point / coaching_events.geo_point / recurring_events.geo_point is required for "Near Me" queries — see the production migration script scripts/prod_migration_2026_02.py shipped alongside this repo.

6. Edge cases & FAQ

  • Society without a pincode is blocked at the form-level — pincode is mandatory because Near-Me queries need a usable origin.
  • Duplicate names are allowed across cities. Use master_societies to cluster aliases (e.g. SDA Tropical GreensTropical GreensSDA TG).
  • Bulk import — see master_societies (185 docs in prod). New societies are linked via master_id.
  • MOP 1.2 — Society Admin Provisioning (next)
  • MOP 1.3 — Cross-Phase Data Privacy
  • MOP 3.1 — Event Lifecycle