The Moodle architecture
Moodle is a PHP-based open-source LMS with a plugin architecture. Almost everything visual and functional can be customised through the plugin system — without modifying the Moodle core. This is important: core modifications make upgrades extremely difficult and create long-term maintenance problems. Everything we build follows the golden rule: never touch core.
What can be customised via themes
Moodle themes control the visual appearance of the platform. A custom theme can change:
- Colours, typography, spacing, and layout
- Header and footer design
- Login page branding
- Course and category page layouts
- Email notification templates
- Dashboard widgets and layout
We build custom Boost child themes (Moodle's modern theme framework) that give you full brand control while inheriting Moodle's responsive and accessible base.
What can be added via plugins
Moodle's plugin system covers a huge surface area:
- Activity modules (new content types — simulations, custom players, interactive exercises)
- Authentication plugins (SSO with SAML 2.0, OAuth 2.0, LDAP)
- Enrolment plugins (automatic enrolment based on external data)
- Grade and completion plugins (custom rules and calculations)
- Report plugins (new reporting views and exports)
- Admin tools and block plugins
We write custom plugins for functionality not covered by the 1,400+ community plugins available in the Moodle plugin directory.
Multi-tenancy
Moodle's built-in multi-tenancy is category-based — different organisations can have their own course category with role-separated access. For more complete tenant isolation (separate branding, separate admin portals, truly isolated data), we either extend Moodle with custom multi-tenancy plugins or build a custom LMS on top of Moodle's data layer.
What requires a custom build
Some requirements are better served by a custom LMS built with React and Node.js rather than a Moodle extension:
- Unique learner journeys that Moodle's course model cannot represent
- Complex e-commerce or subscription billing requirements
- Deep integration with proprietary internal systems
- Learner-facing UI that needs to match a specific design system
- Performance requirements beyond what PHP can deliver at your scale