Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .ahoy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ commands:
usage: Lint front-end code.
cmd: |
ahoy cli vendor/bin/twig-cs-fixer lint
ahoy cli "npm run --prefix \${WEBROOT}/themes/custom/\${DRUPAL_THEME} lint"
ahoy cli "yarn run --cwd=\${WEBROOT}/themes/custom/\${DRUPAL_THEME} lint"
#;> DRUPAL_THEME

lint-tests:
Expand All @@ -220,7 +220,7 @@ commands:
usage: Fix lint issues of front-end code.
cmd: |
ahoy cli vendor/bin/twig-cs-fixer lint --fix
ahoy cli "npm run --prefix \${WEBROOT}/themes/custom/\${DRUPAL_THEME} lint-fix"
ahoy cli "yarn run --cwd=\${WEBROOT}/themes/custom/\${DRUPAL_THEME} lint-fix"
#;> DRUPAL_THEME

test:
Expand Down Expand Up @@ -283,7 +283,7 @@ commands:
fi
hide: true

# Override entrypoint to alter default behaviour of Ahoy.
# Override entrypoint to alter default behavior of Ahoy.
entrypoint:
- bash
- -c
Expand Down
11 changes: 5 additions & 6 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ aliases:
environment:
# Set runner timezone to ensure that executed operations use correct timestamps.
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ: "Australia/Melbourne"
TZ: "UTC"
# Set runner terminal capabilities.
TERM: xterm-256color
# Disable strict host key checking for SSH connections.
Expand All @@ -69,10 +69,8 @@ aliases:
VORTEX_CI_TEST_RESULTS: &test_results /tmp/tests
# Directory to store test artifacts.
VORTEX_CI_ARTIFACTS: &artifacts /tmp/artifacts
# Directory to store code exported between jobs.
VORTEX_EXPORT_CODE_DIR: &vortex_build_export_dir /tmp/workspace/code
# Directory to use for artifact deployments.
VORTEX_DEPLOY_ARTIFACT_SRC: *vortex_build_export_dir
VORTEX_DEPLOY_ARTIFACT_SRC: /tmp/workspace/code
# Source code location for artifact deployments.
VORTEX_DEPLOY_ARTIFACT_ROOT: *working_directory
# Report file location for artifact deployments.
Expand Down Expand Up @@ -255,8 +253,9 @@ jobs:
- run:
name: Export built codebase
command: |
mkdir -p "${VORTEX_EXPORT_CODE_DIR}"
docker compose cp -L cli:"/app/." "${VORTEX_EXPORT_CODE_DIR}"
mkdir -p "/tmp/workspace/code"
docker compose cp -L cli:"/app/." "/tmp/workspace/code"
du -sh "/tmp/workspace/code"

- run:
name: Install development dependencies
Expand Down
50 changes: 30 additions & 20 deletions .env
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
##
# Project environment variables.
#
# This is a single location where defined variables control how the stack
# operates and should be the primary place for modifications. Avoid overriding
# This is a single location where variables control how the project stack
# operates. It should be the primary place for modifications. Avoid overriding
# values in scripts or configuration files to simplify future updates and
# centralize changes.
#
# Values must be scalar and cannot reference another variable.
# Do not enclose values in double quotes unless they include spaces.
# A value must be scalar and cannot reference another variable.
# Do not enclose a value in double quotes unless it includes spaces.
#
# To apply any changes made to this file, run `docker-compose up cli -d` or
# `ahoy up cli`.
#
# To customize variables locally, copy `.env.local.example` to `.env.local`.
# To customize variables locally, copy `.env.local.example` to `.env.local`,
# and add your custom values there.
#
# @see https://vortex.drevops.com/workflows/variables

Expand All @@ -30,14 +31,14 @@ VORTEX_PROJECT=your_site
# Name of the web root directory containing a Drupal codebase.
WEBROOT=web

# The timezone used in the containers.
TZ="Australia/Melbourne"
# The timezone used within the containers.
TZ=UTC

################################################################################
# DRUPAL #
################################################################################

# Drupal profile name (used only when installing from profile).
# Drupal profile name.
DRUPAL_PROFILE=standard

#;< DRUPAL_THEME
Expand Down Expand Up @@ -82,7 +83,7 @@ DRUPAL_CLAMAV_MODE=daemon
# or fresh install from profile), running updates, appying configuration
# changes, clearing caches and performing other tasks that prepare the site for
# use.
# @see https://vortex.drevops.com/workflows/provision
# @see https://vortex.drevops.com/drupal/provision

