← Back to all work

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 — Lotus Furniture Store
01

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 — Lotus Furniture Store
02

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
Result — Lotus Furniture Store
03

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.

63 feature tests over the critical logic, all green.

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 →