TapToSupport is an in-person donation app for non-profits a Groupe BERREBI internal product I have been designing and building since September 2026. It comes down to one gesture, which we call the TapToPay: the volunteer starts the payment on an Android phone, the donor taps their card on it and leaves only an email address. Later, they receive a single-use link to fill in their details and get a PDF tax receipt, without creating an account.
The project in detail
The first job was to settle the architecture. A web payment link would have been simpler, but typing card details is exactly what stops donations in the field, so native Tap to Pay was a hard requirement. I checked that the PCI MPoC standard requires a device integrity attestation, granted only to apps installed from a store. Hence Android first, then iPhone once Apple grants its entitlement.
After comparing Stripe, Adyen, SumUp and Viva Wallet, I chose Stripe Connect Express and Stripe Terminal, which let non-profits sign up on their own. Payment sits behind a single interface: switching provider would mean writing one class.
The project is at the API stage. It runs on FastAPI with async SQLAlchemy 2.0, Alembic and PostgreSQL 18, under strict mypy. It models six entities (non-profit, volunteer, donor, donation, tax receipt, consent), renders receipts with WeasyPrint and sends email through Brevo. The Docker image and the initial migration were checked for real. A TanStack Start website and a React Native mobile app built with Expo come next.