Ukraine · Croatia
Built for a client · WooCommerce
Savchook
Online bookstore for a publisher of books on Ukrainian art and history, in Ukrainian and English. We have developed and run it since 2016.
Since 2016
developed and run
2 languages
one install
3 integrations
LiqPay · Nova Poshta · Checkbox


The catalogue
A publisher’s catalogue, not a generic shop.
Every title carries the record a library or a collector looks for: binding, format, page count, paper, weight, series, year, print run and ISBN, with PDF sample pages to read before buying.
Beside the books the store sells wooden postcards, canvas panels, gift certificates, T-shirts and bags, and sets such as a book with a vinyl record. All of it goes through one cart and one checkout.


Problems we solved
Delivery that never breaks checkout
Nova Poshta’s branch list is refreshed every night. If the carrier’s API fails halfway, the sync stops without deleting a single branch, so customers still choose from the last good list.
Totals that add up
The delivery fee depends on the parcel’s weight and the payment method adds a commission. Both are calculated in one place and covered by automated tests.
Order emails sent from the admin
When staff resent an order email, there was no customer cart and the page crashed. Totals are now read from the order itself, and tests cover the case.
Hosting at a quarter of the cost
The store moved from one DigitalOcean server to two Hetzner servers: the shop in Docker behind Caddy, the database on a private network. The monthly bill fell to about a quarter.
Timeline
- 2016The store comes to us for development, and it has stayed with us since.
- 2017–2018Delivery pricing rebuilt: rates by parcel weight, Nova Poshta options and the checkout logic around them.
- 2019Checkbox integration: fiscal receipts are generated online, with no hardware cash register.
- 2022English version released, on the same install and the same catalogue.
- 2025–2026Speed and reliability: automated tests and CI, release by release deploys, a delivery sync that survives API failures, and the move to Hetzner in Docker.
- Sep 2026Homepage redesign, with better Core Web Vitals.
How it is run
- Every change goes through a branch, a pull request, automated tests and a tagged release.
- Changes reach staging before production.
- WordPress, WooCommerce and plugins are updated on a schedule, security fixes first.
- Two language versions on one install: Ukrainian and English.
Working on a store?
Tell us about it: a design, a problem or just an idea. We’ll talk it through.