All case studies Case Study

A premium event platform for Sowiniec Polo Cup 2026

Editorial design, full-stack Stripe payments, multi-day checkout, lifecycle email automation, GDPR-compliant — built end-to-end in a focused sprint for Poland's most prestigious polo tournament.

Industry: Premium Events / Hospitality Scope: Strategy + design + full-stack engineering Stack: Next.js 16 · Stripe · SendGrid · PostgreSQL
Sowiniec Polo Cup 2026 — 15th edition, August 28-29, Poznań
The brief

A launch platform worthy of a 15-year tradition.

Sowiniec Polo Club — non-profit organizer of the annual Sowiniec Polo Cup — needed a launch platform for the 15th edition (August 28-29, 2026). 800 invitations, premium positioning, dual-currency pricing, GDPR-compliant, audit-ready legal pages.

The challenge wasn't just building "another event site." It was matching the visual standard of Hermès, Wimbledon, Goodwood — while running on real Stripe payments, real Polish VAT invoicing, and real GDPR consent — under EU law that doesn't forgive shortcuts.

The brief required strategy + design + engineering in one focused sprint. No 3-person team, no 6-week roadmap. Days, not weeks — without compromising on craft, copy, or compliance.

What we built

A complete event-commerce platform — built end-to-end.

Marketing site, payment infrastructure, lifecycle automation, admin panel, legal compliance — all engineered to a premium standard from day one.

Editorial marketing site

9 sections — Hero, About, Vogue feature, Gallery, Tickets, Dress Code, Premium Zone, FAQ, Contact. Hoefler Text serifs on a burgundy/cream/gold palette. Polish/English i18n via next-intl with locale-aware date and currency formatting. Custom HeroTuner dev tool for live slider-based positioning of hero assets.

Full Stripe payment infrastructure

Stripe Payment Element + Express Checkout (cards, BLIK, Apple Pay, Google Pay). Multi-day checkout with qty_by_day schema (Friday/Saturday × N invitations, single intent). Dual-currency display (PLN + EUR) with stable exchange-rate locking. VIP early-access flow with token-protected invitation codes. Retry-on-failure flow — same order, no re-fill, dynamic Stripe error code mapping (BLIK timeout, 3DS failed, card declined).

Lifecycle email automation (8 templates)

Confirmation, payment failed, guest names request, tickets with QR codes, invoice, refund, VIP invite, dress code guide. Premium Polish copy with formal "Państwo" register and a vocative-declension system covering ~280 Polish first names. SendGrid integration with light-mode-locked HTML templates (Gmail dark-mode safe).

VAT invoicing + PDF tickets

Infakt API integration for automated VAT invoices (faktura imienna / faktura VAT) generated within seconds of payment. PDF ticket generation with pdf-lib — embedded QR codes, multi-page support for group bookings, branded layout matching the marketing site.

Complete admin panel

Orders, VIP invitees, abandoned carts, dress code subscribers, sale notifications, guest names management, real-time analytics. Built for the event team to operate independently — no developer needed to issue refunds, resend tickets, or update the guest list.

GDPR consent + legal compliance

Cookie banner with 3 categories (essential / analytics / marketing) + settings modal. Attribution tracking gated behind marketing consent — paid-ad UTMs only stored after user opt-in. Polish-law-compliant Regulamin and Polityka Prywatności.

Where humans owned it

The decisions AI couldn't make.

This project would not have shipped without senior human judgment at the points where one wrong call breaks the entire launch — financially, legally, or reputationally. AI accelerated the build, but the high-stakes calls were ours.

Payment compliance — security by architecture

Stripe webhook plumbing with signature verification on every event, full idempotency handling across 8 webhook event types, and intentional MCC (Merchant Category Code) selection after research with Stripe support — the wrong MCC means card-network rejections, fraud-flagging, or worse, a frozen account. PCI exposure deliberately minimised: no card data ever touches our servers (Stripe Elements only).

Refund policy — researched, not guessed

Refund timing was set per actual Stripe support documentation for the Polish market — including settlement windows, partial-refund handling for multi-day orders, and customer-facing communication aligned with Polish consumer law. We don't ship "best-guess" refund logic on a payment system handling thousands of euros — we read the docs and verified with support.

GDPR architecture — consent before data

Three-tier consent (essential / analytics / marketing) with strict cookie gating: no UTM attribution stored, no Meta Pixel fired, no analytics tracker armed before opt-in. Built to survive a EU regulator audit — not just the EU/UK GDPR cookie banner checklist, but the architecture under it.

Editorial voice — Polish formal register

Premium events demand premium copy. We wrote the entire user-facing surface in formal Polish ("Państwo" register), with a vocative-declension dictionary covering ~280 Polish first names — so an email to "Pani Małgorzata" reads "Szanowna Pani Małgorzato" the way a Polish speaker actually expects. AI alone gets gender wrong, gets vocative endings wrong, and breaks the brand voice in two paragraphs. We didn't let that ship.

Pre-launch testing — humans in the loop

Real card payments, real refunds, real BLIK timeouts, real 3DS challenges — all run end-to-end on test keys before production keys rotation. Webhook signature failures, idempotency replay attacks, abandoned-cart edge cases — all manually verified by a senior engineer before go-live.

Brand strategy — premium without discounting

The "priority list" framing instead of crossed-out prices. The deliberate restraint with the gold accent. The decision to never use the word "discount" anywhere on the site. These positioning calls came before any code — and they protect the brand value of an event that's been running for 15 years.

Results

From brief to live payments — in days, not weeks.

A premium, audit-ready, payment-live website that would normally take a 3-person team 4–6 weeks — built in days, without compromising on craft, copy, or compliance.

Time to launch
4–6 weeks (typical) Days
Team size
3-person agency team 1 senior + AI
Payment infrastructure
Off-the-shelf SaaS Custom Stripe stack
Compliance posture
Cookie banner only Audit-ready GDPR
Technology

A modern, edge-ready stack — chosen deliberately.

Every dependency was picked for a reason: Next.js 16 (App Router, Turbopack) for SSR-ready editorial pages and dynamic checkout flows; Stripe as the only system that touches card data; SendGrid for production-grade transactional email; Infakt for compliant Polish VAT invoicing; Postgres on Railway for managed durability with developer-grade access; pdf-lib for fully customisable on-the-fly ticket generation.

Next.js 16 TypeScript Stripe SendGrid Infakt API PostgreSQL Tailwind v4 next-intl Railway RBAC / Auth
Our expertise

This project showcases what we do best.

Stripe payment architectureWebhooks, idempotency, signature verification, MCC compliance — built right.
EU/UK GDPR engineeringAudit-ready consent gating — not a banner, an architecture.
Editorial design + premium copyBrand voice in formal Polish "Państwo" register, vocative-correct.
Polish business complianceVAT invoicing (Infakt), Regulamin, Polish consumer law.
Strategy + positioningPremium framing without crossed-out prices — protects brand value.
End-to-end delivery in daysOne senior engineer + AI tooling — not a 4–6 week agency sprint.
Launching something premium?

From positioning to live payments — done right.

Free 30-min Discovery Call — no pitch, just a straight conversation about what you're launching, the compliance you can't afford to get wrong, and how we'd approach it.

Book Free Discovery Call