Skip to content
← All work

Rigveda Essentials

Online grocery delivery across Dubai: nearly 15,000 products, delivery slots, and every order checked by a person before it's confirmed.

Live website
Role
Product, Design, Front end, Back end, Deploy
Year
2026
Region
UAE
Built with
React, Tailwind CSS, NestJS, Supabase, Railway
Status
Live · rigvedaessentials.com
The department menu with live product previews, beside the home page on a phone

[01]

// THE PROBLEM

Why it exists

The
Problem

A Dubai grocer wanted customers to order from nearly 15,000 products online, pick a delivery slot and pay online or on delivery.

The store holds no stock: it buys each order after checkout. So no order can be confirmed automatically. Someone has to check it first, and if an item can't be bought, the customer needs the difference back without a phone call.

[02]

// WHAT I BUILT

The rules

What I
Built

  1. 01

    Every order checked by a person

    Orders are never confirmed automatically. The store confirms an order, adjusts it by reducing or removing lines, or rejects it. Adjusting refunds the difference and rejecting refunds the lot, automatically, and a refund can never be sent twice.

    1. New order
    2. Store reviews
      • Confirm
      • Adjust + partial refund
      • Reject + full refund
  2. 02

    Delivery slots that can't be double-booked

    Customers choose a delivery slot at checkout. The slot is reserved inside the database in a single step and held for 15 minutes, so two customers can't take the last place.

    1. Basket
    2. Delivery slot (held 15 min)
    3. Pay online or cash on delivery
    4. Order placed
  3. 03

    UAE tax invoices that add up

    Prices include VAT, so VAT is taken out of each line rather than added on, and the totals are the sum of the rounded lines. Each confirmed order gets its own tax-invoice number, issued once even if two people click at the same moment.

  4. 04

    Real status codes and search previews for a browser app

    Most browser apps answer every address with "OK". This store's server checks first: a live product returns 200, a withdrawn one 410 and an unknown address 404. Each page also carries its own title, description and product data in the raw HTML, so Google and WhatsApp previews see the real product.

  5. 05

    WhatsApp order updates

    Customers get WhatsApp messages as an order is received, confirmed, out for delivery and delivered, or adjusted or rejected, and the team gets an alert for every new order.

  6. 06

    An admin panel to run it

    The review queue, orders, a printable delivery-slot manifest, the catalogue, discount codes, delivery fees and the homepage banners are all managed from one admin panel.

[03]

UNDER THE HOOD

Request path

  1. BrowserReact + Tailwind; customers sign in with a phone code (Twilio Verify)
  2. Web serverSets real status codes and SEO tags before the app loads
  3. APINestJS on Railway
  4. SupabasePostgres (slots, orders, refunds) + storage for every product image
From the code and live checks (29 Oct 2026). Hosting confirmed from the site's response headers.

Decisions worth explaining

  • Adjust instead of cancel

    Letting the store adjust an order and refund the difference keeps the sale when one item can't be bought.

[04]

// OUTCOMES

Confirmed only

Outcomes

Nearly 15,000

Products in the catalogue