mod_bib_cta documentation

Architecture Decision Records

This page indexes the architecture decisions behind the Baby in Brazil CTA module. Each ADR explains why a choice was made, what alternatives were rejected and which files are affected.

Back to developer documentation

Decision index

ADRDecisionStatusPrimary files
ADR-001Feature presets as administrator generatorsAcceptedFeaturepresetField.php, admin-feature-presets.js
ADR-002CSS Grid over Bootstrap grid dependencyAcceptedcta.css, tmpl/*.php
ADR-003Layout partials over monolithic templatesAcceptedtmpl/*.php, layouts/cta/*.php
ADR-004Inline SVG icons over font iconsAcceptedCtaHelper.php, forms/feature.xml
ADR-005Joomla module over Joomla componentAcceptedmod_bib_cta.xml, Dispatcher.php
ADR-006Normalised CTA data contract in helperAcceptedCtaHelper.php, layouts/cta/*.php
ADR-007Administrator JavaScript fallback loadingAcceptedFeaturepresetField.php, joomla.asset.json
ADR-008CSS custom properties as the public theme APIAcceptedcta.css, CtaHelper.php
ADR-009JED preparation without placeholder update server in manifestAccepteddist/update-server/*, mod_bib_cta.xml
ADR-010HTML developer documentation as primary handover formatAccepteddocs/html/*, README.md
ADR-011Accessibility-first CTA semanticsAcceptedtmpl/*.php, layouts/cta/media.php

Decision map

Editor experience

ADR-001 defines why presets generate saved subform rows instead of acting as hidden frontend logic.

Frontend independence

ADR-002, ADR-004 and ADR-008 keep the module portable by avoiding Bootstrap and icon-font dependencies.

Code maintainability

ADR-003 and ADR-006 define the separation between high-level layouts, partial layouts and the normalised data contract.

Distribution readiness

ADR-009 and ADR-010 document the packaging, update-server and handover documentation decisions.

Maintenance rule

When a future implementation changes an accepted architecture decision, do not delete the old ADR. Add a new ADR that supersedes it and link the two records.