— Case study · Ecommerce · DE / EN / TR

Yilmaz Souvenirs — vom Ladengeschäft zum skalierenden Online-Shop.

Ein 40 Jahre alter Familienbetrieb aus Bad Ischl verkaufte bis 2024 ausschließlich im Geschäft und telefonisch. Heute verschickt der Shop täglich in vier Länder, mit Echtzeit-Lagerbestand, Stripe-Checkout und einer Admin-Oberfläche, die der Eigentümer selbst bedient. So kam es dazu.

Kunde
Yilmaz Souvenirs
Branche
E-Commerce Einzelhandel
Project duration
11 Wochen Discovery → Launch
Launch
March 2024
— Project at a glance

The short version in three lines.

For readers who do not want to go through 12 scrolls. The long version sits further down — with numbers, screenshots and the client’s own words.

Problem

No online sales, phone-order chaos, no stock visibility.

Bestellungen liefen über Anrufe und WhatsApp. Der Lagerbestand war in einem Excel-Sheet, das selten aktuell war. Retouren wurden handschriftlich geführt.

Lösung

Custom shop with Stripe, live stock and an admin panel.

Next.js-Frontend, Spring-Boot-Backend, Postgres als einzige Wahrheit. Stripe für Karte/SEPA/Klarna. Admin-Oberfläche komplett in Deutsch.

Ergebnis

+187% revenue in year one, 99.98% uptime, 0 oversells.

The shop has been running for 14 months without agency help. The owner maintains products independently. Not one oversell complaint.

— Starting point

Drei Jahrzehnte Handwerk — und kein „Jetzt kaufen"-Button.

Yilmaz Souvenirs has run a shop in central Bad Ischl since 1983 — handmade objects, often from its own workshop, partly sourced from regional craftspeople. Foot traffic was steady, but in summer tourists often had to leave because key pieces were sold out. “Can you ship this?” was the most common question — and the hardest one to answer.

“We knew we were losing customers the moment they walked out the door — but for ten years every agency concept asked for €40,000, and none of them spoke our language.”

Before our project there was no meaningful online sales channel. Phone orders were written into a paper diary. If two customers wanted the last item within the same hour, call order decided. Stock level? “I’ll check” — followed by a callback ten minutes later.

Concrete pain points

  • Orders came in via phone, WhatsApp and email — spread across three channels with no single view.
  • Stock lived in Excel and was updated, at best, every two days. Double-selling happened regularly.
  • Returns were tracked by hand in a paper calendar. No traceability.
  • Rechnungen wurden in Word getippt. Jede Sendung ins Ausland kostete ~20 Minuten Handarbeit.
  • Türkische Stammkundschaft wurde sprachlich nicht bedient — Website davor war nur deutsch.
— How we worked

Four phases, eleven weeks.

No waterfall theatre, no sprint circus. We work with clear milestones and visible interim states — so the client knows what they are paying for.

Discovery

Two days on site.

We spent time in the shop, watched customers buy, stood with the owner at the till and worked through the Excel file. No briefing deck, no questionnaire — just listening.

Week 1 · 2 days
Architektur

Sketches, not a pitch deck.

We mapped the data model on paper — products, variants, stock, reservations. Admin UX as low-fi wireframes. Tech choice: Next.js + Spring Boot + Postgres. Stripe instead of a PayPal-only gateway.

Week 2–3 · 8 days
Inkrementeller Build

Live progress every two weeks.

Staging-Umgebung ab Tag 14. Die Inhaberin hat wöchentlich Produkte im Admin angelegt — lange vor Launch. Feedback floss in den Build zurück. Keine „Big Reveal" am Ende.

Week 4–9 · 6 weeks
Launch & Übergabe

Soft start, then full speed.

Soft-Launch mit 20 Produkten und DACH-Versand. Nach 7 Tagen ohne kritische Fehler → Türkei-Versand + TR-Sprache live. Zweitägiges Training für Inhaberin. Handover-Report, kein Versteck-Wissen.

Week 10–11 · 10 days
— Selected views

So sieht es im Betrieb aus.

Shop front, admin dashboard, mobile checkout. The system has run for 14 months without structural changes — a few UX tweaks, no major rebuild.

