01
Move to independent infrastructure
Database, authentication and file storage were migrated to our own account; 14 migrations were applied in order, social sign-in was wired directly to the identity provider and hard-coded addresses moved into configuration.
02
Catalogue migration and cleanup
1,722 products were transferred and a 526-node category tree was reduced to 28 headings. 68 duplicate records were merged and 49 out-of-scope products removed, settling the catalogue at 1,605 products.
03
Server-side price and stock
Price, discount percentage, shipping and coupons are now computed only on the server. Stock is decremented under a lock, coupon limits are enforced server-side, and direct write access to order tables was revoked.
04
Verified by attack tests
Thirteen scenarios — price manipulation, coupon limit bypass, stock race conditions and unauthorised writes — were tested; all were blocked.
05
Server rendering and deployment
Pages are rendered on the server so content arrives ready on first load. Environment-variable and dependency failures in the deployment pipeline were fixed for good.