{"id":22854613,"url":"https://github.com/kanopi/drupal-starter-acquia","last_synced_at":"2026-01-29T21:31:38.761Z","repository":{"id":156745574,"uuid":"530871104","full_name":"kanopi/drupal-starter-acquia","owner":"kanopi","description":"A project starter for Drupal using Docksal, Composer and Tugboat customized for Acquia. ","archived":false,"fork":false,"pushed_at":"2025-10-21T22:36:15.000Z","size":462,"stargazers_count":0,"open_issues_count":2,"forks_count":3,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-10-22T00:23:30.452Z","etag":null,"topics":["acquia","do-not-archive","drupal","internal-tool"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kanopi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-08-30T23:49:47.000Z","updated_at":"2025-10-21T22:36:18.000Z","dependencies_parsed_at":"2024-08-21T16:08:22.179Z","dependency_job_id":"be2c0fdc-d968-453b-a714-f9de3ceca77d","html_url":"https://github.com/kanopi/drupal-starter-acquia","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/kanopi/drupal-starter-acquia","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanopi%2Fdrupal-starter-acquia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanopi%2Fdrupal-starter-acquia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanopi%2Fdrupal-starter-acquia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanopi%2Fdrupal-starter-acquia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kanopi","download_url":"https://codeload.github.com/kanopi/drupal-starter-acquia/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanopi%2Fdrupal-starter-acquia/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28885562,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T21:06:44.224Z","status":"ssl_error","status_checked_at":"2026-01-29T21:06:42.160Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acquia","do-not-archive","drupal","internal-tool"],"created_at":"2024-12-13T07:07:42.693Z","updated_at":"2026-01-29T21:31:38.739Z","avatar_url":"https://github.com/kanopi.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [Drupal Acquia]()\n\nBasic setup for Drupal on aquia.\n\n\n## Project init notes\n\nWhy? Non-pantheon projects are signifigantly different in terms of all the pieces it's easier to start from here.\n\n1. Create new repo from template\n    * Setup a github team specific to the project\n    * Add branch protection\n    * Squash and merge only\n1. Get the acquia settings.php file and drush alias file for site in acquia\n1. Update docksal/circleci environment variables as necessary\n1. Make docksal is setup with KDCL basic based theme.   see docksal command.\n1. Add code@kanopi to acquia project\n1. Add tugboat ssh key to code@kanopi acquia account\n1. Update documentation as necessary\n\n## Important links\n\n* Hosting\n    * [Acquia Dashboard]()\n    * [Dev]()\n    * [Stage]()\n    * [Prod]()\n* [CircleCI]()\n* [Tugboat]()\n* [Github Team]()\n\n## Local development\n\nWe use [Docksal](https://docksal.io/) to do our local development. Please [install Docksal](https://docksal.io/installation) first.\n\n### Acquia Config\n\nConfiguring Acquia a key and secret must be set up to download asset from Acquia like the database. To create a key and secret go to the\n[API Tokens](https://cloud.acquia.com/a/profile/tokens).\n\n```bash\nfin config set --global SECRET_ACQUIA_CLI_KEY=XXX\nfin config set --global SECRET_ACQUIA_CLI_SECRET=XXX\n```\n\nOnce your key has been added, verify that you have access to the project in Acquia, then\nproceed with the following steps to build the project:\n\n```shell\ngit clone git@github.com:kanopi/REPO.git\ncd REPO\nfin init\n```\n\n## Theme\n\nThe theme is based off the [Kanopi Design Component Library](https://github.com/kanopi/kdcl_basic) which uses Storybook and is originally forked from [Emulsify DS](https://github.com/emulsify-ds/emulsify-drupal).\n\nThe theme included is located within `docroot/sites/themes/custom/THEME`.\n\nThe Storybook Design System published to the `gh-pages` branch and is available\nat https://kanopi.github.io/REPO_NAME/\n\nLocally, running `fin npm run storybook` or `fin npm run build` will build the\nStorybook at http://storybook.${VIRTUAL_HOST}\n\nThe theme uses Webpack and NPM to manage packages and run scripts.\n\n- @TODO [Hot Reloading in Drupal](https://docs.emulsify.info/usage/hot-reload-drupal)\n\n#### Storybook\n\n- Theme development run `fin npm run develop`. This will watch for all twig, js, and sass changes within the components directory.\n- The development storybook URL http://storybook.${VIRTUAL_HOST}\n\n#### Storybook Webpack\nFor webpack storybook to work within a docksal container we needed to set `watchOptions` in `docroot/themes/custom/THEME/.storybook/webpack.config.js`\n```\nconfig.watchOptions = {\n  aggregateTimeout: 200,\n  poll: 1000,\n}\n```\n\n### Theme Commands\n\nThe following commands are available with Node and should be prefixed with the\ncommand `fin npm run`.\n\nCommand | Description\n--------|------------\n`commit`| git-cz\n`lint`| Lint JS\n`a11y`| Run a11y on theme\n`storybook`| Start storybook\n`build-storybook`| Build static storybook\n`deploy-storybook`| Generate storybook for github pages\n`webpack`| Run webpack\n`build`| Build storybook\n`develop`| Run storybook and webpack at the same time\n`test`| Run tests\n`twatch`| Watch tests run\n`coverage`| Check test coverage\n`format`| Clean up code format\n`lint-staged`| lint-staged\n`postinstall`| Patches packages\n`criticalcss`| Compile critical CSS assets\n\n\n## Composer Commands\n\nThe following commands are available with Composer and should be prefixed with\nthe command `fin composer`.\n\nThese are primarily run in CI tests, and in Lefthook pre-push githooks, but you\ncan still run them on your own if you wish.\n\nCommand | Description\n--------|------------\n`lint-php` | Analyzes the custom modules folder for programmatic and stylistic errors\n`code-sniff-modules` | Runs PHPcs on the custom modules folder\n`code-sniff-themes` | Runs PHPcs on the custom themes folder\n`code-sniff` | Runs `code-sniff-modules` and `code-sniff-themes`\n`code-fix-modules` | Runs PHPcbf on the custom modules folder\n`code-fix-themes` | Runs PHPcbf on the custom themes folder\n`code-fix` | Runs `code-fix-modules` `code-fix-themes` `rector-fix` `lint-php`\n`phpstan` | PHPStan focuses on finding errors in the custom modules and themes folders without actually running it.\n`rector-modules` | Dry run on the custom modules folder of automates that checks for deprecations\n`rector-themes` | Dry run on the custom themes folder of automates that checks for deprecations\n`rector-fix-modules` | Automates the refactoring of deprecations on the custom modules folder\n`rector-fix-themes` | Automates the refactoring of deprecations on the custom themes folder\n`rector-fix` | Runs `rector-fix-modules` and `rector-fix-themes`\n`code-check` | Runs `phpstan` `rector-modules` `rector-themes` `code-sniff`\n\n## Docksal Commands\n\nThe following commands are available with Docksal and should be prefixed with\nthe command `fin`\n\nCommand | Description\n--------|------------\n`composer` | Composer wrapper that executes within the CLI container.\n`init` | Init Command that starts the project from scratch.\n`init-site` | Called from `init`.\n`install-theme-tools` | Runs Emulsify/Storybook setup scripts.\n`npm` | NPM wrapper.\n`refresh` | Will get the database and files from Acquia with ACLIv2\n`share` | Opens a proxy server to your local computer using ngrok.io. Share in real time, or test locally.\n`pa11y` | Runs accessbility audits against the site\n\n### Pa11y Audits\n\nWe have a Docksal command that will run [pa11y-ci](https://github.com/pa11y/pa11y-ci) audits `fin pa11y`. When the command finishes the reports are available at the following url pa11y.VIRTUAL_HOST\n\nIf you want to change the configuration of the Pa11y tests you can edit the [.pa11yci.js](/tests/pa11y/.pa11yci.js) file.\n\nNote: This was cribbed from [Phase2](https://github.com/phase2/pa11y-dashboard)\n\n## Deployments\n\nDeployments are managed through Tugboat, CircleCI and the Acquia UI.\n\nCode flow:\n\n1. Create a PR from your branch that has your updates in it.\n   * CircleCI will also run code standards and rector checks against the PR.\n2. This will create a Tugboat environment to test your new feature/change in.\n   * Tugboat provides Lighthouse and Backstop visual regression testing.\n3. Once the code is ready, merge the PR in to the default branch.\n4. CircleCI will do a git push to the `dev` environment on Acquia\n   * We are using [Acquia Cloud Hooks](https://docs.acquia.com/cloud-platform/develop/api/cloud-hooks/) to do a Drupal config imports and database updates on deploys in Acquia.\n   * Note: If you update the major version of Drush you need to double check that version is available in Acquia.  I.E.  `drush11` or `drush10`. Currently, it's set to Drush 10.\n5. To deploy to production use the Acquia UI to move the code to the different environments\n\n## Solr\n\nWe are using Acquia Solr Search which defaults to Solr 7.\n\nWe have setup Solr on Docksal and Tugboat with environment specific config overrides in `settings.php`\n\n```\n$config['search_api.server.acquia_search_server'] = [\n  'backend_config' =\u003e [\n    'connector' =\u003e 'standard',\n    'connector_config' =\u003e [\n      'scheme' =\u003e 'http',\n      'host' =\u003e 'solr',\n      'path' =\u003e '',\n      'core' =\u003e 'search_api_solr_8.x-2.0',\n      'port' =\u003e '8983',\n    ],\n  ],\n];\n```\n\nThe Search API UI for editing the doesn't show the changes right away.  To validate the overrides run the following command `drush cget search_api.server.acquia_search_server --include-overridden`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkanopi%2Fdrupal-starter-acquia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkanopi%2Fdrupal-starter-acquia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkanopi%2Fdrupal-starter-acquia/lists"}