Skip to content
// SELECTED WORK
02 / FREELANCE · 2025

FlexiBer

A German nursing consultancy ran bookings by phone, email, and paper — no online flow, no overview, and no off-the-shelf tool that fit a regulated, GDPR-bound workflow.

// LIVE IN PRODUCTION

FlexiBer admin cockpit showing the week calendar and a live list of incoming bookings.

// THE PROBLEM

The consultancy booked appointments over the phone and by email: double-bookings, no shared overview, and hours lost to admin. Generic booking SaaS either didn't model the consultancy's workflow or couldn't satisfy German data-protection requirements. They needed an owned, EU-hosted system — public booking on one side, a live admin cockpit on the other. I built FlexiBer to be that system end to end.

// WHAT I BUILT

  1. 01

    Public, multi-language booking flow (DE/EN/ES) with a deterministic availability engine — opening hours, exceptions, lead time, and buffers, all computed in Europe/Berlin so DST never breaks a slot.

  2. 02

    Realtime admin cockpit — new bookings, status changes, and contact messages appear live, with a week calendar, inbox, and a Tiptap reply editor.

  3. 03

    Automatic patient matching: every booking links to a profile via an insurance-number → email → phone+name cascade, with diacritic- and format-aware normalization and duplicate flagging.

  4. 04

    Locale-aware transactional email rendered from React components to HTML and plaintext, plus per-booking Jitsi video rooms minted with signed moderator tokens.

  5. 05

    GDPR by construction — self-hosted in the EU, argon2id auth, full audit log, rate-limited booking endpoint, no third-party fonts or analytics at runtime.

// THE INTERESTING PART

The admin cockpit updates in real time with no polling and no websocket infrastructure — Postgres is the message broker. A booking commit calls pg_notify on an admin_events channel; each admin tab holds an SSE stream whose handler LISTENs on that channel and forwards the JSON payload straight to the browser, with a 25-second heartbeat and clean teardown on disconnect. No Socket.io, no Redis, no separate realtime service — the database that already owns the truth also delivers the updates.

// IN THE PRODUCT

FlexiBer public booking flow showing available consultation slots for a selected day.
FlexiBer public facing landing page with a description of the consultancy's services and a call to action to book a consultation.
FlexiBer admin cockpit showing the dashboard view with a list of recent bookings and patient profiles.
FlexiBer admin cockpit showing the finance view with a breakdown of bookings, revenue, and upcoming appointments.

// OUTCOME

// IMPACT

Live in production for the consultancy, handling roughly 80 bookings a week across multiple consultants — public booking, patient matching, video consultations, and a realtime admin cockpit, fully self-hosted in the EU.

// STACK

Next.js 16 (App Router) + React 19, Drizzle over PostgreSQL, NextAuth v5 with argon2id, SSE + Postgres LISTEN/NOTIFY, Nodemailer, Jitsi. Self-hosted on Hetzner via Dokploy.