# Set to 'profile' to install a site from profile instead of the database dump.
VORTEX_PROVISION_TYPE=database
Expand All @@ -98,12 +99,13 @@ VORTEX_PROVISION_OVERRIDE_DB=0
#
# Database sanitization is enabled by default in all non-production
# environments and is always skipped in the production environment.
# @see https://vortex.drevops.com/drupal/provision#database-sanitization
VORTEX_PROVISION_SANITIZE_DB_SKIP=0

# Sanitization email pattern.
#
# Applied if database sanitization is enabled.
# @see https://vortex.drevops.com/workflows/build#sanitization
# @see https://vortex.drevops.com/drupal/provision#database-sanitization
VORTEX_PROVISION_SANITIZE_DB_EMAIL="user_%uid@your-site-domain.example"

# Put the site into a maintenance mode during site provisioning.
Expand All @@ -129,36 +131,40 @@ VORTEX_ACQUIA_APP_NAME=
#;> HOSTING

################################################################################
# DATABASE #
# DATABASE SOURCE #
################################################################################

# Database service runs a single database within a container.
# See settings.php for database credentials defaults or run
# `ahoy drush sql:connect`.
# See settings.php for database credentials or run # `ahoy drush sql:connect`.

# Database can be imported from a *file dump* into an empty database started
# from the database default image or can *exist* in a pre-built container image.
# from the database default container image or can *exist* in a pre-built
# container image.
# Defaults to importing from a file.
# @see https://vortex.drevops.com/workflows/database

# Database dump directory.
#
# The directory is used to store the database dump files for import and export.
VORTEX_DB_DIR=./.data

# Database dump file name.
#
# The file is used to import the database into an empty database container.
VORTEX_DB_FILE=db.sql

#;< !PROVISION_TYPE_PROFILE
# Database download source.
VORTEX_DB_DOWNLOAD_SOURCE=url

#;< DB_DOWNLOAD_SOURCE_CONTAINER_REGISTRY
# Name of the pre-built container image.
# Name of the pre-built database container image.
# @see https://github.com/drevops/mariadb-drupal-data to seed your DB image.
# VORTEX_DB_IMAGE=your_org/your_site:latest
#;> DB_DOWNLOAD_SOURCE_CONTAINER_REGISTRY

#;< DB_DOWNLOAD_SOURCE_URL
# Database dump file sourced from CURL.
# Database dump file sourced from a URL.
#
# HTTP Basic Authentication credentials should be embedded into the value.
VORTEX_DB_DOWNLOAD_URL=
Expand Down Expand Up @@ -211,18 +217,22 @@ VORTEX_DEPLOY_TYPES=artifact

# The channels of the notifications.
#
# Can be a combination of comma-separated values: email,newrelic,github,jira
# A combination of comma-separated values: email,newrelic,github,jira
VORTEX_NOTIFY_CHANNELS=email

# Email to send notifications from.
VORTEX_NOTIFY_EMAIL_FROM="webmaster@your-site-domain.example"
# An email address to send notifications from.
#
# Applies to email notifications.
VORTEX_NOTIFY_EMAIL_FROM=webmaster@your-site-domain.example

# Email address(es) to send notifications to.
#
# Applies to email notifications.
#
# Multiple names can be specified as a comma-separated list of email addresses
# with optional names in the format "email|name".
# Example: "to1@example.com|Jane Doe, to2@example.com|John Doe"
VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@your-site-domain.example"
VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@your-site-domain.example
#;> NOTIFICATIONS

#;< DEMO
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/build-test-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
image: drevops/ci-runner:25.5.0

env:
TZ: Australia/Melbourne
TZ: UTC
TERM: xterm-256color
VORTEX_SSH_DISABLE_STRICT_HOST_KEY_CHECKING: "1"
VORTEX_SSH_REMOVE_ALL_KEYS: "1"
Expand Down Expand Up @@ -168,7 +168,7 @@ jobs:
image: drevops/ci-runner:25.5.0

