Nonprofit Spring Security iText PDF

Daisy Foundation Africa

Live nonprofit website and donation backend — public site at daisy-website-gamma.vercel.app, with Spring Boot APIs for donor tracking, PDF receipts, and email confirmations.

Role
Backend lead
Live at
Vercel
Stack
Spring Boot · MySQL
Timeline
May 2024
Daisy Foundation Africa website homepage
Live nonprofit website

Problem

The Daisy Foundation needed to track donations digitally, issue receipts donors could keep for their records, and notify contributors automatically — replacing manual spreadsheets and inconsistent follow-up.

My role

I led backend development: defined the REST API, implemented authentication, built the receipt generation pipeline, and coordinated backend tasks across the student team.

Implementation

Authentication & API security

Spring Security with JWT protected admin and donor-facing endpoints. Role-based access separated foundation staff operations from public donation flows.

Receipt pipeline

On successful contribution recording, the system generates a PDF receipt via iText with donor details and transaction metadata, then triggers email delivery through JavaMailSender.

Data model

Normalized donor, contribution, and receipt entities with transactional integrity so partial failures never left orphaned records.

Key decisions

  • Server-side PDF generation for consistent receipt formatting across devices.
  • Idempotent contribution endpoints to prevent duplicate records on retries.
  • DTO layer between controllers and entities for stable API contracts.

Outcome

Delivered a working donation backend the foundation could operate with automated receipts and email notifications — plus a live public website at daisy-website-gamma.vercel.app for campaigns, events, and donor engagement.