Skip to main content

Introduction

Baxela is a developer-first, modular, headless e-commerce platform. The backend is an API-only Laravel application, consumed by a React admin panel and a Next.js storefront — all developed together in a single monorepo.

Highlights​

  • Modular monolith — the backend is split into bounded modules (Catalog, Orders, Payments, Shipping, …) via nwidart/laravel-modules, not a distributed microservice sprawl.
  • Event-driven — modules communicate through domain events and listener reactions, keeping them loosely coupled.
  • Headless / API-first — the storefront, admin and mobile app are plain clients of the versioned REST API.
  • Shared-hosting friendly — a conventional PHP stack (no exotic runtime requirements) that also runs great in Docker.
  • Fully documented — API (OpenAPI via Scramble), flows, and module references.
  • SOLID & Open/Closed compliant — extend through events, listeners, module overrides, and custom modules rather than core edits.

The apps​

AppStackPurpose
backendLaravel (PHP ≥ 8.3), MySQL, RedisREST API, modular monolith
adminReact 19, Vite 7, TypeScript, Tailwind v4, shadcn/uiBack-office panel (catalog, content, discounts, support, media, orders, users, settings)
storefrontNext.js (App Router), React 19, TypeScriptCustomer-facing shop with built-in English + Farsi (RTL) locales
mobileExpo (React Native), expo-router, NativeWindMobile storefront — separate baxela-mobile repository (see Mobile)

Where to go next​

  • Installation — get the whole platform running with one docker compose up -d.
  • Architecture — how the modular monolith and its modules fit together.
  • Dependency graph — an interactive map of how the modules actually reference each other, regenerated after each release.
  • Database ERD — per-module schema diagrams: tables, keys, and relations, generated from the live database.
  • API — authentication, conventions, and the OpenAPI/Bruno tooling.
  • Deployment — develop and production stacks.