AI developer & architect, building production-ready intelligent systems.

©2026
← Back to projects

Client buildCommerce & brands ● 2026

Mithra Whole Foods

Traditional foods, sold through a modern headless store

A complete grocery store for millets, cold-pressed oils, ghee and traditional foods — Next.js storefront on a Medusa v2 commerce backend with cart, checkout, Stripe payments, search, wishlist and a custom homepage CMS.

End-to-endCart → checkout → payment
HeadlessMedusa v2 commerce core
0Paid search services
Product film
Role

Full-Stack Engineer — storefront, commerce backend & CMS

Tech
Year

2026

Live

Private build — demo on request

Overview

Mithra Whole Foods sells traditional, chemical-free foods and needed to move off an ageing template store onto something that feels premium and converts.

I rebuilt it as a headless store: a Next.js 15 storefront talking to a Medusa v2 backend on PostgreSQL. The full commerce path works end to end — catalogue, optimistic cart, customer accounts, multi-step checkout, Stripe payments, order history, wishlist and an in-house search engine with no external search service.

A custom homepage CMS module with an admin live-preview page lets the client change banners and featured collections without a developer.

The problem

Mithra Whole Foods sells chemical-free traditional foods — millets, cold-pressed oils, ghee, jaggery — and it was running on an ageing template store that didn't feel premium, couldn't be extended, and needed a developer for every banner change.

The rebuild had to keep the full commerce path working end to end, stay cheap to run for a small brand, and hand day-to-day content back to the client.

Tech stack
App
Backend & data
Services
Hosting, domain & DNS
Tooling
Architecture
Mithra Whole Foods system architecture
A Next.js storefront on Vercel talks to a Medusa v2 backend on Railway, which owns the data in Neon Postgres and takes payments through Stripe.
  1. 01

    Browse

    Category and product pages render from the Medusa Store API, with real product photography and the client's own wordmark traced to SVG.

  2. 02

    Search

    /store/search runs inside the backend and returns product ids — no Meilisearch or Algolia to host, pay for or keep in sync.

  3. 03

    Add to cart

    The cart context applies a local change first, reconciles with the backend, and rolls back with a toast if the backend rejects it.

  4. 04

    Check out

    Address → shipping → payment → review, with Stripe through Medusa's payment provider and an order confirmation at the end.

  5. 05

    Edit the homepage

    A custom homepage module with an admin live-preview page lets the client change banners and featured collections without a deploy.

Inside the product
The storefront homepage.
The catalogue, browsable by category.
In-house search: results for 'rice'.
A product page with add to cart.
The cart, with free-delivery progress and a summary.
The same store on a phone.
Under the hood: storefront, Medusa, Neon and Stripe.
Features

Optimistic cart

The cart updates instantly, then reconciles with the backend and rolls back with a clear message if something is out of stock.

Four-step checkout

Address, shipping, payment and review, with Stripe payments and order confirmation.

In-house search

Product search runs inside the Medusa backend — fast, free and no third-party index to keep in sync.

Homepage CMS

A custom Medusa module plus a live-preview admin page for banners, offers and featured products.

Highlights
  • 01pnpm + Turborepo monorepo with storefront and commerce backend
  • 02Stripe payments, customer auth and address book
  • 03Production audit, QA report and deployment runbook delivered with the build
  • 04Client's own wordmark traced to SVG and real product photography throughout
Key decisions

Headless, on an open-source commerce core

Medusa v2 provides orders, carts, customers and payments as a backend; the storefront is free to look like the brand instead of a template.

Search without a search service

Meilisearch was removed in favour of an in-house search endpoint. For a catalogue this size it's fast enough, free, and has nothing to keep in sync.

Optimistic, but honest

The cart feels instant, but the backend is the source of truth — a rejected change rolls back visibly instead of silently drifting.

Measure before migrating

A slow store prompted 'should we move to Supabase?'. Measuring showed ~290 ms per query from the backend–database distance; a same-region link is 1–3 ms. The answer was region, not vendor.

What's next
  • →Co-locate the backend and database in one region to remove the ~290 ms per-query penalty.
  • →Switch on the analytics and observability that are already built, then fix correctness gaps they surface.
  • →Shipping automation through the Easyship fulfilment module.
  • →Bring the UI back in line with the defined design system.
Gallery

Want something like this?

I can build one for you.

Tell me what you have in mind — I'll reply with questions, a plan and a quote.

Next projectTecstellar Command Center →