Skip to content
Case Study

Hyperice Moldova

An online store for recovery and wellness equipment, built for the Moldovan market — three languages, local pricing, and an admin panel the shop runs itself.

60Products in the catalogue 3Storefront languages 72Articles published 332Automated tests
What We Built

A shop the owner runs, not one they have to phone us about.

The storefront

Catalogue, filters, instant search, cart and order form.

Content in three languages

The copy on nine of the shop’s pages is editable from the admin panel, in Romanian, Russian and English — no developer needed.

The admin panel

Thirteen screens, with permissions granted action by action: who can view, who can edit, who can delete.

Orders

Discount codes, gift cards, a PDF receipt the shop can download, and two automatic emails on every order.

How It Works

Three pieces, and only one of them decides a price.

  1. 1

    The storefront

    What the customer sees. It stores nothing itself: products, prices and texts all come from the piece below.

  2. 2

    The API

    Holds the catalogue, the texts, the orders and the permissions. It is the only thing that touches the database, and the only thing that decides a price.

  3. 3

    The database and the mailbox

    Where the products and the orders live, and where the two order emails come from.

The cart lives in the customer’s browser, where anyone can edit it. So the server believes nothing it is told about money: when an order arrives, every price is read again from the database.

Built With

Ordinary tools, kept current.

In the browser

What the customer sees is drawn on their own screen, in whichever of the three languages they read.

  • React 19
  • TypeScript
  • Tailwind CSS
  • i18next

On the server

One place answers every request, checks it makes sense, and is the only thing that decides a price.

  • Node 20
  • Express 5
  • Zod

The data

One database holds the catalogue, the wording, the articles and every order.

  • SQLite
  • Prisma

Checked and shipped

Nothing reaches the live shop until the tests pass, and the update itself is automatic.

  • Vitest
  • Docker
  • GitLab CI
  • nginx
The Hard Parts

Where the work actually went, and none of it shows on screen.

Prices decided on the server

An order sends only which product and how many. The name, the price and the total are recalculated from the database — so a forged request buys nothing cheaply.

Three languages, all the way down

Not a translation file laid over the top. Every text in the database is stored in all three languages at once, and served in the one the visitor is reading.

Permissions per action

A role can be allowed to edit without being allowed to delete. That cannot be said with a single gate at the door, so every route carries its own.

The Build

Around 250 hours of work, start to finish.

26 daysFrom first commit to launch

Visit hyperice.md →

Get In Touch

Have a project idea? Write down a quote!

Got a project? Drop us a line if you want to work together on something exciting. Or do you need our help? Feel free to contact us.