E-commerce Demo Platform
Commerce, built for Mars
Multi-supplier sourcing. Dynamic pricing. Full order lifecycle.
All operational.
The Bigger Picture
More Than a Demo
Whether you're managing a Martian colony or stocking up for your next extravehicular adventure, Supplymars is your destination for everything from habitat maintenance to cutting-edge scientific equipment.
Behind the fiction is a fully operational platform built by a developer with over 25 years of experience — from co-founding one of the UK's largest online retailers to leading engineering teams and building the tools that powered a fast-growing business. This project is a demonstration of that experience in action: clean architecture, real domain complexity, and thoughtful design.
Read the full storyThe Platform
What's Inside
Product Catalog
Structured catalogue with hierarchical categories, rich product pages, image galleries, and manufacturer tracking across the full inventory.
Supplier Network
Multi-supplier sourcing per product with cost comparison, real-time stock visibility, and automated best-source selection.
Order Management
End-to-end order lifecycle with line-item tracking, automatic supplier allocation, and order splitting across multiple sources.
Purchase Orders
Demand-driven purchase orders with full state-machine lifecycle — from allocation through acceptance, shipping, and delivery.
Pricing Engine
Three-level markup cascades across product, subcategory, and category with multiple pricing models, VAT management, and event-driven recalculation.
Reporting & Analytics
Revenue, margin, and operational dashboards powered by two-layer aggregation — daily granular records rolled into pre-computed summaries.
What's Under the Hood
Real Operational Complexity
Multi-supplier Sourcing
Each product aggregates multiple suppliers. A best-source algorithm selects the lowest-cost option with available stock, keeping allocation optimal as prices and inventory shift.
Dynamic Pricing Cascades
Markup rules cascade from category down to individual product, with six pricing strategies. When supplier costs change, sell prices recalculate automatically via domain events.
Order Line Splitting
When no single supplier can fulfil the required quantity, order lines split across multiple sources automatically. Overall order status derives from the lifecycle of each resulting purchase order.
Purchase Order Lifecycle
Purchase orders follow a state-machine lifecycle — allocated, accepted, shipped, delivered. Each transition propagates domain events that update order statuses, stock levels, and reporting.
Simulation Engine
Console commands simulate the full business cycle — orders, supplier fulfilment, stock fluctuation, and reporting aggregation — producing realistic data without manual setup.
Built With
Modern Stack, Proven Patterns
DDD Architecture
A modular monolith where each area of the business owns its own logic. Commands and queries stay separate. Contexts communicate through domain events, not tangled dependencies.
PHP 8.5 + Symfony 8
Symfony handles everything from forms and security to async messaging via RabbitMQ. Console commands drive a full simulation engine. A REST API with OpenAPI docs sits alongside the web UI.
Hotwire + Tailwind
SPA-like speed without a JavaScript framework. Turbo Frames handle navigation, Stimulus adds interactivity where needed, and Asset Mapper eliminates the build step entirely.
Infrastructure
MySQL 8.4 for persistence, RabbitMQ for async domain event processing, Redis for caching and sessions, and S3 for file storage. Containerised and deployed on AWS.
The Demo
See It in Action
A fully operational platform, not a prototype. Explore the real interface.
Product Catalog
Every product, beautifully organised
Rich product pages with images, live pricing, multi-supplier stock levels, and 30-day sales trends — everything operational staff would need at a glance.
Order Management
From order to doorstep, fully tracked
Full order lifecycle from placement through supplier allocation, multi-vendor fulfilment, and delivery — with real-time status tracking across every stage.
Reporting Dashboard
The numbers, instantly
Revenue, margins, customer segments, and geographic breakdowns powered by pre-computed summaries for instant dashboard loading at scale.
Get Involved
Explore the Code
The full source is on GitHub. Explore the architecture, read the story behind it, or get in touch.