Skip to main content

Modules

Vortex is not a Drupal distribution: it ships no installation profile and no recipes. It provides a small set of contributed modules that most projects need, each already wired into the environment-aware settings and the provisioning scripts. You add the rest once the initial setup is done.

Every module listed here is optional. The installer asks which ones to keep, and deselecting one removes its Composer requirement, its settings override, its line in the provisioning script, its Behat feature and its settings test assertions in a single pass.

How modules are configured

MechanismLocationEffect
Composer requirementrequire in composer.jsonMakes the module available to the site. ➡️ See composer.json
Settings overrideweb/sites/default/includes/modules/settings.<module>.phpApplies configuration conditioned on the detected environment, reading values from environment variables. ➡️ See Settings
Config export exclusion$settings['config_exclude_modules'] in a settings overrideKeeps a development-only module out of the exported configuration, so enabling it locally never dirties the config
Provisioningscripts/provision-00-enable-demo-modules.shInstalls the module in the local, ci, dev and stage environments only
Development provisioningscripts/provision-10-enable-dev-modules.shInstalls the development-only modules in the same four environments
Module dependencyys_demo.info.ymlInstalls the module as a dependency of the demo module

A module can be required without being installed anywhere: the settings override is then ready for the day the project enables it.

Site building

ModulePurposeConfiguration provided by Vortex
coffeeJump to any administration page by typing its nameInstalled during provisioning. No settings override
config_splitConditionally imported configuration setssettings.config_split.php enables the split matching the detected environment - local, ci, dev or stage - so each environment imports only its own set
config_updateReport, revert and import configuration against module defaultsInstalled during provisioning. No settings override
navigation_extra_toolsCache, cron and update shortcuts in the core Navigation moduleInstalled during provisioning, after the core Navigation module replaces the classic Toolbar. No settings override
pathautoAutomatic URL aliases from configurable patternsInstalled during provisioning. No settings override
redirectURL redirect managementInstalled during provisioning. No settings override
xmlsitemapMultilingual XML sitemapsettings.xmlsitemap.php stops cron regeneration and search engine submission outside production, so non-production environments are never advertised

Security

ModulePurposeConfiguration provided by Vortex
seckitSecurity-hardening HTTP headerssettings.seckit.php disables the Content Security Policy and the upgrade-insecure-requests header locally and in CI, where the site is not served over HTTPS. Not installed during provisioning - enable it when the project needs it
shieldHTTP basic authentication in front of the sitesettings.shield.php forces Shield on in non-production environments other than local and ci, where it is forced off. Production is left untouched, so Shield stays under UI control there. Credentials come from DRUPAL_SHIELD_USER and DRUPAL_SHIELD_PASS; DRUPAL_SHIELD_PRINT overrides the prompt title, DRUPAL_SHIELD_DISABLED turns it off for one environment, and DRUPAL_SHIELD_ALLOW_ACME_CHALLENGE opens the Let's Encrypt challenge path
clamavMalware scanning of uploaded filessettings.clamav.php selects daemon or executable mode from DRUPAL_CLAMAV_MODE and points the daemon at CLAMAV_HOST and CLAMAV_PORT, but only when DRUPAL_CLAMAV_ENABLED is set. Ships only when the ClamAV service is selected

Operations

ModulePurposeConfiguration provided by Vortex
environment_indicatorColored banner naming the current environmentsettings.environment_indicator.php names the indicator after the detected environment and colors it per environment - red for production, yellow for stage, green for dev - with the toolbar integration and favicon marker turned on
reroute_emailRedirects outbound email away from real userssettings.reroute_email.php enables rerouting in every environment except local, ci, stage and prod, which covers pull request environments. DRUPAL_REROUTE_EMAIL_ADDRESS and DRUPAL_REROUTE_EMAIL_ALLOWED set the target and the allowlist, and DRUPAL_REROUTE_EMAIL_DISABLED turns it off entirely
robotstxtServes robots.txt from the databasesettings.robotstxt.php serves a Disallow: / file outside production, so non-production environments are not indexed
stage_file_proxyFetches media files from a remote site on demandsettings.stage_file_proxy.php sets the origin from DRUPAL_STAGE_FILE_PROXY_ORIGIN outside production and injects the Shield credentials into that URL when they are set, so a shielded origin still serves files
redisRedis cache and lock backendssettings.redis.php points the connection at REDIS_HOST and REDIS_SERVICE_PORT, makes Redis the default cache backend, registers the module container YAML files and swaps the bootstrap container over - all gated on DRUPAL_REDIS_ENABLED and on the redis PHP extension being loaded, so a two-stage deployment can provision the service before switching the cache. Ships only when the Redis service is selected
ModulePurposeConfiguration provided by Vortex
search_apiSearch framework with pluggable backendsInstalled during provisioning alongside the Solr backend. No settings override
search_api_solrApache Solr backend for Search APIInstalled during provisioning. Ships only when the Solr service is selected

Development and testing

ModulePurposeConfiguration provided by Vortex
develInspect variables, entities and the service containerInstalled by the development provisioning script. settings.devel.php excludes it from the exported configuration
sdc_develValidation for Single Directory ComponentsInstalled by the development provisioning script. No settings override
generated_contentDeterministic placeholder content from pluginsInstalled by the development provisioning script with GENERATED_CONTENT_CREATE=1, unless DRUPAL_GENERATED_CONTENT_SKIP=1 installs it without generating. settings.generated_content.php excludes it from the exported configuration. ➡️ See Generated content
testmodeFilters non-test content out of registered viewsInstalled as a dependency of the demo module. settings.testmode.php excludes it from the exported configuration. ➡️ See Testmode
drupal_helpersStatic facades for deploy hooks and update scriptsInstalled as a dependency of the demo module. No settings override. ➡️ See Drupal helpers

Migrations

These two modules ship only when the migration feature is selected. The installer removes both requirements otherwise.

ModulePurposeConfiguration provided by Vortex
migrate_plusExtra source and process plugins, and configuration-entity migrationsUsed by the demo migration module against the second database. No settings override
migrate_toolsDrush commands and a UI to run, roll back and monitor migrationsDriven by scripts/provision-20-migration.sh during provisioning. No settings override

➡️ See Migrations for the second database and the demo migration.