Developer Overview

The WemX tech stack, codebase layout and the extension points you can build on.

WemX v3 is a standard Laravel 12 application with a reactive UI built on Livewire 3 and Volt. If you know Laravel, you already know most of WemX. This section explains the parts specific to WemX: the billing domain, the extension system and the conventions the codebase follows.

Tech stack

LayerTechnology
LanguagePHP 8.3+
FrameworkLaravel 12
UILivewire 3 + Volt (single-file components), Blade, Tailwind CSS (client area), Tabler (admin area)
DatabaseMySQL 8+, MariaDB 10.3+, PostgreSQL or SQLite
Queue & schedulerLaravel queues (database driver by default) and the Laravel scheduler
TestsPHPUnit 11

Codebase layout

app/
├── Actions/          Business operations (OrderActions, PaymentActions…), the main write API
├── Console/Commands/ Artisan commands, including the scheduled cronjobs
├── Events/           Domain events (Orders, Payments, Users, ServerAccounts)
├── Extensions/       The extension framework: base classes, traits, CLI commands
├── Facades/          Tax, World, Utils, ModelSettings
├── Handlers/         Payment/subscription handlers that run when money arrives
├── Http/             Controllers and middleware
├── Jobs/             Queued jobs (order provisioning, mail delivery)
├── Models/           Eloquent models
├── Services/         Updater, marketplace, data export
└── helpers.php       Global helpers: settings(), price(), extensionElements()…
config/
├── email_events.php  Definitions of every automated email template
└── tax.php           Default tax rates
extensions/
├── Gateways/         Payment gateway extensions
├── Modules/          Feature modules (e.g. Tickets)
└── Servers/          Server/provisioning extensions
resources/
├── admin_area/{theme}/    Admin theme (views, Volt components, assets)
├── client_area/{theme}/   Client theme
├── email_templates/{theme}/
└── invoices/{theme}/
routes/
├── web.php     Client area & public routes
├── admin.php   Admin routes (/admin, staff only)
├── auth.php    Authentication routes (/auth)
└── console.php Scheduler definitions

Ways to extend WemX

You want to…Build a…Guide
Provision services on a new platformServer extensionServer extensions
Accept payments through a new providerGateway extensionGateway extensions
Add a feature with its own pages, models and permissionsModuleModules
Add menu items or widgets to existing pagesElements in any extensionUI elements
Restyle the client area, admin area, emails or invoicesThemeThemes & views
React to orders, payments or usersEvent listenerEvents

Avoid changing core files in app/, resources/ or routes/ for customizations. The in-app updater overwrites them. Put your changes in an extension or a custom theme instead.

Contributing

WemX is source-available on GitHub. Issues and pull requests are welcome. Please review the license before contributing or redistributing. The repository follows the Laravel conventions in its AGENTS.md:

  • Format PHP with Laravel Pint (vendor/bin/pint).
  • Prefer feature tests (php artisan make:test) and model factories.
  • Use named routes and route() for URLs.
  • Match the structure and naming of sibling files.

On this page