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.
| Mechanism | Location | Effect |
|---|
| Composer requirement | require in composer.json | Makes the module available to the site. ➡️ See composer.json |
| Settings override | web/sites/default/includes/modules/settings.<module>.php | Applies configuration conditioned on the detected environment, reading values from environment variables. ➡️ See Settings |
| Config export exclusion | $settings['config_exclude_modules'] in a settings override | Keeps a development-only module out of the exported configuration, so enabling it locally never dirties the config |
| Provisioning | scripts/provision-00-enable-demo-modules.sh | Installs the module in the local, ci, dev and stage environments only |
| Development provisioning | scripts/provision-10-enable-dev-modules.sh | Installs the development-only modules in the same four environments |
| Module dependency | ys_demo.info.yml | Installs 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
| Module | Purpose | Configuration provided by Vortex |
|---|
coffee | Jump to any administration page by typing its name | Installed during provisioning. No settings override |
config_split | Conditionally imported configuration sets | settings.config_split.php enables the split matching the detected environment - local, ci, dev or stage - so each environment imports only its own set |
config_update | Report, revert and import configuration against module defaults | Installed during provisioning. No settings override |
navigation_extra_tools | Cache, cron and update shortcuts in the core Navigation module | Installed during provisioning, after the core Navigation module replaces the classic Toolbar. No settings override |
pathauto | Automatic URL aliases from configurable patterns | Installed during provisioning. No settings override |
redirect | URL redirect management | Installed during provisioning. No settings override |
xmlsitemap | Multilingual XML sitemap | settings.xmlsitemap.php stops cron regeneration and search engine submission outside production, so non-production environments are never advertised |
Security
| Module | Purpose | Configuration provided by Vortex |
|---|
seckit | Security-hardening HTTP headers | settings.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 |
shield | HTTP basic authentication in front of the site | settings.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 |
clamav | Malware scanning of uploaded files | settings.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
| Module | Purpose | Configuration provided by Vortex |
|---|
environment_indicator | Colored banner naming the current environment | settings.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_email | Redirects outbound email away from real users | settings.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 |
robotstxt | Serves robots.txt from the database | settings.robotstxt.php serves a Disallow: / file outside production, so non-production environments are not indexed |
stage_file_proxy | Fetches media files from a remote site on demand | settings.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 |
redis | Redis cache and lock backends | settings.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 |
Search
| Module | Purpose | Configuration provided by Vortex |
|---|
search_api | Search framework with pluggable backends | Installed during provisioning alongside the Solr backend. No settings override |
search_api_solr | Apache Solr backend for Search API | Installed during provisioning. Ships only when the Solr service is selected |
Development and testing
| Module | Purpose | Configuration provided by Vortex |
|---|
devel | Inspect variables, entities and the service container | Installed by the development provisioning script. settings.devel.php excludes it from the exported configuration |
sdc_devel | Validation for Single Directory Components | Installed by the development provisioning script. No settings override |
generated_content | Deterministic placeholder content from plugins | Installed 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 |
testmode | Filters non-test content out of registered views | Installed as a dependency of the demo module. settings.testmode.php excludes it from the exported configuration. ➡️ See Testmode |
drupal_helpers | Static facades for deploy hooks and update scripts | Installed 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.
| Module | Purpose | Configuration provided by Vortex |
|---|
migrate_plus | Extra source and process plugins, and configuration-entity migrations | Used by the demo migration module against the second database. No settings override |
migrate_tools | Drush commands and a UI to run, roll back and monitor migrations | Driven by scripts/provision-20-migration.sh during provisioning. No settings override |
➡️ See Migrations for the second database and the demo
migration.