Case study

EMSA Timișoara: volunteer contracts signed online, paid and filed as PDF

EMSA Timișoara logo

A digital operations platform for a medical students' association: electronically signed volunteer contracts with payment and PDF, Stripe payments, an admin dashboard, role-based security and automated emails.

01 — The client

EMSA Timișoara is the Timișoara branch of the European Medical Students' Association, with 200+ members, active since 2015 at UMF "Victor Babeș".

02 — The problem

A volunteer-run association handles volunteer contracts, fees, event registrations, donations and communication with 200+ members, usually on paper, by bank transfer and by hand.

03 — What we built

A Next.js + Supabase platform at emsatimisoara.com:

  1. Electronically signed volunteer contracts, with payment and PDF. Volunteers sign on the site (canvas signature, recorded with IP, browser and a SHA-256 fingerprint of the contract text) and the president's signature is applied. A PDF is generated, stored and emailed to the volunteer. Contracts signed at the office or with a passport, cancellation with a reason, and verification by email plus the last 4 characters of the personal ID number are also supported.
  2. Stripe payments in RON for 5 flows: volunteer fee, event, project, application and donation. A signed webhook processes each confirmation exactly once, and a place is held for 35 minutes while payment completes.
  3. Admin dashboard with about 20 sections, including income tracking and charts.
  4. Security: admin and coordinator roles, enforced by 85 Row-Level Security policies in the database.
  5. Automated emails: bilingual, with templates editable from the admin panel, a send log and a daily automatic retry (up to 6 attempts).
  6. Events with limited places, roles and payment.

Also: applications and calls with configurable questions and CSV export; volunteer hours and statistics; a day / week / month calendar; Romanian and English; SEO; an interactive twinnings map.

04 — Tech stack

Next.js 15, React 19, TypeScript, Supabase, Stripe, React-PDF, Vercel Cron, next-intl, Tailwind 4.

05 — Ready to talk?

Still running contracts and payments on paper and bank transfers? Name the problem. You get a yes, a no, or a date, not a sales sequence.
Book a 30-min call · or start with the free AI & Automation Readiness Audit.