MasterAcres is India’s real-estate marketplace connecting buyers, tenants, owners, agents, and builders on one verified platform — with a native mobile app, a NestJS API, and a full back-office admin panel.
It is a production TypeScript monorepo covering listing discovery (feed, map, TikTok-style shorts), paid site visits, KYC-gated vendors, subscription plans, an in-app coin wallet, community requirements, blogs, and news — all gated through admin verification.
Product surfaces
| Surface | Audience | What it does |
| --- | --- | --- |
|
Mobile (`apps/mobile`) | Buyers, tenants, vendors | Discover, save, enquire, list, book visits, pay plans |
|
API (`apps/api`) | All clients | Auth, domain logic, payments, media, admin |
|
Admin (`apps/admin`) | Platform operators | Verification queues, CMS, users, coins, audit |
Dual-sided marketplace:
Seeking (buyer / tenant) and
Listing (owner / agent / builder) on the same account, with a one-tap profile switch. Jaipur-first for the Indian property market.
Mobile app (Expo / React Native)
Seeking users browse verified inventory (feed, map, shorts), save listings, post requirements, and book paid site visits. Listing users complete KYC, publish properties and projects, set visit hours, and handle visit requests.
- Phone OTP + password auth, optional Google sign-in
- Home tabs: Explore, Map, Saved, Community
- Filters: verified, zero brokerage, luxury, owner-listed; buy vs rent
-
Shorts — full-screen property video feed with like, save, follow builder
- Paid site visits (Razorpay) with vendor hours, OTP completion, cashback
- Master Coins wallet + subscription plans
- Vendor side: Aadhaar KYC, bank details, listings, projects/units, visit inbox
Stack: Expo ~57, React Native, React 19, TypeScript, TanStack Query, Zustand + SecureStore, React Hook Form + Zod, Axios services layer, react-native-maps, Razorpay.
NestJS API
Serves both mobile and admin: authentication, listings, projects, visits, payments, media, wallets, and CMS.
- NestJS 11, PostgreSQL + Sequelize, Passport JWT (access + refresh)
- Modules: auth, users, vendors, properties, projects, media, reels, visits, purchases, plans, master-coins, requirements, blogs/news, support, admin
- Razorpay orders + HMAC webhooks (KYC fee, visits, plans)
- Presigned S3 media + Lambda WebP variants
- MSG91 SMS OTP, Nodemailer email OTP; `RolesGuard` — `ADMIN` cannot be self-assigned
- Shared contracts in `@masteracres/types` and `@masteracres/constants`
Admin panel (React + Vite)
Compliance and CMS layer. Operators verify vendors and listings, manage users and wallets, publish blogs/news, and inspect audit and engagement.
- Dashboard counts, property/project review drawers, vendor KYC queue
- Users (role, ACTIVE/BLOCKED, Master Coins), plans, engagement, audit logs
- Requirements + explore banners with pixel-exact iPhone preview
- Blogs / News CMS; CSV export on tabular pages
- `RequireAdmin` gate; brand tokens shared with mobile
Stack: React 19, Vite, Tailwind 4, React Router 7, TanStack Query + Table, Zustand, Axios.
Architecture
┌─────────────────┐ ┌─────────────────┐
│ Expo mobile │ │ React admin │
│ (iOS / Android)│ │ (Vite SPA) │
└────────┬────────┘ └────────┬────────┘
│ JWT + refresh │
└──────────┬────────────┘
▼
┌───────────────┐
│ NestJS API │
│ PostgreSQL │
│ S3 / Razorpay│
└───────────────┘
Production
-
API — GitHub Actions → ECR / EC2
-
Admin — `vite build` → S3 + CloudFront
-
Mobile — EAS + TestFlight / Firebase App Distribution