
Engineering a Dual-Path Commerce & Consultation Platform for AstroKraft
How we rebuilt AstroKraft's booking flow, hardened its security and search indexing, tuned its Vercel compute costs, and shipped a spam-resistant public testimonials system — one focused sprint at a time.
Client
AstroKraft
Location
Rangirkhari, Silchar, Assam, India
Timeline
4 weeks
Role
Lead Full-Stack Developer
Team
2 people
Live Site
astrokraft.onlineAstroKraft is an e-commerce and consultation platform offering lab-certified gemstones, Rudraksha, and Vastu products alongside Vedic astrology consultations, purohit (priest) booking, and Vastu guidance — serving customers across India from its base in Silchar, Assam. The platform pairs a Next.js storefront with an Expo-based mobile admin app used to manage the product catalog, orders, consultation bookings, and customer reviews. Over a series of engagements we worked across the full stack: fixing data-integrity bugs in the admin catalog, redesigning the booking flow so astrologer assignment moved from the customer to the admin team, resolving Google Search Console indexing issues, diagnosing and fixing a Vercel Fluid Compute cost spike, and building an entirely new public testimonials feature from schema to homepage.
Client Results
Search Console Health Recovered
Eliminated soft-404 responses and addressed "crawled – currently not indexed" findings by fixing the ISR notFound() behavior and adding locale/query-variant crawl rules.
Vercel Compute Cost Brought Under Control
Identified the real driver of rising Fluid Active CPU usage via Observability data and re-tuned revalidation windows on the highest-traffic routes instead of over-provisioning.
Catalog Data Integrity Restored
Fixed a silent update bug that had already caused at least one live product to display an incorrect origin, and corrected the underlying save path so it can't recur.
New Testimonials Channel Shipped Spam-Resistant From Day One
Delivered a full anonymous-submission testimonials feature — schema, atomic rate limiting, moderation queue, and homepage display — reviewed and hardened against abuse before launch rather than after.
Simpler, Lower-Friction Booking Flow
Consultation booking now asks only for a category and date/time, removing a decision step that didn't match how the business actually staffs appointments.
Lighthouse Audit

Google Search Console
Performance Overview

Core Web Vitals

