Sridhar Sahu
Skip to content

Full Stack Developer / Jan 2025 to present / Bengaluru

From floor plan
to factory floor.

HouseKraft is an interior-design platform. A homeowner uploads a floor plan, designs modular kitchens and wardrobes in a browser 3D editor, gets a commercially accurate quotation, pays, and tracks the build to handover. Sales and operations run the same pipeline from the inside.

1912
commits
3
repositories
8
parametric builders
57
REST controllers

Two problems, and I own both ends of each.

Parametric 3D and pricing

A browser Three.js editor with a builder registry: cabinet, wardrobe, kitchen, wall panel, TV unit, false ceiling, loft and drawer. A shared JSON formula engine runs in TypeScript and in Java, so the cutlist, the geometry and the price stay in lockstep. The backend is the source of truth for a saved quote.

Quote to money to execution

The customer five-step quote, built from an uploaded floor plan. On the internal side a quotation tool, GST and ledger, promo codes, additional quotes, a twelve-stage project scheduler, approvals and warranty claims. Cashfree for payments, S3 for 3D models, Gemini and Replicate for AI renders.

One rule file, three readers.

The hard part was never the 3D. It is keeping a shape on a screen, a sheet cutlist on a factory floor and a number on a commercial document all agreeing with each other, through every resize and every rule change.

builder_rules

Versioned JSON in MongoDB. Not hardcoded branches, and not evaluated: a formula interpreter reads it, so a pricing change is a document edit rather than a deploy.

TypeScript interpreter

The browser editor compiles the formulas into the geometry a customer drags around, in real time.

Java interpreter

Spring Boot runs the same formulas for the sheet sizes, hardware and installation the factory works from.

Saved quotation

Calculate and refresh-costing are the source of truth, with payload sanitization and price-drift guards so stale client geometry cannot become a commercial document.

The evidence

Every area my commits actually land in.

hk-customer-webapp803 commits

Customer portal

What a homeowner sees. Upload a floor plan, design the rooms, get a price, pay, then watch the job run.

  • React 19
  • TypeScript
  • Vite
  • Redux-Saga
  • PrimeReact
  • Three.js
  • React Three Fiber
3D editor
Scene, camera and renderer. Geometry compiled from the floor mapping, with selection, visibility, collision, resize, a command history, IndexedDB persistence and a GLTF loader with DRACO.
Parametric builders
Cabinet including freeform shutters, wardrobe, kitchen, wall paneling, TV and study units, false ceiling, loft, drawer, wall moulding and tiles.
Quote bridge
Payloads sanitized before they leave the browser, backend calculate called for the real number, and live scene dimensions kept ahead of stale quote hydration.
New project
Floor-plan upload including PDF, AI detection of the rooms, the five-step quote, a 3D explorer, and the quotation breakup.
AI tools
Rekraft and AImagine: Gemini room tools for paint, lighting, restyle and floorplan-to-3D, alongside Replicate predictions.
After the sale
Project timeline, additional quote payments, a warranty claim wizard, support tickets with chat, and design credits.
Platform
OTP login, PWA install and offline shell, Sentry, GitHub Actions to sandbox and production, plus the landing and legal pages.

hk-erp-webapp740 commits

Internal ERP

What sales and operations see. The same pipeline as the customer portal, run from the inside, from first lead to final ledger entry.

  • React 18
  • TypeScript
  • Redux-Saga
  • PrimeReact
CRM
Leads arriving from Meta and Zapier with UTM attribution, assignment between owners, role-based access, and send-to-customer.
Quotation tool
Area and product lines, LITE, ELITE and ELEGANT packages, custom products, XOR variant groups, builder modals and copy-to-area.
Catalog
Categories, products and warranties, default 3D models, variant grouping, and S3 model upload at both product and subcategory level.
Money
Ledger, CGST and SGST rounding, discounts, promo codes, payment terms, and the Cashfree extras that sit around a payment.
Execution
A twelve-stage scheduler with a Gantt view, additional quotes running as parallel activities, and approvals for delay, document, warranty, descope and product.
Operations
Builder costing admin for materials, false ceiling, electrical, paint, moulding and curtains. Tickets, WhatsApp sync, electrical site photos and technician claims.

hk-backend369 commits

Platform and pricing

The service both front ends talk to. Fifty-seven REST controllers under one context path, over MySQL and MongoDB at the same time.

  • Java 17
  • Spring Boot 3
  • Spring Security
  • MySQL
  • MongoDB
  • Hazelcast
  • AWS
Calculate APIs
Wardrobe, cabinet, drawer, loft, ledge, false ceiling, wall panel and countertop calculate and preview endpoints, plus the builder and variant rule reads behind them.
Rules
Mongo-seeded WB.v2 and CBBUILDERBASE.v2 JSON, a formula interpreter that never calls eval, and a price validator for modular builders.
Quotations
Versioned Mongo quotes, builder-state sync, cost refresh, and payment handling for addenda and additional items.
Ledger and GST
Inclusive and exclusive GST, weighted CGST and SGST, discounts, promo codes and token amounts.
Scheduler
Project stages and sub-activities, role-based access on individual activities, and an additional quote running as parallel work.
Assets and AI
S3 3D models behind a presigned-URL cache, Gemini, Replicate with Flux, and the large floor-plan payloads those need.
Authorization
JWT on HS256, OTP through 2Factor, an API role mapping table, ownership checks on every record, and API keys for machine callers.

What it runs on.

Front end

  • React 19
  • React 18
  • TypeScript 5
  • Vite 5
  • Redux-Saga
  • PrimeReact
  • Tailwind
  • Formik
  • Yup
  • i18next
  • Three.js
  • React Three Fiber
  • Drei
  • three-mesh-bvh
  • Jest
  • Vitest
  • Workbox
  • Sentry

Back end and data

  • Java 17
  • Spring Boot 3
  • Spring Security
  • JWT
  • MySQL 8
  • JPA
  • MongoDB
  • DocumentDB
  • Hazelcast
  • MapStruct
  • Lombok
  • springdoc
  • STOMP WebSocket
  • SSE
  • Maven
  • GitHub Actions

Services, and what each one does

S3 and CloudFront
SPA hosting, documents, and the GLTF 3D models.
RDS MySQL and DocumentDB
CRM and catalog on one side, quotations and builder state on the other.
SQS FIFO
Asynchronous quotation generation.
SES
Transactional email from Mustache templates.
Secrets Manager
Sandbox and production configuration.
Cashfree
Customer payments and reconciliation.
Gemini, OpenAI, Replicate
Room renders, floor-plan prediction, chat.
2Factor and Exotel
OTP over SMS, and click-to-call.
Wasender
WhatsApp group sync out of the ERP.
Cutlist optimizer
Manufacturing nesting over a Lambda webhook.

What these numbers are.

The counts above come from git log across the three repositories, filtered to my authorship, merge commits included. I am a primary contributor on all three, not the sole author. Where a feature was largely a teammate's pull request that I reviewed and landed, this page says landed rather than built.

Sridhar Sahu / The HouseKraft / Jan 2025 to present