MOP 1.1 — Global Society Onboarding & Infrastructure Setup¶
Audience:
super_adminOutcome: 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_adminaccount 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¶
- Sign in as
super_admin→ sidebar Societies → + Add Society. - Fill core fields:
name,brand_name,address,pincode,city,state,total_units,entity_type(apartment/township/gated). - Pick the location pin (the map auto-geocodes the pincode and stores
geo_pointas a GeoJSON Point used by /api/nearby/*). - 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¶

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_societiesto cluster aliases (e.g.SDA Tropical Greens≡Tropical Greens≡SDA TG). - Bulk import — see
master_societies(185 docs in prod). New societies are linked viamaster_id.
7. Related MOPs¶
- MOP 1.2 — Society Admin Provisioning (next)
- MOP 1.3 — Cross-Phase Data Privacy
- MOP 3.1 — Event Lifecycle