Events & wellness · Coimbra, Portugal
Governed ticket funnel for a conscious ritual.
Fortnightly sauna and sound morning in Coimbra. One production surface: bilingual marketing, waitlist capture, Stripe checkout, idempotent webhooks, and a backstage demo that maps future operations without blocking launch.


Desktop + phone — same surface, stable PT default URLs for social crawlers and WhatsApp.
Outcome
One shippable system from interest to payment signals — with room for ops to attach cleanly.
Year
2026
Location
Coimbra, Portugal
Engagement
Design & Build
Shipped screens



Public vs ops surface


Backstage · door flow
QR + camera check-in — demo surface
The porta screen sketches how door staff validate guests: camera framing, scan line, and a token pattern. Illustrative only — not a live event QR or production PII.
Align QR · camera preview (demo)
Guest pass (illustrative)
Stylistic pattern — pairs with the real /backstage check-in UX in the shipped demo.
At a glance
One funnel — goal, build, and outcome in three cards
Goal
One production story: discover → waitlist → pay → explicit returns — no hand-wavy second phase for persistence or payments.
Shipped
Bilingual marketing, waitlist API, Stripe checkout + webhooks, Resend mail, optional Postgres — plus a backstage demo for ops alignment.
Outcome
A governed funnel operators can extend; metrics stay with the client. Brand and digital surface shipped together.
Delivery diagrams
Same story as the brief — tighter geometry than paragraphs
Named workflows and integration context from the NØRD delivery pack; use alongside the pipeline and architecture blocks below.
Integration map
Where commerce, mail, storage, and ops meet
Explicit boundaries — server-first UI with narrow client islands. Same story as the delivery brief, in one glance.
Stripe
Checkout · webhooks
Resend
Transactional mail
Postgres / JSON
Waitlist · events
Backstage
Demo ops shell
Named workflows
From discovery to payment signals — in plain steps
Each node is a trigger, a handoff, and a clear owner for the surface or integration.
Discover → commit
Visitors land from social or direct links. Bilingual routes (PT /, EN /en/…) with locale detection off so default URLs stay stable for crawlers and WhatsApp previews.
Interest → waitlist
Form validation → POST /api/waitlist → persisted rows (Postgres when configured, JSON file fallback when not) → UI confirmation.
Purchase → pay
Edition selection from the agenda → /checkout/prepare → Stripe Checkout with quantity in session metadata → explicit success or cancel return paths.
Payment → signals
Signed webhook events → verified and stored with idempotency → clean stream for downstream automation when you turn it on.
Ops preview (mock)
Backstage panel sketches check-in, editions, invites, and webhook views with demo data — alignment artifact, not live back-office yet.
Shipped stack
Integration boundaries from the case brief — what runs in production and how it connects.
- Next.js · App Router
- TypeScript
- Tailwind CSS
- next-intl — PT default · EN
- Stripe Checkout + webhooks
- Resend (transactional email)
- Postgres optional · JSON fallback
Domains covered
Which areas of the business this engagement touched
Each domain maps to our diagnostic framework — the same areas we assess, baseline, and build into.
Domain 01
Revenue & Pipeline
Ticket checkout via Stripe Checkout with quantity metadata, waitlist signups with Postgres / file persistence, and webhook idempotency so payment signals are trustworthy.
Domain 03
Marketing & Brand
Bilingual Next.js marketing site (PT default, EN under /en/), brand mark, manifesto, and campaign routes — optimised for WhatsApp and OG crawlers with stable locale URLs.
Domain 04
People & Capacity
Mock backstage panel (check-in, editions, invites, webhooks, agenda) — stakeholder alignment UX that communicates the operational roadmap without blocking launch on full admin build-out.
Services applied
- 02
Design & Build
Full implementation — architecture, marketing site, checkout, API, and backstage demo.
- ✦
Brand Identity
Brand mark (NØRD wordmark + icon), visual language, and application across the shipped digital surface.
Method
How this maps to our five phases
We use the same phase model on Method — diagnosis through optional ongoing management. Below is how this engagement shows up inside that frame.
01 / Diagnosis
The constraint was an undefined funnel: marketing, waitlist, and checkout lived as separate ideas without one documented journey or shared persistence story.
02 / Architecture
We locked locale rules (no surprise redirects), integration boundaries (Stripe, Resend, storage), and server-first UI with narrow client islands before expanding backstage.
03 / Implementation
Innerflect shipped the production surface: public routes, waitlist API, checkout flow, webhook handler, and the mock operations shell as a roadmap artifact.
04 / Governance
Idempotent webhook recording, non-indexable sensitive routes where appropriate, canonical URLs tied to site config, and documented tryout paths for demos without live charges.
05 / Ongoing management
The codebase is built for iteration; a retainer or ops layer is optional and not part of this public portfolio slice.
Innerflect lens
What this engagement actually solved
- Important workflow (interest → pay → signal) defined as one shippable system, not separate "site" and "ticket" projects.
- Operating clarity between marketing surface, persistence, and payment events — each integration has an explicit boundary.
- Technical risk reduced with governance hooks: webhook idempotency, indexing rules, and safe tryout paths for demos without live charges.
- Workflow-level specificity in copy and architecture; backstage mock defines operational areas before full admin build-out.