01 Client project Pre-launch
Photo-printing e-commerce platform
An online shop for photo prints, built end to end — batch upload of hundreds of photos, cropping to each print size, a full catalog and cart, Stripe payments, Econt shipping and an admin back office.
An e-commerce platform for ordering photo prints, which I built on my own for a private client — end to end, from the architecture to a production-ready payment and shipping pipeline.
It is feature-complete and extensively tested, and in a pre-launch state: it is waiting on the client’s go-live steps (payment-provider verification and the real shop address). The repository is private, so there is no public code, live link or screenshots of client data. Once it launches, I’ll add the official domain and screenshots here.
What it does
Customer-facing
- Photo library — drag-and-drop batch upload of hundreds of photos, with live progress and per-photo status. On upload, the images shown on the site are converted to WebP for faster pages and smaller storage, while the original stays untouched.
- Crop editor — every photo auto-crops to the exact aspect ratio of the chosen print size and can be adjusted by dragging and rotating; nothing is baked in until checkout.
- Product catalog and cart — hierarchical categories, standalone prints and photo-attached products (albums, mugs) with composable pricing (per-photo price plus paper cost), and a promotions engine.
- Checkout — Stripe Checkout for payment and live Econt shipping quotes at checkout (office or door-to-door), with an admin-configurable free-shipping threshold.
Admin back office
- Catalog management — categories, products, print sizes, paper types, pricing and promotions.
- Order pipeline — list and kanban board views, per-order detail and courier waybill generation.
- Customer directory — searchable, with role management and per-account quota overrides.
- Revenue dashboard — gross revenue, refunds and net shown separately, not blurred into one number.
- Audit trail — logged changes to roles, quotas and orders.
What I’m proud of
-
Payment integrity
Orders are created before payment and confirmed only by Stripe webhooks with a verified signature — the redirect page is never trusted as proof of payment. Webhook handling is idempotent, and stock is decremented atomically (
WHERE stock >= quantity), verified correct under real concurrent load, not just assumed. -
Refund and cancellation rules that match the business, not just the code
A refund is automatic only when nothing has been produced yet — before that point, the customer's right to a full refund is clear-cut. Once fulfillment has started, cancellation goes to an admin for explicit confirmation, and a persistent “refund owed” indicator (list, dashboard, order detail) keeps it visible until resolved — no silent money left sitting with the shop.
-
A full e-commerce engine, not just a photo tool
A hierarchical catalog, cart pricing that reconciles to the cent across every product type, and a promotions engine where a storewide free-shipping threshold and promo-code-driven free shipping compose correctly — verified with both active at once, and with the reason shown to the admin so campaign effectiveness isn't overstated.
-
Non-destructive cropping
Crops are stored as coordinates against the original photo — auto-crop by default, manual override on request — so the source file is never altered and nothing is lost if a decision changes later.
-
Econt courier integration
Live address and office lookup, real-time shipping quotes and admin-triggered waybill generation — including handling for Econt's own quirks (address responses that split into separate street and quarter fields, asymmetric validation errors), found and fixed through direct API testing, not guesswork.
-
Testing discipline
1,000+ automated tests, and a habit of mutation testing on every non-trivial fix — deliberately reintroducing the bug to confirm the test actually catches it, not just that it passes.