गंतव्य
Palette
Mode
Motion

Calm stops smooth scrolling, moving art and the story’s music, and keeps everything still.

गंतव्य
Palette
Mode
Motion

Calm stops smooth scrolling, moving art and the story’s music, and keeps everything still.

All work

Product · 2024 – 25

Mero Braj

A virtual museum for 100+ heritage sites of the Braj region — grant-funded, shipped, later acquired.

The Mero Braj map: an illustrated, Hindi-labelled map of the Braj region dotted with heritage-site markers, and a searchable list of places
Role
Proposal, grant and technical lead
When
2024 – 25
Stack
Next.js · React · Three.js · 360° media · GraphQL · Express · MongoDB · CDN
The problem

Why it needed to exist.

Braj’s heritage is spread across an entire region and barely documented online. The goal was one place to explore it — the stories, the locations, the courtyards themselves — without needing a high-end device or a fast connection.

A web platform for exploring the temples, kunds and heritage sites of Braj through an interactive 3D map and 360° tours — built by a team of four and designed for the phones most visitors carry.

Constraints

  • Heavy media — 3D maps and 360° panoramas — on low-end phones and patchy networks.
  • A team of four on a grant timeline.
  • Map-first, bilingual content that could keep growing after launch.
The system

How Mero Braj serves a region to a phone

Heritage records live in MongoDB behind an Express GraphQL API. A Next.js front end renders fast pages and hands off to a Three.js map and 360° tours, with heavy media lazy-loaded from a CDN.

How Mero Braj serves a region to a phoneHeritage records live in MongoDB behind an Express GraphQL API. A Next.js front end renders fast pages and hands off to a Three.js map and 360° tours, with heavy media lazy-loaded from a CDN.Heritage records100+ sitesMongoDBplaces + mediaGraphQL APIExpressNext.jsfast, indexable3D mapThree.js360° tourstilt to lookCDNlazy media
  1. Every site — its history, location and panoramas — is a structured record.

  2. A GraphQL API lets each screen ask for exactly the fields it shows, keeping mobile payloads small.

  3. Next.js renders pages quickly and keeps them indexable.

  4. Visitors roam a 3D map and step into 360° temple tours — on phones, by tilting to look around.

  5. Heavy media streams from a CDN only when opened, so it holds up on low-end devices.

In use

What it looks like.

  • A 360° view inside Shri Radharaman temple on Mero Braj: the flower-decked altar and carved arches, opened from a marker on the map.
    Tap a green marker on the map and the temple opens around you — drag to look, or switch to VR. · captured Sep 2026 from merobraj.org/braj
  • The Mero Braj home page: “Braj Museum — a digital museum of Braj culture” with a “Begin Braj Darshan” button.
    The front door: a digital museum of Braj, in Hindi and English. · captured Sep 2026 from merobraj.org
  • Mero Braj on a phone: the Braj Museum title and the “Begin Braj Darshan” button.
    Built for the phones most visitors carry. · captured Sep 2026 from merobraj.org
Decisions

Three choices, and what each one cost.

  1. 01

    GraphQL between content and screens

    Each view requests exactly what it renders, which keeps payloads small on slow mobile networks.

    Trade-offMore schema design up front than a plain REST API.

  2. 02

    Lazy-load every heavy asset

    Panoramas and 3D assets load only when a visitor opens them, streamed from a CDN.

    Trade-offA brief loading moment per scene instead of one long wait at the start.

  3. 03

    Tilt-to-look navigation

    Gyroscope navigation makes a 360° tour feel like standing in the courtyard.

    Trade-offNeeds a touch fallback for devices and browsers without motion access.

Outcomes

What changed.

heritage sites mapped
100+
people on the team, led end to end
4
after launch
Acquired
The acquiring party is not named here.
What I’d do next

The next version.

Offline-first tours for places with no signal, and a simple editor so local historians can add sites without a developer.

Something like this on your plate? Write to me.