Used photography equipment store
Fotobazoš.cz
- React 18 (SPA)
- PHP 8.3 (REST API)
- Custom JWT authentication
- SQL - pessimistic row locking (SELECT … FOR UPDATE)
- Procedurally generated SVG

Audit
A store for unique items, built from scratch: no old website to redesign and no existing platform. Off-the-shelf solutions such as Shoptet or WordPress were out of scope because they add overhead and cannot support the custom business logic this kind of store needs. The brief called for maximum performance, administration manageable by someone with no technical background, and certainty that one unique item cannot be sold twice.
Optimization
A custom e-commerce solution built from scratch: high speed, no unnecessary data overhead, and transactional certainty.
Architecture
The frontend is a custom React 18 SPA and the backend is a clean PHP 8.3 REST API, without a cumbersome framework that would only add overhead a used-goods store with unique items does not need. Each layer does exactly what it should and nothing more.
Zero-image catalog
The catalog loads not a single product photo. Instead of JPEG/PNG, it generates a procedural SVG vector for each item: a badge that parses the product name on the fly and displays its key parameter (58 mm for a lens, 64 GB for a memory card). The result: the card renders instantly, without a single network request for an image.

Cart and Pessimistic Locking
The store sells unique items: two customers cannot buy the same item. The cart therefore runs in an atomic database transaction with row locking (SELECT … FOR UPDATE): once one customer locks an item, a second query for the same row waits until the transaction closes. The race condition when a unique item sells out is thus solved at database level, not by guarding it in application logic.
Custom admin and JWT infrastructure
The admin area uses custom JWT authentication in native PHP 8.3, without heavy Composer dependencies. The order overview retrieves data in one aggregated query instead of a separate query for each order (the N+1 problem), so the admin remains fast as the number of orders grows. It also includes a honeypot against bots and client-side idempotency (UUID v4) against duplicate order submission.
Measurement
The scores are Lighthouse measurements for mobile and desktop. There is no before-and-after comparison because no prior version existed.
Technical quality
Performance
100 desktop / 97 mobile
No BEFORE: the website was built from scratch, so no old version exists for comparison.
Accessibility
100
Mobile and desktop are the same.
Best Practices
100
Mobile and desktop are the same.
SEO
100
Mobile and desktop are the same.
Agentic browsing
3/3
Mobile and desktop are the same. Website readiness for AI assistants.
Catalog data savings
0 image requests
Instead of photos, product cards render procedural SVG, so the catalog loads without a single network request for an image.
As a complete beginner, I needed an online store that would be very simple to manage and would not distract me from selling. The result exceeded my expectations. The system is remarkably fast, order management is completely intuitive, and everything works flawlessly without me having to deal with technical complexity. Precise and professional work.
Want a similar result?
I want an audit of my website