All work
// Case study
● BUSKO1828

We built a brand,
and the store under it.

Busko1828 did not exist before this. The name, the wordmark, the labels, the product imagery and the campaign are ours, and on top of them a national B2B store that sells in pallets, stocks in bottles and writes its own invoices.

BrandDesignE-commerce
Live since 2026busko1828.pl
busko1828.pl/hurt
The wholesale price table on busko1828.pl showing quantity tiers and a net/gross toggle
0
New leads acquired for the client
0
Bottles sold in the first month after launch
0+
Hours of sales time saved in the first month
TOP 1
In Google and in ChatGPT for water from the region
// The brief

A second brand,
and a second business.

The client runs a local water business with its own delivery trucks. The water from Busko-Zdrój was being sold under an inherited name and with no face of its own. The job was both halves at once: give the water a brand that can be sold to companies by the pallet, and build the channel that sells it.

As a separate line, not an extension: different buyer, different geography, different promise, different people in charge. So it got its own store, its own backend and its own warehouse, all on a shared codebase, so a fix never has to be written twice.

Client
Aqua Serwis System, a water business in Kielce
Scope
Brand, labels, campaign, backend, storefront, SEO
Market
Poland, nationwide, business buyers only
// Brand and launch

The brand did not exist.
We made it.

This was not a job where a finished logo arrived by email. The water had been sold as Buskowianka Zdrój; the name, the wordmark, the brand mark, the labels, the product imagery, the films and the ad creative for the relaunch are our work, and the store further down sells that brand.

A 0.5 l bottle of Busko1828 still water, with the navy labelA 0.5 l bottle of Busko1828 lightly sparkling water, with the green labelA 0.5 l bottle of Busko1828 sparkling water, with the blue label

Three variants, three labels

Still, lightly sparkling, sparkling: one structure in three colourways, navy, green and blue. The cap, the variant band and the field colour separate them on a shelf at a glance, while the mark and the wordmark stay identical so the brand still reads as one.

Print-ready label artwork for Busko1828 lightly sparkling, with the mineral table and statutory text

The label, print-ready

A full-wrap label in three variants: the engraving of the spa house, the wordmark, the claim and the variant band, and beside them the cations, anions, mineralisation and the statutory declarations on a millimetre grid. Authored as code and rendered to PDF, so a correction to the water analysis does not mean someone redrawing three files by hand.

Busko1828 brand lockup: the spa-house mark, the wordmark, the year 1828 and the claim

Wordmark, mark, claim

BUSKO 1828, with the spa house of Busko-Zdrój as the brand mark and “Tradycja w nowej odsłonie” as the claim. As a lockup in navy, white and green, plus favicon, app icon and link preview, all generated from the same cut-out originals rather than redrawn.

A Busko1828 social ad aimed at construction sites

The campaign

Ad creative per audience (offices, construction sites, hospitality), each carrying the argument that lands with that audience, rather than one visual for everyone. The same segments the store has its own landing pages for, so the ad and its destination speak the same language.

A delivery truck in the Busko1828 livery

The livery

The same brand on the vehicle: mark, wordmark and claim across the body, both variants as bottle imagery, the wave carrying it together. For a regional distributor the delivery truck is the highest-reach piece of advertising it owns.

Made by us
Name and wordmarkSpa-house brand markClaimLabel artwork, 3 variantsPrint PDFsBottle and pallet rendersProduct filmsTruck liverySocial campaignFavicon, icon and OG set
Press on the relaunchEcho Dnia„Busko 1828: nowa odsłona wody Buskowianka Zdrój“
// What we built

Under the label,
the software.

01

Two deployments, one codebase

The shop system has no channel-scoped admin permissions, and the two businesses have different people in charge who must not see each other’s orders. So: one repository, two services, two databases, separate configuration, and invoicing, payment and notification logic that only ever gets fixed once.

02

The order unit is not the stock unit

A pallet is what gets bought; bottles are what get counted. One pallet variant draws down 1,368 units, or 504 at the 1.5 l format. No umbrella SKU, no manual reconciliation: one sale, one correct balance, in the unit the warehouse actually counts in.

03

One source for the tier price

The tiers live in a module that both the public price table and the cart’s pricing read from. A table that contradicts the cart is a lost order in B2B. The tier follows the total quantity on the order rather than the line, plus a reconcile pass for carts caught between two price states.

04

An external registry as a convenience, never a gate

The finance ministry’s registry has a daily quota and no key. So: the tax number’s checksum is verified locally first, so a mistyped digit costs no request, then a 24-hour capped cache, a per-IP limit and an eight-second timeout. If the registry is down the form carries on manually. An outage there costs no orders.

05

Invoices nobody types

An invoicing integration with real line logic: only the deposit line is VAT-exempt, everything else carries the standard 23 %. Variant titles pass through the same normalisation as the storefront and the emails, so the invoice, the confirmation and the PDF all describe the same document. Payment is online by transfer, BLIK or card, with returns handled from both providers.

06

34 pages from three data modules

18 cities, seven segments, nine guides: one typed module each, feeding the pages, the sitemap, the FAQ markup and llms.txt together. A changed term appears everywhere at once, including in the version AI crawlers read. Forms sit behind a bot check.

// Stack
Next.js 15Przelewy24
// Inside the store

Four surfaces,
and what runs behind them.

Screenshots of the live site, September 2026.

busko1828.pl/hurt

A price table that cannot disagree

The table and the cart read the same tier module, which is why the figure in the table is the figure on the invoice. The net/gross and 0.5/1.5 l toggles compute in the browser. No round trip just to show a price differently.

busko1828.pl/hurt
The wholesale price table on busko1828.pl showing quantity tiers and a net/gross toggle
busko1828.pl/kalkulator-kaucji

A calculator that runs in the browser

The model is entirely client-side: no server call per slider, instant response, and the page still ships as static. The side effect is the real point here: the result can be sent as a link.

busko1828.pl/kalkulator-kaucji
The deposit calculator on busko1828.pl with sliders and three result tiles
busko1828.pl/dostawa

One template, eighteen cities

The page, its sitemap entry and its structured data all come from one record per city. A new city is an object in a typed module, not a copied page that falls behind the next time the copy changes.

busko1828.pl/dostawa
The delivery page on busko1828.pl showing the four steps of a pallet delivery
busko1828.pl/o-marce

One facts module, three outputs

The spring, the mineralisation and the composition are held as data and surface three ways: as a brand page for the buyer, as structured data for search engines, and as llms.txt for AI crawlers. The same figures as on the label we designed.

busko1828.pl/o-marce
The brand page of busko1828.pl telling the history of the spa town since 1828
busko1828.pl/hurt

The same configurator on a phone

Buyers order from the stockroom, not from a desk. So the configurator has to work without pinch-zoom: format, variant, quantity, tier discount, net and gross totals, the delivery note, the buy button. Below it the same page carries on: terms, the tier table, the unit prices.

The pallet configurator on busko1828.pl on an iPhone

Something similar in mind?

Brand, labels, a store, invoicing, stock: tell us what you want to sell, and we will tell you which part of it is design and which part is software.