2. Architecture constraints¶
Technical constraints¶
| Constraint | Consequence |
|---|---|
| PHP 7.2.5 minimum | Production code cannot require newer language syntax without raising the minimum |
| MySQL/MariaDB and PostgreSQL | SQL and schema behavior must work through both database adapters |
| Server-rendered web application | Every normal request executes PHP and returns HTML, JSON, JavaScript, CSS, or an export |
| Shared-hosting compatibility | Installation cannot assume containers, background workers, or shell access |
| Filesystem configuration | Secrets and local overrides are loaded from config.inc.php |
| Optional PHP extensions | Internationalisation and integrations require capability checks or fallbacks |
| Multiple authentication systems | Session initialization and third-party autoloaders can interact |
Organizational constraints¶
- MRBS is distributed under the GNU General Public License.
- Existing installations expect configuration variables and database upgrades to remain backward compatible.
- Contributions must accommodate installations with different themes, languages, identity providers, and database systems.
- Release artifacts include dependencies in the repository rather than requiring a production Composer installation.
Conventions visible in 1.12.2¶
- The
MRBSnamespace is used for application code. - Namespaced classes are loaded from
web/lib/by a small PSR-0-like autoloader. - Page controllers and significant shared behavior remain procedural.
- Configuration is represented by PHP variables and arrays.
- Database table names use a configurable prefix,
mrbs_by default. - User-facing strings are loaded from language files.
Runtime constraints¶
- The room timezone can differ from the server timezone.
- Requests can run under different PHP SAPIs and web servers.
- Kiosk and public-access modes must coexist with authenticated administration.
- Email is flushed through the mail queue at request shutdown.
- Schema upgrades may require credentials with table-altering rights.
Documentation constraint¶
This architecture baseline is fixed to v1.12.2. Later main-branch changes are
not part of the baseline until the documented version is advanced.