AstroKraft's platform had accumulated a mix of correctness, security, and cost problems typical of a fast-moving product: a real Content-Security-Policy gap (an overly permissive img-src and a missing worker-src) exposed the site to unnecessary risk; the admin catalog form silently dropped a product tier's SKU, origin, and carat weight on every edit (only price actually persisted), which had already caused an incorrect "Origin: Ceylon (Sri Lanka)" listing to go live; the consultation booking flow let customers pick a specific astrologer up front, which didn't match how the business actually staffed appointments; Google Search Console was flagging soft-404s and "crawled – currently not indexed" pages; and Vercel's Fluid Compute Active CPU usage was climbing in a way the client couldn't explain from the dashboard alone. On top of that, the business had no way to collect public testimonials without requiring an account, and no path for a customer to leave one without going through the full order/review flow.
- 01
Close the real CSP gaps (worker-src, img-src wildcard) without breaking existing image and payment integrations.
- 02
Find and fix the admin catalog bug silently dropping SKU, origin, and carat weight on tier edits, and correct the product data it had already corrupted.
- 03
Redesign the consultation booking flow so customers choose a category and price, and the astrologer is assigned afterward by an admin — including a new admin assignment UI and a per-category pricing model.
- 04
Resolve Google Search Console's soft-404 and "crawled – currently not indexed" findings, and prevent locale/query-parameter URL variants from generating crawl waste.
- 05
Diagnose and fix the source of rising Vercel Fluid Active CPU usage without guessing — using Observability data to find the actual cost driver before changing anything.
- 06
Design and ship a fully public, no-sign-in testimonials system — submission, spam/rate-limit protection, admin moderation, and homepage display — as a new feature end to end.
- 07
Restructure the homepage and top navigation into a "dual-path" layout that treats gemstone shopping and astrology consultation as equally weighted entry points.
We worked feature-by-feature rather than as one large rewrite, verifying each change against the live database and a production build before it shipped. For the CSP and catalog bugs, we traced each issue to its root cause the catalog fix turned out to be an update path that only ever wrote the `price` field, leaving the rest of the tier's columns untouched on every edit and fixed the underlying logic rather than patching symptoms. For consultation booking, we moved pricing from the astrologer record onto a new `price` column on `consultation_categories`, made `consultations.astrologer_name` nullable, rewrote the customer-facing booking flow to stop at category selection, and built a new astrologer-assignment screen in the Expo admin app so staff could assign the right astrologer after the fact. For the Search Console findings, we added locale-redirect logic in middleware, added targeted `robots.txt` disallow rules for parameter-based crawl variants, and traced the soft-404s to `notFound()` calls returning HTTP 200 under ISR fixed by setting `dynamicParams = false` on the locale layout so invalid params genuinely 404 instead of silently rendering. For the Vercel cost issue, instead of guessing at caching changes, we used the Observability dashboard's Functions and Runtime Logs views to identify a crawler hitting nearly every page every 60–90 seconds, landing just past each page's 1-minute revalidation window and forcing near-constant regeneration. We raised `revalidate` from 60 to 300 seconds on the four highest-CPU routes, which matched the crawl cadence without weakening freshness for real catalog/pricing changes. For testimonials, we designed the feature the way a security-sensitive public write path deserves: a new `platform_reviews` table with RLS restricting writes to the service-role API route, a honeypot field, and after review an atomic Postgres function (`create_platform_review`) using a transaction-scoped advisory lock to rate-limit submissions per IP without a TOCTOU race, mirroring an existing pattern already used for purohit bookings. We added DB-level and schema-level length limits, a moderation queue in the admin app, and a homepage marquee component that auto-scrolls approved testimonials continuously (pausable on hover and keyboard focus, and disabled under `prefers-reduced-motion`).
Key Features
Dual-Path Homepage & Navigation
Homepage and top nav restructured around two equal-weight entry points — "Shop Gemstones" and "Talk to an Astrologer" — with a grouped Vastu dropdown, a cosmic-themed hero background, and consistent editorial-style section headings throughout.
Admin-Assigned Astrologer Consultation Flow
Customers book by category and price only; a new admin screen in the Expo app lets staff assign the actual astrologer afterward, backed by a new per-category price column and a nullable astrologer reference on the consultations table.
Public No-Sign-In Testimonials System
Anyone can submit a platform testimonial without an account. Protected by a honeypot field and an atomic, advisory-lock-based Postgres rate-limit function, routed through an admin moderation queue, and displayed as an auto-scrolling homepage marquee once approved.
Search Console Health Remediation
Fixed soft-404s caused by ISR silently returning HTTP 200 for invalid dynamic params, added locale-redirect middleware, and added robots.txt rules to stop low-value URL variants from being crawled.
Per-Tier Discount Pricing & Catalog Data-Integrity Fix
Fixed a bug where editing an existing product tier silently dropped its SKU, origin, and carat weight on save, and added an optional "offer price" per tier that surfaces as a struck-through original price across listings, the product page, and the cart.
Local Discovery Strategy
NAP Consistency
AstroKraft, Rangirkhari, Silchar, Assam, India | Email: vastubipra@gmail.com
Local Keywords
Target Areas
“Very good service; Locallify has helped me to go digital fully.”
Biprangshu Bhattarcharjee
Founder · AstroKraft
Questions & Answers
Q1How did you find the real cause of the rising Vercel Fluid Compute cost instead of just increasing cache times everywhere?
We used Vercel's Observability dashboard — the Functions breakdown and Runtime Logs — rather than guessing. That surfaced a bot/crawler hitting nearly every page every 60-90 seconds, just past each page's 1-minute revalidation window, which meant almost every crawl hit forced a fresh regeneration. We only raised revalidate on the four routes actually driving that cost, from 60 to 300 seconds, which matched the crawl cadence without stalling real catalog or pricing updates.
Q2Why move astrologer selection from the customer to the admin team?
The original flow had customers pick a specific astrologer before booking, but that didn't reflect how the business actually staffed appointments. We moved pricing onto the consultation category itself, let the customer book by category and time, and built an admin screen for staff to assign the right astrologer afterward — removing a decision step that was adding friction without adding real choice.
Ready to fix what's actually costing you money?
We diagnose root causes — data bugs, indexing gaps, runaway compute costs — before we touch a line of config, and fix them for good.