Azwar's Portfolio
DonorPress
August 8, 2026 (2mo ago)

š About Project
š DonorPress is a complete donation and fundraising platform for WordPress that I designed and built from the ground up. Nonprofits, charities, schools, and religious organisations usually end up stitching together four or five plugins to accept donations, track donors, run campaigns, and handle recurring giving. DonorPress replaces that stack with a single, cohesive product ā and keeps every feature you actually need to take a donation in the free version.
The plugin is built on a modern, service-provider architecture: PHP 8.1+ with PSR-4 autoloading, a dependency-injection container, dedicated model and repository layers, and custom database tables for donations, donors, and subscriptions. The admin experience is a React 18 + TypeScript SPA bundled with Vite and styled with Tailwind, talking to a versioned REST API at /wp-json/donorpress/v2. The donor-facing frontend stays deliberately lightweight ā plain CSS and JS ā so public pages don't pay for the admin's bundle.
Payments were the hardest part to get right. Stripe and PayPal are both first-class gateways supporting one-time and recurring donations, with webhook signature verification, refund handling, and full subscription lifecycle management. Recurring giving isn't bolted on as an upsell ā it's core, because that's where fundraising programs actually grow.
Around that sits the rest of the product: a drag-and-drop form builder with live preview and conditional logic, goal-driven campaigns with real-time thermometers and leaderboards, a donor self-service dashboard, a template-tag email notification system, revenue and donor reporting, a setup wizard, a full shortcode library, and 16 Elementor widgets. Everything is translation-ready, and the codebase ships with PHPUnit test suites and WordPress Coding Standards enforcement via PHPCS.
Commercially, DonorPress runs a free-core model with seven optional Pro modules gated through Freemius ā including peer-to-peer fundraising, UK Gift Aid with HMRC-compliant exports, PDF invoices, annual tax receipts, and an advanced analytics dashboard with MRR and cohort insights.
š§± Form Builder

Fundraisers build donation forms visually ā drop in fields, reorder steps, set a goal, and pick a layout. Single-step donate boxes and guided multi-step campaign forms use the same builder, with a live preview that renders exactly what donors will see, plus conditional logic and validation handled without a line of code.
š£ Campaigns

Every cause gets its own campaign page with a monetary or donor-count goal, a deadline, and a live fundraising thermometer that updates in real time as gifts land. Campaigns can carry multiple donation forms, group into categories, and surface donor walls, top-donor leaderboards, and progress bars through shortcodes or Elementor widgets.
ā Pro Add-ons

Seven optional modules extend the free core ā led by Peer-to-Peer Fundraising, where supporters create their own fundraising pages, build teams, and rally donations toward a shared goal with live team and individual leaderboards.
⨠Features
š³ Payments & Recurring Giving
- Stripe gateway ā one-time and recurring, with Stripe.js and PCI-compliant tokenization
- PayPal gateway ā one-time and recurring, with webhook signature verification
- Subscription lifecycle ā pause, cancel, renew, and failed-payment handling
- Refunds ā processed from the admin and reflected in reports and receipts
š§± Forms & Campaigns
- Drag-and-drop builder with live preview, no shortcodes to memorize
- Single-step or multi-step layouts, swappable at any time
- Conditional logic & validation driven by the builder
- Goal-based campaigns with thermometers, leaderboards, categories, and filtering
š„ Donors & Communication
- Donor records with full giving history, totals, and self-service dashboard
- Email notifications with a template-tag editor ā receipts, admin alerts, refunds, subscription events
- Receipts and downloadable donation history for every donor
š Reporting & Extensibility
- Reports on revenue, donors, and form performance
- REST API at
/wp-json/donorpress/v2 - Shortcodes for forms, campaigns, donor dashboards, donor walls, leaderboards, and thermometers
- 16 Elementor widgets, including a sticky donate bar and tribute/memorial forms
- Translation-ready with full text-domain coverage
š Pro Modules
- Peer-to-Peer Fundraising ā supporter pages, teams, leaderboards, approval workflows
- Gift Aid (UK) ā HMRC-compliant declarations and ChR1 CSV export
- PDF Invoices & Annual Receipts ā branded PDFs and year-end tax documents
- Advanced Dashboard ā sparklines, revenue charts, gateway breakdown, MRR & cohorts
- Manual Donations ā record and reconcile offline gifts
- Currency Switcher ā local-currency giving with manual or auto exchange rates
š ļø Technology Stack
- Backend: PHP 8.1+, WordPress 6.3+, PSR-4 autoloading, DI container, service providers
- Frontend (Admin): React 18, TypeScript, Vite, Tailwind CSS, Recharts
- Frontend (Donor): Vanilla CSS & JS ā deliberately dependency-free
- Data: Custom tables plus WordPress post types, models, and repositories
- Payments: Stripe API, PayPal REST API with webhook verification
- PDF: Dompdf
- Licensing: Freemius SDK
- Quality: PHPUnit (unit + integration), PHPCS with WordPress Coding Standards, PHPCompatibility
- Docs: Mintlify documentation site with automated Playwright screenshot capture
š² Contact Info
š© E-mail: r.azwar42@gmail.com
š§³ Linkedin: Rao Azwar Lin
šØš»āš» GitHub: Rao Azwar
Made with š¤ by @raoazwar