SaifBrand

Cash-on-Delivery E-Commerce — One Platform, Many Bangladeshi Brands

A Laravel shop platform built for the way Bangladesh buys online: Facebook ad in, phone number and district out, cash handed to the courier at the door. The same codebase runs several independent brands (books, fashion and lifestyle), each with its own design, domain, database and dashboard.

🛍️ The screens below are from one of the stores, a streetwear brand, photographed before launch with a sample catalogue. The live shops belong to our clients, so they are not linked here.

📋 The Brief

Built for How Bangladesh Shops Online

Almost every order starts on a Facebook ad and ends in cash on delivery, on a phone, on mobile data. That decides everything: the checkout asks for a name, a mobile number and a district, and nothing else; the delivery charge follows the district; the page is server-rendered and small enough to open fast on a weak connection; and the owner needs to call every buyer who filled the form but never pressed Order. Each new brand gets its own look without forking the code, and a feature built for one shop never changes another.

📱 See It In Action

Real Screens, Not Mockups

Streetwear storefront home page with a bold headline, model photo and category cards
Three phone screens: mobile home page, product grid with Add to cart and Order now, and a product page
Front page designer where the owner edits hero text and banner photos without a developer
Product page with sale price, size buttons, stock warning, Order Now and an inline order form
Cash-on-delivery checkout with shipping details on the left and the order summary on the right
English admin dashboard listing products with price, stock and a show-on-site switch
Product editor with separate stock for each size
What Was Built

What the Platform Actually Does

📦

Checkout for Cash on Delivery

Name, mobile number and district, with the number checked as it is typed. All 64 districts carry their own delivery charge, free delivery above a set amount is optional, and every total is recalculated on the server. A seven-layer fraud guard limits repeat orders per phone, device and IP and quietly stops bots.

📞

Abandoned Checkout Capture

The moment a buyer types a valid number, it is saved with what they were looking at, even if they close the tab. The owner sees a call list with the cart value and how many times the person came back, and marks each one called. When the person later orders, the row links itself to the order.

🎯

Landing Pages for Facebook Ads

A section-based page builder for single-product and combo offers, with buy-more-pay-less price steps, a per-page coupon and an order form at the bottom. Every order records which page it came from, so the owner can tell which ad actually sells.

📈

Pixel, Conversions API and GA4

Facebook Pixel in the browser and the Conversions API from the server, deduplicated, plus GA4 and Tag Manager events. The funnel fires in the right order, view, add to cart, checkout, purchase, and a built-in tracking check shows the owner whether each tag is really firing.

👕

Stock by Size and Colour

Each size or colour keeps its own stock. Confirming an order takes the pieces out, cancelling or a return puts them back, and the product page shows a short "only a few left" note when stock runs low. Order Now on a product card goes straight into the order form.

🧑‍💼

A Dashboard the Owner Runs Alone

English admin with five roles, per-account permissions, approval for sensitive settings and a record of every device that signs in. Products, categories, banners, the home page text, the popup, coupons and delivery charges are all editable, and photos are turned into WebP in three sizes on upload.

🎨

One Codebase, Different Brands

Each shop's differences live in its own settings file and a theme layer: layout, colours, fonts, URLs, language. New features ship switched off by default and are turned on per shop, so improving one brand never silently changes another's live store.

Fast on Shared Hosting

Server-rendered Blade with a little Alpine.js, no single-page app. On ordinary shared hosting the home page answers in about 0.35 seconds and its HTML is under 15 KB compressed. The site checks itself every few minutes and clears its own cache if a page breaks.

🚚

Courier and Sheet Ready

Optional exports and syncs for shops that want them: a courier-ready Excel of selected orders, and orders mirrored to a Google Sheet whose status column updates the site. Shops that do not need them simply never see them.

Laravel 13 · PHP 8.3 · Filament 4 · Tailwind CSS 4 · Alpine.js · MariaDB · shared Hostinger hosting

Selling on Facebook?

Get a Shop Built for Cash on Delivery

Your own design and domain, a checkout made for Bangladeshi buyers, and a dashboard your team can run without a developer.