Page:
Architecture
Clone
Contents
Architecture
Package Structure
source/
├── pkg_mokosuitenpo.xml # Package manifest
├── script.php # Install/update script
└── packages/
├── com_mokosuitenpo/ # Component
│ ├── mokosuitenpo.xml # Component manifest
│ ├── admin/
│ │ ├── access.xml # ACL definitions
│ │ ├── config.xml # Component options
│ │ ├── services/
│ │ │ └── provider.php # DI container registration
│ │ ├── src/
│ │ │ ├── Controller/
│ │ │ │ └── DisplayController.php
│ │ │ ├── Model/
│ │ │ │ ├── CampaignsModel.php
│ │ │ │ ├── DonationsModel.php
│ │ │ │ ├── DonorsModel.php
│ │ │ │ ├── EventsModel.php
│ │ │ │ ├── GrantsModel.php
│ │ │ │ ├── MembershipsModel.php
│ │ │ │ └── VolunteersModel.php
│ │ │ └── View/
│ │ │ ├── Campaigns/HtmlView.php
│ │ │ ├── Dashboard/HtmlView.php
│ │ │ ├── Donors/HtmlView.php
│ │ │ ├── Events/HtmlView.php
│ │ │ ├── Grants/HtmlView.php
│ │ │ ├── Memberships/HtmlView.php
│ │ │ └── Volunteers/HtmlView.php
│ │ └── tmpl/ # Admin templates
│ │ ├── campaigns/default.php
│ │ ├── dashboard/default.php
│ │ ├── donors/default.php
│ │ ├── events/default.php
│ │ ├── grants/default.php
│ │ ├── memberships/default.php
│ │ └── volunteers/default.php
│ ├── site/
│ │ ├── src/
│ │ │ ├── Controller/DisplayController.php
│ │ │ ├── Service/Router.php
│ │ │ └── View/
│ │ │ ├── CampaignPage/HtmlView.php
│ │ │ ├── Donate/HtmlView.php
│ │ │ ├── DonorWall/HtmlView.php
│ │ │ ├── EventCalendar/HtmlView.php
│ │ │ ├── GrantPortal/HtmlView.php
│ │ │ ├── MemberPortal/HtmlView.php
│ │ │ ├── ThankYou/HtmlView.php
│ │ │ └── VolunteerSignup/HtmlView.php
│ │ └── tmpl/ # Site templates
│ │ ├── campaignpage/default.php
│ │ ├── donate/default.php
│ │ ├── donorwall/default.php
│ │ ├── eventcalendar/default.php
│ │ ├── grantportal/default.php
│ │ ├── memberportal/default.php
│ │ └── volunteersignup/default.php
│ ├── api/
│ │ └── src/Controller/
│ │ ├── NpoCampaignsController.php
│ │ ├── NpoDonationsController.php
│ │ ├── NpoDonorController.php
│ │ ├── NpoEventsController.php
│ │ ├── NpoGrantsController.php
│ │ ├── NpoReportsController.php
│ │ └── NpoVolunteersController.php
│ └── media/
│ ├── css/
│ └── js/
├── plg_system_mokosuitenpo/ # System plugin
│ ├── sql/
│ │ ├── install.mysql.sql # Schema creation
│ │ └── uninstall.mysql.sql # Schema removal
│ ├── language/en-GB/
│ └── src/Helper/
│ ├── BoardManagementHelper.php
│ ├── CampaignHelper.php
│ ├── DonorHelper.php
│ ├── DonorRetentionHelper.php
│ ├── EventHelper.php
│ ├── Form990Helper.php
│ ├── FundAccountingHelper.php
│ ├── GrantHelper.php
│ ├── GrantReportingHelper.php
│ ├── ImpactReportHelper.php
│ ├── InKindDonationHelper.php
│ ├── MembershipHelper.php
│ ├── PledgeReminderHelper.php
│ ├── RecurringDonationHelper.php
│ ├── TaxReceiptHelper.php
│ └── VolunteerHelper.php
├── plg_webservices_mokosuitenpo/ # Webservices plugin
│ └── src/Extension/
│ └── MokoSuiteNpoApi.php # Route registration
└── plg_task_mokosuitenpo/ # Task plugin
└── src/Extension/
└── NpoAutomation.php # Scheduled tasks
MVC Overview
Admin Views
| View | Model | Purpose |
|---|---|---|
| Dashboard | — | Key metrics overview (total donors, donations, campaigns) |
| Donors | DonorsModel | List/filter donors by type, level, lifetime giving |
| Donations | DonationsModel | List/filter donations by date, fund, campaign |
| Campaigns | CampaignsModel | List campaigns with progress bars |
| Grants | GrantsModel | List grants with status/deadline filters |
| Volunteers | VolunteersModel | List volunteers with skills/availability |
| Events | EventsModel | List events with registration counts |
| Memberships | MembershipsModel | List memberships with expiry alerts |
Site Views
| View | Purpose |
|---|---|
| Donate | Public donation form with quick amounts, fund/campaign selection, tribute gifts |
| CampaignPage | Campaign detail with progress thermometer and donor wall |
| DonorWall | Public donor recognition wall |
| EventCalendar | Event listing with month navigation and registration |
| GrantPortal | Grant information portal |
| MemberPortal | Member self-service portal |
| VolunteerSignup | Public volunteer registration form |
| ThankYou | Post-donation confirmation page |
Helper Classes
All business logic lives in the system plugin's Helper namespace (plg_system_mokosuitenpo/src/Helper/):
| Helper | Key Methods |
|---|---|
| DonorHelper | recordDonation(), recognition level calculations, lifetime giving |
| DonorRetentionHelper | getLybunt(), getSybunt(), getRetentionRate(), getGivingTrends() |
| CampaignHelper | Progress calculation, goal tracking |
| GrantHelper | Deadline alerts, reporting schedule |
| VolunteerHelper | Hours logging, skills matching |
| EventHelper | Registration, capacity management |
| MembershipHelper | Expiry alerts, renewal processing |
| TaxReceiptHelper | IRS-compliant receipt generation |
| FundAccountingHelper | Restricted/unrestricted fund tracking |
| Form990Helper | getRevenueBreakdown(), getExpenseBreakdown(), getCompensationSchedule() |
| BoardManagementHelper | getCurrentMembers(), getCommittees(), getAttendanceRate(), getExpiringTerms() |
| InKindDonationHelper | record(), getSummary(), getNeedingAppraisal() |
| PledgeReminderHelper | Pledge schedule reminders |
| RecurringDonationHelper | Recurring donation processing |
| ImpactReportHelper | Program impact metrics |
| GrantReportingHelper | Grant report generation |
API Endpoints
REST API controllers in com_mokosuitenpo/api/src/Controller/:
| Controller | Resource | Operations |
|---|---|---|
| NpoDonorController | /api/npo/donors |
CRUD |
| NpoDonationsController | /api/npo/donations |
CRUD |
| NpoCampaignsController | /api/npo/campaigns |
CRUD |
| NpoGrantsController | /api/npo/grants |
CRUD |
| NpoVolunteersController | /api/npo/volunteers |
CRUD |
| NpoEventsController | /api/npo/events |
CRUD |
| NpoReportsController | /api/npo/reports |
Read-only reports |
Cross-Module Integration
MokoSuite NPO integrates with other MokoSuite layers:
- CRM (Layer 1): Donors and volunteers link to CRM contacts via
contact_id. Online donations can create CRM orders. Membership dues create CRM invoices. - ERP (Layer 1): Donations create journal entries (restricted/unrestricted). Grant awards create revenue entries. Fund accounting links to GL chart of accounts.
CI/CD
- Gitea Actions workflows for build, auto-bump, auto-release
- MokoGitea update server for Joomla extension updates
- Branch protection on main/stable branches