MindVisionSoftv2.4
CASE STUDY · THIS WEBSITE

The portfolio piece you are currently using.

We are a new studio, so we have fewer client stories than we would like and no interest in padding them out. Instead, here is the one project you can inspect yourself: this site. Add a package, open the checkout, read the policies. Everything described below is running while you read it.

STACK · WHAT IT RUNS ON

Built, Not Assembled

Framework

Next.js App Router with React and TypeScript. Server-rendered, so pages are readable by crawlers without running JavaScript.

Styling

Tailwind CSS v4, self-hosted fonts. No page builder, no theme, nothing loading from a CDN we do not control.

Database

Postgres on Supabase, accessed through Drizzle with a connection pooler suited to serverless.

Payments

Razorpay for India in rupees, PayPal for everywhere else in dollars. Both verified server-side.

Email

Transactional email through Resend — receipts, payment links, renewal reminders, enquiry alerts.

Hosting

Vercel, with a daily scheduled job for the renewal chase.

DECISIONS · THE PARTS THAT MATTER

Five Things Worth Doing Properly

Most of a build is unremarkable. These are the parts where a shortcut costs somebody real money, and where we would want to know how a supplier had handled it.

01

The browser is never trusted with a price

The checkout sends package ids, not amounts. The server looks the price up in its own catalogue and charges that. A request claiming a ₹99,999 package costs ₹1 is still charged ₹99,999 — the number in the browser has no authority at all.

02

A payment is only real once the server says so

Razorpay returning "success" to the browser proves nothing, because a browser can post anything. The order is marked paid only after the server recomputes an HMAC signature over the order and payment ids and compares it in constant time. PayPal has no such signature, so the server calls PayPal’s capture API itself and additionally checks the captured amount matches what it recorded.

03

Payments that never reach the browser still get recorded

If a customer’s phone dies mid-payment, the browser never calls back. A webhook catches those server-to-server and reconciles the order. A captured payment that matches no order raises an alert rather than being silently discarded.

04

Renewals chase themselves

A scheduled job sends four staged reminders before a subscription lapses. Each stage is claimed in the database before the email is sent, so a retry or a double-run cannot message a client twice — the guarantee lives in a unique index rather than in hoping the job behaves.

05

Both currencies, one source of truth

Prices display in rupees or dollars based on where you are, and the choice is remembered. Every price on every page — catalogue, guides, this sentence’s neighbours — is read from one catalogue file, so no page can quote a figure the checkout disagrees with.

FAQ · STRAIGHT ANSWERS

Fair Questions About a Self-Authored Case Study

Why publish this instead of a client case study?+

Because we would rather show something you can check than something you have to believe. Client case studies are usually unverifiable by the reader — you cannot click into someone else’s admin panel. You can click Pay on this site and watch the whole machine work, then ask for a refund and watch that work too.

Is this the same as what I would get?+

The front end, yes — the same framework, the same attention to speed and structured data. The payment and admin machinery here is more than most sites need, and it is not in the standard packages. If you need it, say so and it is scoped and quoted like anything else.

Which package would this site be?+

The public pages map roughly to the Professional Website package. The checkout, admin panel, dual payment integration and automated reminders are custom work well beyond it, and would be quoted separately.

Can I see the code?+

Not this one — it holds live payment credentials and client data. What we can do is walk you through any part of it on a call, and everything we build for you is handed over in full with repository access in your name.

Want one built to this standard?

The prices are published, the scope is written down first, and you can have your money back before the project starts if you change your mind.