All projects

Case study

Sidratul Noor

A Bangla e-commerce store for handmade mahogany Quran stands, with its own Go API, an admin for orders, stock and courier shipping, and a storefront tuned for Facebook ad traffic.

commits, all mine
211
database migrations
41
parts: storefront, admin, API
3
Role
Full stack, end to end
Year
2026
Client
Sidratul Noor, built by StackRover (my studio)
Stack
GoFiberPostgreSQLNext.jsReactTailwind CSSTanStack QueryWebSocketDockerCaddy
Sidratul Noor screenshot

Overview

Sidratul Noor (sidratulnoor.com) sells handmade mahogany Quran stands (rehal) and Islamic gifts across Bangladesh. Most customers arrive from a Facebook ad on their phone, order with cash on delivery, and want to know when the parcel will arrive.

I built the whole system at StackRover:

  • the storefront, in Bangla (Next.js)
  • the admin, where the team runs orders, stock, shipping, content and reports
  • the API behind both (Go and PostgreSQL)

The storefront’s home page

The challenge

  • Ad traffic on slow phones. Visitors come from Facebook and Instagram ads on mobile data, so the page has to load fast and the order button has to be obvious.
  • Cash on delivery means calls and couriers. Every order is confirmed by phone, then handed to a courier, and the customer needs to track it.
  • A small team runs everything. The same people handle products, stock, orders, blog posts and ad spend, so the admin has to make the daily work quick.

The solution

A storefront for buying, not browsing

Each product shows its price and discount, how many pieces are left, and two clear actions: Add to cart and Order now. Checkout is a short form built around cash on delivery. After ordering, customers can follow their parcel on a track order page.

Products, with stock left and Order now

The rest of the site builds trust: reviews from customers, a FAQ, a return policy, a blog, an about page and a WhatsApp link.

Offer banners for the current campaign

An admin for the whole business

  • Orders: details, status changes and printable invoices, with new orders arriving in real time over a WebSocket and as push notifications.
  • Shipping: orders are sent to the SteadFast courier from the admin, and a webhook brings delivery status back, so customers can track their parcel.
  • Inventory: stock levels per product, so the storefront never sells what isn’t there.
  • Products, blog posts and CMS pages, each with its own editor.
  • Leads, captured from the site for follow-up calls.
  • Reports: sales reports, per-order costs, and ad-campaign spend tracking.

Under the hood

  • Go API on Fiber, with a clean handler → service → repository structure, JWT auth and validation. PostgreSQL with 41 migrations.
  • Media pipeline: uploads are resized and converted to WebP and AVIF, so product photos stay sharp but light on mobile data.
  • Real time: a WebSocket feed and Web Push notifications for new orders.
  • SEO: a sitemap and prerendering for crawlers, with structured data.
  • Email through Resend.
  • Tests for the order, review, lead and media handlers.
  • Deployment: Docker Compose behind Caddy, with automatic TLS.
  • The storefront moved from a React SPA to Next.js 16, so pages arrive already rendered for both ad traffic and search engines.

Key features

  • Bangla storefront with stock counts, Order now and cash-on-delivery checkout
  • Order tracking for customers
  • Reviews, FAQ, blog, return policy and WhatsApp contact
  • Admin for orders, invoices, inventory, products, blog and CMS pages
  • SteadFast courier integration
  • Real-time order notifications (WebSocket and Web Push)
  • Lead capture, sales reports and ad-spend tracking
  • WebP and AVIF image pipeline, sitemap and prerendering