Skip to content
Omar Sweiti
All projects

Case study · 2026

Sparrow Market

Multi-vendor marketplace: many independent stores, one cart

A multi-vendor e-commerce platform in Laravel and MySQL. Buyers check out from several stores in one order, sellers run their own catalogue and fulfilment, and an administrator approves stores and moderates the marketplace, in English and Arabic.

Context
Personal project
Year
2026

The source code is private.

Sparrow Market's home page: the headline, live figures and a 3D scene of floating products

Overview

A complete marketplace with three roles. Buyers search the catalogue, fill one cart from several stores and check out once; the order is split into one part per store, each with its own payment, progress and cancellation. Sellers manage products, photos and stock, accept, ship and deliver their own parts of orders, and follow their revenue on a dashboard. The administrator approves new stores, suspends accounts, moderates products and watches every order and transaction, and each admin action is written to an audit log.

Server-rendered Blade pages with Alpine.js and fetch keep it fast and simple: the cart, search suggestions, wishlist and notification bell update without reloading. Checkout runs in one database transaction that locks the cart and product rows, so two buyers can never take the last item, and it checks the cart against what the buyer saw. Access control is layered: middleware for roles and account status, policies that answer 404 for other people's records, and validated form requests. The whole interface works in English and Arabic with a mirrored right-to-left layout, in light and dark themes and down to 360 px phones, and passes axe accessibility checks. About 560 Pest tests run on MySQL in GitHub Actions, alongside Larastan and Pint.

Key features

  • One checkout across several stores, split into a part per store with its own payment, timeline and cancellation
  • Seller centre: multi-photo products re-encoded to WebP, low-stock alerts, order fulfilment, revenue charts and CSV export
  • Admin console: store approval, account suspension, product moderation, every transaction and an audit log
  • Transactional checkout with row locks against overselling, and a cart fingerprint that refuses stale prices
  • Full-text search with live suggestions, shareable filters and reviews only from verified buyers
  • English and Arabic with a full right-to-left layout, dark mode, WCAG 2.1 AA and a phone-first layout
  • About 560 Pest tests on MySQL, Larastan level 6 and GitHub Actions CI

Architecture

  1. 01

    Blade + Alpine.js

    Server-rendered pages; fetch updates the cart, search and wishlist in place

  2. 02

    Laravel 13

    Routes, middleware, form requests and policies for each role

  3. 03

    Actions & queries

    Checkout, fulfilment and moderation in transactions with row locks

  4. 04

    MySQL 9.7

    Constraints, full-text search and indexes for each screen

  • PHP
  • Laravel
  • MySQL
  • Blade
  • Alpine.js
  • Tailwind CSS
  • daisyUI
  • Chart.js
  • three.js
  • Pest
  • GitHub Actions

Screens

Select a screenshot to see it larger.

Storefront10 screens

Sign-in and sign-up4 screens

Buyer14 screens

Seller centre9 screens

Administration11 screens

Arabic, dark mode and phones8 screens

1 / 56Storefront ·Home page with a 3D hero, live figures and calls to action

Home page with a 3D hero, live figures and calls to action