Sparrow Commerce
A commerce platform built so Verte can leave Shopify: a merchant admin and a storefront API in one Next.js app, with its own checkout, GST invoicing and profit analytics.
My role: Sole developer: architecture, data model, admin, storefront API, payments and deployment
~25,000
lines of TypeScript across the admin and storefront API
1 file
to move a storefront onto it, by design
4
paid Shopify apps it replaces: profit, promotions, GST and reviews
96
USD orders through vertewatches.com's own checkout, the first piece of the move
01
The brief
Verte sells in India and worldwide, but Shopify can't take payment in anything except rupees for an Indian merchant, and the brand was paying for four separate apps to cover profit analytics, bundle promotions, GST compliance and reviews.
The goal was a commerce platform Verte owns: its own admin, its own checkout in each market's currency, GST built in, and profit numbers it can trust, without stopping sales while the move happens.
02
What I built
- A merchant admin for products, collections, inventory, price lists, subscriptions, orders, carts, customers, discounts, reviews, GST, analytics, reports, content, email and team.
- A token-authenticated storefront API for catalog, search, cart, checkout, customer accounts, discounts, inventory, reviews, content and event tracking.
- Stripe Checkout with webhooks that turn a completed payment into an order.
- GST invoicing with GSTR-1 export, a promotions engine, a reviews module with moderation, and profit analytics.
- A Shopify sync that imports the catalogue and orders, so the move happens on real data.
- A Docker review stack (admin, a demo storefront, seeded Postgres and Caddy behind basic auth) so the client can click through everything safely before it goes live.
03
How I did it
Prove the checkout firstMay 2026
The most urgent gap was charging in USD. While the platform was being built, the global store vertewatches.com went live on 19 May on its own Stripe checkout, with orders written back into Shopify. That proved the payment flow in production while sales carried on.
Design for the swapMay and June 2026
The storefront calls commerce through one file, so moving a store from Shopify to Sparrow Commerce changes that file and nothing else. The platform is one Next.js app on PostgreSQL with Drizzle, with the admin and the storefront API as its two surfaces.
Build the admin the client actually usesJune to August 2026
Every area of the admin was built against the apps it replaces, then the whole codebase was read end to end twice, in June and August, with the design, the reasoning and a setup runbook written down as it went.
A readiness review, point by pointOctober 2026
Measured against the go-live checklist: 11 of 13 areas are built, including checkout, pricing and profit analytics, which are already live. Four built areas (customers, reviews, products and discounts) are waiting to go live with the move, and 2 are still being finished. The global store moves first. India follows, on Indian payment gateways.
04
Where it stands
11 of 13
go-live areas built, with checkout, pricing and profit analytics already live
4
built and waiting to go live with the move: customers, reviews, products and discounts
2
areas still being built
7 done4 done, waiting to go live2 being finished
Show as a table
| State | Areas |
|---|---|
| Done | 7 |
| Done, waiting to go live | 4 |
| Being finished | 2 |
When both stores have moved, Verte runs on a platform it owns, charges each market in its own currency, files GST from its own admin and drops four app subscriptions.
At a glance
A commerce backend and merchant admin built to take Verte off Shopify: one Next.js app with the admin dashboard and a token-authenticated storefront API.
- Admin for products, collections, inventory, price lists, subscriptions, orders, carts, customers, discounts, reviews, GST, analytics, reports, content, email and team
- Storefront API for catalog, search, cart, checkout, customer accounts, discounts and event ingestion
- Stripe Checkout with webhooks; a storefront moves onto it by changing one file
- Docker review stack (admin, demo storefront, seeded Postgres and Caddy with basic auth) so stakeholders can click through it safely
- About 25,000 lines of TypeScript