Mediaciones Steffen
Institutional landing page and online appointment system for a mediation law firm, with bank-transfer payment, receipt upload, and a custom admin panel.

- Next.js
- TypeScript
- PocketBase
- Vercel Blob
- Brevo
- Docker
- Caddy
Appointments were arranged by hand and there was no way to charge up front or track who had paid. The firm also did not want to manage GitHub or Vercel accounts: they asked for a panel and nothing else. Pricing depends on the type of procedure and the number of parties, so costs could not be hardcoded.
A three-step appointment wizard with bank-transfer payment and receipt upload to Vercel Blob, plus a panel where the firm manages appointments, costs, and availability without touching code. PocketBase backend on a VPS with Caddy in Docker. Panel authorization is role-based over the users collection, with create, update, and delete rules restricted to superuser and versioned in an idempotent script. Transactional email signed from the firm's own domain (DKIM and DMARC verified) with reply-to pointing at the firm.
Live on its own domain, with the firm operating the panel under its own account and the service account kept separate. Appointments, receipts, and notifications working end to end, with the backend access configuration versioned so it can be reapplied without guesswork.
The firm needed to stop coordinating mediations over phone and WhatsApp. The result is a self-service flow end to end, with the firm as the only operator of the panel.