Multi-Vendor Marketplace with Laravel
Multi-vendor marketplace combining Laravel and Inertia.js React, featuring vendor storefronts, Midtrans payments, escrow-style order workflows, and real-time buyer-seller chat.
A multi-vendor marketplace on Laravel 12 and React 18 joined by Inertia.js — a single codebase serving buyers, independent sellers and platform administrators, with an escrow system holding funds until an order actually completes.
Highlights
- Escrow, not direct payout — money from a sale is held rather than forwarded immediately, and released automatically once the order reaches a completed state. That single decision is what makes a marketplace with untrusted sellers workable at all, and it is why order status transitions get their own debugging guide in the repository.
- Inertia rather than a separate SPA — React 18 renders the views while Laravel keeps routing, validation, policies and sessions. There is no separate API surface to keep in sync and no duplicated authorisation logic, with Ziggy exposing named routes to the frontend.
- Automated disbursement — vendor payouts run as a system process on top of the escrow ledger instead of being reconciled by hand.
- Payment integration hardened by iteration — Midtrans is documented across two dedicated fix guides, one of them specifically for virtual-account handling, which is where payment integrations usually break in practice rather than in theory.
- Redis in front of the hot paths — caching and query optimisation are treated as part of the design, with a setup guide and a monitoring document rather than being left implicit.
- Security stated as a checklist, not a claim — CSRF, XSS and SQL-injection protection, role-based access control through Laravel policies, email verification via Breeze, and API rate limiting.
Key Features
- Product management — full CRUD with categories, variants and inventory tracking.
- Cart and checkout — a persistent cart with real-time updates, flowing into Midtrans with multiple payment methods.
- Order lifecycle — complete status tracking from placement through shipping to completion, with customer-facing tracking.
- Vendor dashboard — store management, sales analytics, revenue and earnings reports for each seller.
- Escrow and disbursement — secure fund holding with automatic release, plus automated vendor payouts.
- Real-time chat — direct customer-to-vendor communication, with an admin chat guide covering the moderation side.
- Notifications — email and in-app, over a mobile-first responsive UI prepared for localisation.
Tech Stack
- Laravel 12 + PHP 8.2+
- React 18 + Inertia.js 2.0
- Tailwind CSS 3 + Vite 5
- MySQL 8 / PostgreSQL 13+ with Redis 7 for cache
- Midtrans PHP SDK 2.6 (payments)
- Laravel Sanctum 4 (API auth) + Laravel Breeze (auth scaffolding)
- Ziggy 2 (named routes in the frontend)
- Laravel Pint + PHPStan + GitHub Actions
Status & Maturity
Active, and the only project in this catalogue with CI configured — GitHub Actions runs alongside Pint for formatting and PHPStan for static analysis, exposed through composer quality. Automated testing is limited to the Breeze authentication suite, so the marketplace-specific logic — escrow release in particular — is verified through the manual procedures written up in TESTING-ORDER-COMPLETION.md. Deployment, monitoring and Redis setup each have their own document.
Measured Metrics
| Commits | 25 |
| Date Range | 8 Jan 2026 – 13 Feb 2026 |
| Lines of code | 35,135 git-tracked lines |
| Automated tests | Breeze Auth test suite |