Case StudySpiritual Services & Travel·2024·India

HRDYAM

Full-Stack Spiritual Services Platform

ClientZoAstro Tech Pvt Ltd
TypeFull-Stack Web Platform
Live Site
HRDYAM
150% increase

Online Inquiries

6 services orchestrated in single flow

Payment Flow

Zero user-facing errors across all integrations

Failure Handling

Near-instant via ISR webhook

Content Updates

The Problem

India's spiritual services market is fragmented across WhatsApp groups, independent astrologers with no online presence, and travel agents who don't do digital. The client needed a single trusted platform with verified practitioners, transparent pricing, and a frictionless booking experience — capable of handling real-money payments, real-time booking slots, CRM pipeline management, automated meeting scheduling, and multi-recipient email notifications.

What We Built

We built an end-to-end transactional platform unifying temple pilgrimage tours, live astrology consultations, wellness retreats, yoga programs, and an e-commerce store for certified spiritual products. The architecture prioritizes graceful degradation — every integration has a defined failure mode that degrades partially rather than crashing the page. Six external services (Cashfree, Firebase, Sanity, Zoho, Resend, Google Calendar) are orchestrated in a single payment-completion flow without a single point of failure.

// HOW IT WORKS

Under the Hood

01

Dual-Source Data Pattern

Every data-fetching function tries Sanity CMS first, then falls back to local TypeScript data. The site never crashes — even if Sanity has an incident, pages load normally from local data.

02

Dual-Storage Booking Model

Consultation bookings write to Firestore (for real-time slot blocking) and Sanity (canonical order record with payment status). Firestore queries have a 5-second timeout — if slow, all slots render as available rather than blocking the booking UI.

03

Two-Mode Payment Integration

Cashfree SDK supports two UX flows: modal mode for store products (stays on checkout page) and full-page redirect for consultations (signals seriousness for higher-trust transactions).

04

Server-Side Auth Without firebase-admin

Token verification uses Google Identity Toolkit REST API directly — a lightweight HTTPS call instead of an SDK import, avoiding service account JSON credentials in a serverless environment.

// TECH STACK
FrameworkNext.js 16 (App Router, React 19, TypeScript 5)
CMSSanity v5 (embedded Studio)
DatabaseFirebase Firestore
AuthFirebase Auth + Google Identity Toolkit
PaymentsCashfree PG v5.1 (NPM SDK)
EmailResend (transactional)
CRMZoho CRM (OAuth 2.0)
BlogHashnode (GraphQL API)
AnalyticsGTM + Meta Pixel + GA4 + Microsoft Clarity
DeploymentAWS Amplify (SSR standalone)
// WHAT IT DOES
  • +Pilgrimage marketplace with multi-tier packages (Economy, Standard, Premium)
  • +Astrology consultation booking with real-time Firestore slot availability
  • +Sacred store e-commerce with spiritual-specific metadata (ruling planet, Rashi)
  • +Dynamic city landing pages for SEO and ad campaign traffic
  • +Admin panel with order clearance tracking and audit trail
  • +Astrologer dashboard with earnings and client lead management
  • +Dual-destination lead capture — Zoho CRM + Google Sheets simultaneously
  • +Multi-channel event tracking — Meta Pixel, GTM, GA4 from single tracking utility
// THE HARD CALLS

Why We Did
What We Did

Every architectural decision has a reason. Here are the ones worth explaining.

01

Why dual-store (Firestore + Sanity) for bookings?

Firestore is optimized for real-time reads with high write throughput — ideal for slot blocking during concurrent booking attempts. Sanity is the source of truth for orders and reporting. Using Sanity alone would have introduced CMS write costs and latency; Firestore alone would have meant building a separate order management UI.

02

Why Hashnode for the blog instead of Sanity?

The content team already uses Hashnode as their primary writing tool with a strong GraphQL API. Migrating blog workflow to Sanity would have cost editorial velocity with no meaningful technical benefit.

03

Why Promise.allSettled() for emails?

A customer waiting for payment confirmation should not see an error because the astrologer's email bounced. Each recipient is independent — one failure must not block others.

We needed a platform that truly captured the spiritual depth of our journeys — not just a booking website. The Beyond Horizon delivered something that moved our pilgrims before they even booked. Our inquiry volume jumped by 150% and the quality of leads improved dramatically.
A

Aditya Shukla

Founder, HRDYAM Travels

Ready to Build Something Like This?

Let's talk about your project.