Lotus Furniture Store
- Client
- Personal project — a complete store
- Industry
- Furniture and home decor
- Built
An online furniture store in Laravel, from choosing a variant to checkout: per-variant pricing and stock, weight-based shipping, and an eight-section admin panel. The only thing simulated is the bank transaction itself.
The challenge
A sofa in three fabric colours is three prices, three stock counts and three weights. If price and stock sit on the product itself, none of that can be expressed — but a fully generic attribute model turns every simple query into a pile of joins.
The product page: each variant carries its own price, stock, weight and shipping label.
What I built
A variant table with three fixed axes — colour, material, size — instead of a generic model. Shipping is calculated on the basket's combined weight rather than item by item, plus a flat surcharge for each bulky item, because a three-seater sofa needs two people to carry it even next to a small vase.
Weight tiers in the admin panel. The last tier deliberately has no upper bound.
Technologies used
What the project was actually built with.
- Laravel
- PHP
- MySQL
- Laravel feature tests
Screenshots
Desktop and mobile, from the built version.
Result
Stock is decremented only on a successful payment, inside a database transaction with a row lock — and that call is idempotent, so refreshing the gateway return page does not decrement twice. Placed orders also copy the name, price and address at that moment, so a later catalogue change cannot rewrite a past invoice.
Start a project
Is the next one yours?
Fill in the project form. I review every enquiry and get back to you within two working days.
Start a project →