The public website of Maa Gayatri Path Lab, Arang, Raipur. A single page with a living 3D lab, the full test catalogue with prices, home sample collection, report download and one-tap booking.
| Section | Component |
|---|---|
| Hero with the 3D "living lab" background | Hero, three/BackgroundScene |
| Services | ServicesGrid |
| Test catalogue by category, with prices and turnaround | TestCategories |
| Home sample collection | HomeCollection |
| Download a report | ReportDownload |
| Doctors and trust signals | DoctorTrust, WhyChoose |
| Testimonials, FAQ, final call to action | Testimonials, FAQ, FinalCTA |
| Book a test (dialog, from every section) | BookTestDialog, ui/BookButton |
All copy, prices and contact details live in lib/config/*.json:
| File | Holds |
|---|---|
brand.json |
name, tagline, colours |
contact.json |
phone, WhatsApp, email, address, hours |
catalogue.json |
test categories, tests, prices (₹), turnaround, preparation |
services.json · home-collection.json |
services and home-collection details |
doctors.json · testimonials.json · metrics.json · why-choose.json |
trust sections |
faq.json · hero.json · nav.json · footer.json |
page text and navigation |
lib/config.ts loads and types them (lib/types.ts). Components only read from it.
- Metadata (
app/layout.tsx): title, description and share text come frombrand.json→seo; canonical URL, Open Graph and X cards useseo.siteUrl(override withNEXT_PUBLIC_SITE_URL). - Structured data (
lib/seo.ts): one JSON-LD graph,WebSite+DiagnosticLab/MedicalBusinesswith the address, phone, hours (contact.json→hours.rules, keep it in step withhours.display), areas served and every catalogue test. It only repeats what the page prints: no ratings or reviews unless they are real Google reviews, no doctors who do not work at the lab. - Generated files:
app/robots.ts(everything allowed, AI search crawlers included),app/sitemap.ts(add each new public route),app/manifest.ts,app/opengraph-image.tsx(1200×630 link preview). - The h1 starts with
hero.json→eyebrow("Pathology lab in Arang, Raipur"): keep the city in it. - Keep the name, address and phone identical to the Google Business Profile.
components/three/ holds the scene: engine.ts (renderer and loop), objects.ts (lab objects) and
materials.ts (brand colours applied at runtime). Scrolling drives it through GSAP (lib/gsap.ts,
lib/scroll-store.ts). Models are in public/models. They are optimised copies of CC-BY 3.0 / CC0
works, credited in lib/model-credits.ts and shown in the footer. Keep those credits when adding or
replacing a model.
npm install
npm run dev # http://localhost:3000
npm run build && npm start
npm run lint
npm run llms # regenerate llms-full.txt after changesThis project uses Next.js 16, which changes APIs and conventions. Read
node_modules/next/dist/docs/before writing code (see AGENTS.md).
app/ layout, page, global styles, icons, robots, sitemap, manifest, share image
lib/seo.ts canonical URL and JSON-LD
components/ page sections, motion helpers (SmoothScroll, Tilt3D), ui (BookButton, Icon, SectionHeading)
components/three/ the 3D living-lab scene
context/ BookTestContext (booking dialog state)
lib/config/ all site content as JSON
lib/ config loader and types, GSAP setup, scroll store, model credits
public/ logos, 3D models
logos/ logo concepts and exports
The lab's reports, invoices and data run on the public kits in github.com/mgpl-diagnostics. AI tools: start at llms.txt or llms-full.txt.
Code and content © MGPL Diagnostics (Maa Gayatri Path Lab). All rights reserved. 3D models keep their
own licences (see lib/model-credits.ts).