Sridhar Sahu
Skip to content
Fly Realty

Frontend Developer / Dec 2023 to Jan 2025 / Bengaluru

Four products,
one login.

Fly Realty is a PropTech platform for Indian real estate, built as four React applications behind a single sign-on. Channel partners work leads through to booking, internal staff run the builder and project catalogue, developers run their own inventory and payments, and one IAM portal gates all of it.

4
production SPAs
1
shared IAM and SSO
3
role scopes
6
project CMS sections

What changed, in numbers.

-60%
Missed follow-ups, after timeline views and callback scheduling
-45%
Admin time, once activity logs replaced manual reporting
+60%
Payment collection, through in-app follow-up and reminders
<2s
Page load, down from 5s, via code-splitting and lazy-loading

Two problems, across four apps.

One identity across four apps

A central IAM portal with email and OTP login, JWT access and refresh tokens with silent renewal, and cross-subdomain single sign-on so one session carries a user into any of the four products. Underneath it, a hierarchical permission tree of product, module and feature, with reusable templates and diff-based updates so an edit sends only what changed.

Lead to site visit to booking

The channel-partner pipeline end to end: a lead lifecycle from new through scouting, shortlisting and negotiation to converted or dead, site visits verified by OTP and geolocation, follow-ups split into upcoming, missed and completed, click-to-call, and multi-step bookings carrying owner KYC, payment schedules and documents.

Four apps, one set of decisions.

Four applications, one set of decisions. Every product uses the same Redux branch layout, the same server-paginated table with filters kept in the URL, the same presigned upload path and the same multi-environment build. What that bought is that a pattern learned in one app is already known in the other three.

Redux branches
Each domain is a branch of enums, interfaces, a reducer, sagas and an API module, in that shape every time, so a new feature has an obvious place to go.
Tables that survive a refresh
Server-paginated data tables with filters synced into the URL, so an ops user can send a colleague the exact view they are looking at.
One upload path
Presigned S3 uploads with client-side compression, shared across profile pictures, project media, KYC documents and bulk files.
Three environments
Development, sandbox and production builds from one Vite configuration, deployed to S3 behind CloudFront.

Four applications

What each one does.

lms-webapp

Lead Management System

The sales floor. Channel-partner teams work a lead from first contact to a signed booking, with admins, team leads and regional managers each seeing a different slice.

Lead lifecycle
New, interested, scouting, shortlisting, negotiation, then converted or dead, with hot and warm grading alongside the stage.
Lead activity workspace
Preferences, score and assignee in one view, with the project pipeline beside it: manager recommendations, engine recommendations, shortlisted and rejected, plus follow-ups and a full activity ledger.
Site visits
Verified with an OTP and a geolocation check, so a visit logged from an office cannot pass as a visit made.
Bulk ingest
CSV lead upload processed asynchronously, with polling for status and a downloadable error file for the rows that failed.
Bookings and mandates
Owners and KYC documents, payment schedules, uploads, and the exclusive selling agreements that sit behind them.
Scoping and insights
A self-versus-team switch on every list endpoint, campaign and bucket assignment by regional manager, and PostHog charts for lead status and ticket size.

cms-webapp

Builder and project catalogue

Not a blog CMS. The internal admin for every builder and residential project on the platform, feeding the consumer-facing project pages.

Builders
Full lifecycle with KYC, PAN, TAN and GSTIN, addresses, logos and status.
Projects, six sections
Basic details, unit configurations, landmarks, an amenities tree, reasons to buy, and home-loan banking partners.
Indian domain modelling
RERA registration, pricing in rupees, area in acres and square feet, and the BHK, villa, apartment and plot distinctions the market actually uses.
Configurations
Carpet, built-up and super built-up area, price bands, floor plans and model-home photography.
Landmarks and amenities
Proximity by distance and travel time, and hierarchical amenity selection rather than a flat checklist.
Media pipeline
Master plans, brochures, construction updates, walkthrough videos and PDFs, uploaded straight to S3 through presigned URLs with compression on the way.

irex-crm-webapp

Builder dashboard

The developer's side of the platform. A B2B CRM for builders running their own inventory, money and complaints after a sale as well as before one.

Inventory
Available, sold and investor units with owners and booking status, under a portfolio view of inventory, complaints and financials per project.
Payments
Orders, scheduled against recorded payments, demand letters, receipts and cost sheets.
Complaints and SLA
Open, in progress and resolved with priorities, threaded comments and attachments, behind an escalation matrix with rules by category and priority.
Onboarding
A stepper for bringing a project on: details, amenities, unit configurations and documents.
Bulk upload
Units by CSV or Excel with status polling and an error export, the same async pattern the lead ingest uses.
Project feed
Posts, reactions, threaded comments and short-form stories, so a developer can show progress rather than describe it.

auth-webapp

Identity and access

Where everyone lands first. Login, account management and the product launcher that sends a user into whichever of the other three they belong to.

Sign-in
Email and password or OTP, chosen by subdomain: the internal tools take email, the partner and builder dashboards take a phone OTP.
Sessions
JWT access and refresh tokens with silent renewal, and cookies scoped to the parent domain so one login carries across every subdomain.
Account lifecycle
Forced password change on first login, and forgot and reset flows with server-side token validation.
Organisation admin
Employee directory, user creation and editing, and manager assignment by autocomplete.
Permissions
A product, module and feature tree with reusable templates, saved as a diff so an edit sends only what changed.

What it ran on.

Front end

  • React 18
  • TypeScript
  • Redux
  • Redux-Saga
  • React Router 6
  • Vite
  • PrimeReact
  • Tailwind
  • Formik
  • Yup
  • Axios
  • i18next

Platform

  • JWT
  • Cross-subdomain SSO
  • AWS S3
  • CloudFront
  • Presigned uploads
  • PostHog
  • Device fingerprinting

The outcomes above were measured by the team during the period, not reconstructed afterwards. The four applications are the ones I worked in as a frontend engineer; the backend and the recommendation engine were other people's, and this page does not claim them.

Sridhar Sahu / Fly Realty / Dec 2023 to Jan 2025