env:
TZ: Australia/Melbourne
TZ: UTC
TERM: xterm-256color
# Disable strict host key checking for SSH connections.
VORTEX_SSH_DISABLE_STRICT_HOST_KEY_CHECKING: "1"
Expand Down Expand Up @@ -366,7 +366,7 @@ jobs:
container:
image: drevops/ci-runner:25.5.0
env:
TZ: Australia/Melbourne
TZ: UTC
TERM: xterm-256color
VORTEX_SSH_DISABLE_STRICT_HOST_KEY_CHECKING: "1"
VORTEX_DEBUG: ${{ vars.VORTEX_DEBUG }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@
# shellcheck disable=SC2034

# Local development URL.
#
# Based on the `$COMPOSE_PROJECT_NAME` environment variable, which is set by
# Docker Compose to the name of the project directory.
#
# Override only if you need to use a different URL than the default.
VORTEX_LOCALDEV_URL="<current_dir>.docker.amazee.io"
VORTEX_LOCALDEV_URL="${COMPOSE_PROJECT_NAME:-example-site}.docker.amazee.io"

# Set to `1` to override existing downloaded DB dump without asking.
VORTEX_DB_DOWNLOAD_FORCE=
Expand Down
2 changes: 1 addition & 1 deletion .vortex/docs/.utils/variables/extra/.env.variables.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ VORTEX_DB_IMAGE_BASE=
# Drupal admin email. May need to be reset if database was sanitized.
DRUPAL_ADMIN_EMAIL="webmaster@your-site-domain.example"

# Password replacement used for sanitised database.
# Password replacement used for sanitized database.
VORTEX_PROVISION_SANITIZE_DB_PASSWORD="<RANDOM STRING>"

# Container registry name.
Expand Down
7 changes: 4 additions & 3 deletions .vortex/docs/.utils/variables/extra/ci.variables.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@ VORTEX_DEPLOY_SKIP=
# Proceed with container image deployment after it was exported.
VORTEX_EXPORT_DB_CONTAINER_REGISTRY_DEPLOY_PROCEED=

# Directory to store exported code.
VORTEX_EXPORT_CODE_DIR=

# Ignore Hadolint failures.
VORTEX_CI_HADOLINT_IGNORE_FAILURE=0

Expand Down Expand Up @@ -69,3 +66,7 @@ RENOVATE_DRY_RUN=false

# Commit author for self-hosted Renovate bot.
RENOVATE_GIT_AUTHOR='Renovate Self Hosted <renovatebot@your-site-domain.example>'

# Renovate repositories to manage.
# Set as "organization/repository".
RENOVATE_REPOSITORIES=
21 changes: 15 additions & 6 deletions .vortex/docs/content/README.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,24 @@ sidebar_position: 1
</h1>
</div>

**Vortex** is a Drupal project template designed to streamline onboarding,
accelerate development, and support long-term maintainability.

Welcome to <strong>Vortex</strong> &mdash; a project template for Drupal designed to simplify onboarding and website maintenance.
It provides a complete foundation for building and deploying Drupal sites —
including containerized local environments, automated testing and code quality
tools, CI/CD pipeline configurations, and integrations with popular hosting
platforms. Everything is pre-configured and ready to use, so teams can focus on
building features instead of setting up infrastructure.

At [DrevOps&reg;](https://www.drevops.com/), we carefully maintain this
template, keeping it aligned with the latest tools and validating it through
automated tests to ensure everything works together seamlessly.
By standardizing project structure and tooling, **Vortex** ensures a consistent
developer experience across every project that uses it. Whether you’re starting
fresh or joining an existing Vortex-based site, you can get up to speed quickly
and start contributing right away.

Our goal is to provide a consistent developer experience across projects, making
it easier to switch between them and get up to speed quickly.
The template is actively maintained and kept in sync with the latest tools.
Every change is verified through automated tests to ensure updates remain stable
and reliable — reducing the risk of regressions and making it easier to maintain
projects over time.

## Main features

Expand Down
2 changes: 1 addition & 1 deletion .vortex/docs/content/ci/README.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -58,5 +58,5 @@ The CI pipeline is triggered by:
Database is downloaded overnight and cached so that the next CI run on the same
day uses the cached database dump.

By default, the database is cached per-branch for 24 hours. Of cache is not
By default, the database is cached per-branch for 24 hours. If cache is not
available, the fallback default branch is used.
2 changes: 1 addition & 1 deletion .vortex/docs/content/contributing/maintenance/scripts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ Follow these guidelines when creating or updating **Vortex** variables.
1. Local variables MUST be in lowercase, and global variables MUST be in
uppercase.

2. All **Vortex** variables MUST start with `VORTEX_` to separate Vortex from
2. All **Vortex** variables MUST start with `VORTEX_` to separate **Vortex** from
third-party variables.

3. Global variables MAY be re-used as-is across scripts. For instance, the
Expand Down
2 changes: 1 addition & 1 deletion .vortex/docs/content/contributing/roadmap.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ bug fixes required.
1. Adding integration with Platform.sh.
2. Adding support for Cypress and Drupal Test Traits.
2. Adding support for Visual Regression and Accessibility tools.
3. Introduction of the Vortex Dashboard as a single place for managing projects.
3. Introduction of the **Vortex** Dashboard as a single place for managing projects.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Fix list numbering consistency
The Future goals list has two items numbered "2." before your new "3." entry, which can be confusing. Please update the second item to "3." or switch to auto-numbered lists for consistency.

🤖 Prompt for AI Agents
In .vortex/docs/content/contributing/roadmap.mdx at line 28, the numbered list
for Future goals has duplicate "2." entries before the new "3." item, causing
inconsistency. Fix this by renumbering the second "2." item to "3." and updating
subsequent numbers accordingly, or convert the list to use markdown
auto-numbering by using "1." for all items to maintain consistent and correct
numbering.

36 changes: 18 additions & 18 deletions .vortex/docs/content/drupal/README.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@ sidebar_position: 1
# Drupal

When it comes to Drupal code, **Vortex** offers several key components:

1. [Composer configuration](composer)
2. [Settings management](settings)
3. [Provision script](provision)
4. [Module scaffold with tests scaffold](module-scaffold)
4. [Module scaffold](module-scaffold)
5. [Theme scaffold](theme-scaffold)

## Included modules
Expand All @@ -18,21 +19,20 @@ Please note that **Vortex** is not a Drupal distribution, and it does not aim
to provide a full Drupal installation profile or a set of recipes. Instead, it
provides you with a minimal set of modules and dependencies to get you started.

You would add more modules and themes once you finish the initial setup.

You would need to add more modules and themes once you finish the initial setup.

| Module Name | Description |
|----------------------------------------------|-----------------------------------------------------------|
| [`admin_toolbar`](https://www.drupal.org/project/admin_toolbar) | Extends the Drupal Toolbar with drop-down menus for easier access to admin pages. |
| [`clamav`](https://www.drupal.org/project/clamav) | Integrates ClamAV antivirus for file scanning in Drupal. |
| [`coffee`](https://www.drupal.org/project/coffee) | Provides quick access to admin pages through a search bar. |
| [`config_split`](https://www.drupal.org/project/config_split) | Allows exporting and importing different configurations. |
| [`config_update`](https://www.drupal.org/project/config_update) | Tracks and updates configuration changes on your site. |
| [`environment_indicator`](https://www.drupal.org/project/environment_indicator) | Adds a visual indicator for the current environment (e.g., Dev, Prod). |
| [`pathauto`](https://www.drupal.org/project/pathauto) | Automatically generates URL/path aliases for content. |
| [`redirect`](https://www.drupal.org/project/redirect) | Provides URL redirection management. |
| [`redis`](https://www.drupal.org/project/redis) | Integrates Valkey caching backend with Drupal. |
| [`search_api`](https://www.drupal.org/project/search_api) | Provides a flexible framework for creating search pages. |
| [`search_api_solr`](https://www.drupal.org/project/search_api_solr) | Integrates Apache Solr with Search API. |
| [`shield`](https://www.drupal.org/project/shield) | Protects your site with HTTP authentication. |
| [`stage_file_proxy`](https://www.drupal.org/project/stage_file_proxy) | Serves production files for non-production environments. |
| Module Name | Description |
|---------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
| [`admin_toolbar`](https://www.drupal.org/project/admin_toolbar) | Extends the Drupal Toolbar with drop-down menus for easier access to admin pages. |
| [`clamav`](https://www.drupal.org/project/clamav) | Integrates ClamAV antivirus for file scanning. |
| [`coffee`](https://www.drupal.org/project/coffee) | Provides quick access to admin pages through a search bar. |
| [`config_split`](https://www.drupal.org/project/config_split) | Allows exporting and importing different configurations based on the environment. |
| [`config_update`](https://www.drupal.org/project/config_update) | Tracks and updates configuration changes on your site. |
| [`environment_indicator`](https://www.drupal.org/project/environment_indicator) | Adds a visual indicator for the current environment (e.g., Dev, Stage, Prod). |
| [`pathauto`](https://www.drupal.org/project/pathauto) | Automatically generates URL/path aliases for content. |
| [`redirect`](https://www.drupal.org/project/redirect) | Provides URL redirection management. |
| [`redis`](https://www.drupal.org/project/redis) | Integrates Valkey caching backend. |
| [`search_api`](https://www.drupal.org/project/search_api) | Provides a flexible framework for creating search pages. |
| [`search_api_solr`](https://www.drupal.org/project/search_api_solr) | Integrates Apache Solr with Search API. |
| [`shield`](https://www.drupal.org/project/shield) | Restricts access to your site by requiring a username and password. |
| [`stage_file_proxy`](https://www.drupal.org/project/stage_file_proxy) | Serves production asset files when accessing non-production environments. |
4 changes: 2 additions & 2 deletions .vortex/docs/content/drupal/composer.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@ explaining its role and how it contributes to your project's setup and
management.

import CodeBlock from '@theme/CodeBlock';
import MyComponentSource from '!!raw-loader!./../../../../composer.json';
import ComposerJsonSource from '!!raw-loader!./../../../../composer.json';

<details>
<summary>Click here to see the contents of the `composer.json` file</summary>

<CodeBlock language="json">{MyComponentSource}</CodeBlock>
<CodeBlock language="json">{ComposerJsonSource}</CodeBlock>

</details>

Expand Down
Loading