shop.yilmaz-souvenirs.at
Handgemachtes aus Österreich.
Versand DE · AT · CH · TR
Alpen-Miniatur
€24,90
Wien-Edition
€38,00
Handgemacht
€19,50
Shop front · product categories, language switcher, live stock display
admin.yilmaz-souvenirs.at
Dashboard
today · 23 orders
€1.840 +14%
revenue today
23
Bestellungen
7
stock alerts
#YIL-2418Müller, K.paid
#YIL-2417Özdemir, A.open
#YIL-2416Huber, M.paid
#YIL-2415Steiner, J.paid
Admin-Dashboard · Übersicht, Lager, Bestellungen in einer Oberfläche
shop.yilmaz-souvenirs.at · Checkout
Payment
Alpen-Miniatur€24,90
Wien-Edition€38,00
Shipping · DACH€6,90
Total€69,80
Pay by card
via Stripe · SEPA / Visa / Klarna
Mobile checkout · 3-click checkout, Stripe Express Checkout, no account required
— Results

14 Monate nach Launch.

Numbers we track together with the client — from Stripe data, UptimeRobot and the admin dashboard. No projections, no “roughly”.

+187 %

Revenue growth

Total revenue in year one after launch, compared with the year before it (shop sales + online combined).

Source: Stripe + POS export
99,98 %

Uptime

Average over 14 months, measured externally. One single 17-minute outage caused by hosting maintenance.

Source: UptimeRobot 5-minute checks
0

Oversells

Not a single oversell complaint since launch. The stock-hold logic and reservation flow work as intended.

Source: Customer support log
2,3 s

LCP median

Largest Contentful Paint on mobile over the 28-day median. The target was < 2.5 s, including category pages heavy with product images.

Source: Vercel Speed Insights

“I wanted a shop, not a ‘digital transformation process’. Buckberry understood that from day one, came into my shop, explained the admin in a language I understood immediately — and delivered the whole thing in eleven weeks, without forcing me to touch anything Excel-like. Today I manage the shop myself. It paid for itself three times over in the first year.”

Ayşe Yilmaz
Owner · Yilmaz Souvenirs, Bad Ischl
— Tech stack used

Decisions, not hype.

Every technology with one clear reason. If a tool does not make the product better, we do not use it — even if it is trendy.

Frontend

Next.js 15

SSG for catalogue pages, SSR for checkout. LCP < 2.5 s even with lots of product imagery.

Backend

Spring Boot 3 · Java 17

Domain logic in Java, because transactions, validation and testing are most robust there.

Database

PostgreSQL 16

SELECT FOR UPDATE for stock reservations. No NoSQL — consistency beats flexibility.

Payments

Stripe

SEPA, card and Klarna in one flow. Webhook idempotency. PCI scope minimised, card data never touches the backend.

Hosting

Vercel + Hetzner Wien

Frontend on CDN edge, backend + DB in a Vienna data centre — GDPR-safe, low latency.

CI / CD

GitHub Actions

Automated build, testing and deploy to staging. Production deploy only after manual approval.

Monitoring

Sentry + UptimeRobot

Errors land in our Slack channel within 60 seconds. Uptime is verified externally.

i18n

next-intl

DE / EN / TR with SEO hreflang. Translations can be maintained by the client without a code deploy.

— What we learned

Drei Dinge, die wir mitnehmen.

An honest look back — not the “everything was perfect” story. Every project should leave us sharper than before.

01

Time on site beats ten Zoom calls.

Two days in the shop showed us more than any workshop could have. Since then we have run discovery on site for regional clients, without an extra fee.

02

Admin UX before shop UX.

We built and tested the admin panel first, then the shop. That let the owner maintain products during the build — and gave us real data instead of lorem ipsum.

03

Multi-language from day one, not “phase two”.

Die türkische Sprachversion wurde oft als „später" abgetan. Bei Yilmaz war sie Tag-eins-kritisch. Ergebnis: 28 % der Bestellungen kommen heute in TR. Hätten wir's vertagt, wäre dieser Umsatz nie entstanden.

— Your project?

Does this sound familiar?

Every case study starts with a 30-minute call — no sales pressure, no discovery invoice. We tell you honestly whether we are the right fit.