{"id":22854674,"url":"https://github.com/kanopi/saplings","last_synced_at":"2026-01-11T13:42:39.134Z","repository":{"id":197935069,"uuid":"699816948","full_name":"kanopi/saplings","owner":"kanopi","description":"Drupal recipe to start a build project. Designed to work well with kanopi/drupal-starter.","archived":false,"fork":false,"pushed_at":"2025-04-28T16:39:32.000Z","size":7803,"stargazers_count":15,"open_issues_count":2,"forks_count":1,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-04-28T17:34:29.838Z","etag":null,"topics":["archbee","do-not-archive","drupal-recipe","internal-tool","saplings"],"latest_commit_sha":null,"homepage":"https://kanopi.github.io/saplings","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","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":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-10-03T12:00:18.000Z","updated_at":"2025-04-04T09:38:42.000Z","dependencies_parsed_at":"2023-12-16T19:42:48.936Z","dependency_job_id":"96351074-249c-4b10-a017-2d66e051b30a","html_url":"https://github.com/kanopi/saplings","commit_stats":null,"previous_names":["kanopi/drupal-build-starter","kanopi/saplings"],"tags_count":54,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanopi%2Fsaplings","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanopi%2Fsaplings/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanopi%2Fsaplings/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanopi%2Fsaplings/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kanopi","download_url":"https://codeload.github.com/kanopi/saplings/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252831178,"owners_count":21810779,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["archbee","do-not-archive","drupal-recipe","internal-tool","saplings"],"created_at":"2024-12-13T07:08:03.876Z","updated_at":"2025-05-07T06:46:52.383Z","avatar_url":"https://github.com/kanopi.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"![saplings](https://github.com/kanopi/saplings/assets/5177009/a6377e32-deb2-49d8-873a-f3dd5a36fa7c)\n\n# Saplings - Drupal Build Starter Recipe\n\nThis recipe is designed to help start a highly configured Drupal project.\n\nRather than one large Recipe that tries to do everything, we've broken it up\ninto multiple sub-recipes.  This recipe installs them all, but you can also\ninstall the sub-recipes on their own.\n\n* [kanopi/gin-admin-experience](https://github.com/kanopi/gin-admin-experience)\n* [kanopi/saplings-base](https://github.com/kanopi/saplings-base)\n* [kanopi/saplings-editorial](https://github.com/kanopi/saplings-editorial)\n* [kanopi/saplings-launch](https://github.com/kanopi/saplings-launch)\n* [kanopi/saplings-tests](https://github.com/kanopi/saplings-tests) [Cypress]\n* [kanopi/saplings-content-types](https://github.com/kanopi/saplings-content-types)\n  * [kanopi/saplings-content-base](https://github.com/kanopi/saplings-content-base)\n  * [kanopi/saplings-component-types](https://github.com/kanopi/saplings-component-types)\n    * [kanopi/saplings-component-base](https://github.com/kanopi/saplings-component-base)\n      * [kanopi/saplings_paragraphs](https://github.com/kanopi/saplings_paragraphs) [Module]\n  * [kanopi/saplings-media](https://github.com/kanopi/saplings-media)\n    * [kanopi/imagemagick-configuration](https://github.com/kanopi/imagemagick-configuration)\n  * [kanopi/saplings-theme](https://github.com/kanopi/saplings-theme)\n    * [kanopi/saplings_child](https://github.com/kanopi/saplings_child) [Theme]\n  * [kanopi/saplings_custom](https://github.com/kanopi/saplings_custom) [Module]\n\n\n---\n\n\u003c!-- Created in Lucid at https://lucid.app/lucidchart/6711555d-82fc-4ea0-8cd2-9f1c65ecb4b0/edit --\u003e\n![Saplings ERD](https://github.com/kanopi/saplings/assets/5177009/3b348086-bfcd-427e-adf5-c6bcd1fc2cc7)\n\n\n\n---\n\n## Requiring and Applying this recipe\n\nApply a recipe to Drupal installed with a minimal profile.  See [below](#setting-up-a-quick-testing-environment)\n is you want to set up a quick testing environment.\n\n- Follow the instructions in [kanopi/drupal-starter](https://github.com/kanopi/drupal-starter)\n to start a new project as it is configured for recipes and tooling needed.\n- Run `fin composer require kanopi/saplings:^1` to require this repository.\n- Run `fin recipe-apply ../recipes/saplings` to apply this recipe.\n- Run the following command to unpack the dependencies from all kanopi/saplings recipes to the site project's composer.json file.\n```\nfin recipe-unpack kanopi/saplings \u0026\u0026 fin recipe-unpack kanopi/gin-admin-experience \u0026\u0026 fin recipe-unpack kanopi/saplings-base \u0026\u0026 fin recipe-unpack kanopi/saplings-editorial \u0026\u0026 fin recipe-unpack kanopi/saplings-launch \u0026\u0026 fin recipe-unpack kanopi/saplings-content-types \u0026\u0026 fin recipe-unpack kanopi/saplings-component-types \u0026\u0026 fin recipe-unpack kanopi/saplings-component-base \u0026\u0026 fin recipe-unpack kanopi/saplings-content-base \u0026\u0026 fin recipe-unpack kanopi/saplings-media \u0026\u0026 fin recipe-unpack kanopi/imagemagick-configuration \u0026\u0026 fin recipe-unpack kanopi/saplings-theme \u0026\u0026 fin recipe-unpack kanopi/saplings-editorial \u0026\u0026 fin recipe-unpack kanopi/saplings-content-base-header \u0026\u0026 fin recipe-unpack kanopi/saplings-content-base-seo \u0026\u0026 fin recipe-unpack kanopi/saplings-events \u0026\u0026 fin recipe-unpack drupal/events \u0026\u0026 fin recipe-unpack drupal/events_calendar \u0026\u0026 fin recipe-unpack drupal/events_locations \u0026\u0026 fin recipe-unpack kanopi/imagemagick-configuration \u0026\u0026 fin recipe-unpack drupal/locations \u0026\u0026 fin recipe-unpack kanopi/saplings-full-html-editor \u0026\u0026 fin recipe-unpack drupal/tour_core\n```\n- Export configuration.\n\nYou can then remove the recipe once it has been applied and unpacked as the\nconfiguration is now in your Drupal, and the dependencies are in your composer.\n\n- `fin composer remove kanopi/saplings`\n- Export configuration.\n\n\n---\n\n## Roadmap\n\n### Phase 1\nFeature complete.\n\n### Phase 2\n* Break Page and Post Content types into their own recipes.\n* Additional components as needed.\n* [kanopi/saplings-ai](https://github.com/kanopi/saplings-ai) - [WIP] Helpful AI\n  functionality for content creators.\n* [kanopi/saplings-person](https://github.com/kanopi/saplings-person) - [WIP]\n  Creates a Person content type and related configuration.\n* [kanopi/saplings-events](https://github.com/kanopi/saplings-events) -  [WIP]\n  Configuration for Saplings Events\n* [kanopi/saplings-demo-events](https://github.com/kanopi/saplings-demo-events)\n- [WIP] Demo content for Saplings Events\n* [kanopi/solr-search-pantheon-recipe](https://github.com/kanopi/solr-search-pantheon-recipe)\n  - The goal is to configure Solr for Pantheon on a site that isn't going to use\n  saplings.\n\n### Phase 3\nInvestigate extending Drupal CMS' recipes.\n\n### Other Kanopi Recipes:\n* [kanopi/saplings-domain](https://github.com/kanopi/saplings-domain) - Installs\n  and configures Domain modules.\n* [kanopi/saplings-demo-content](https://github.com/kanopi/saplings-demo-content)\n  - Demo content for Saplings.\n* [kanopi/saplings-solr](https://github.com/kanopi/saplings-solr) - Configures a\n  back-end and front-end Solr search customized for Saplings on Pantheon.\n* [kanopi/password-policy-90-days](https://packagist.org/packages/kanopi/password-policy-90-days)\n  - Installs and configures Password Policy and sets a 90 day expiration default.\n* [kanopi/remote-video-youtube-lite](https://packagist.org/packages/kanopi/remote-video-youtube-lite)\n  - Configures Remote Video Media entity to use Lite YouTube Embed.\n\n### Other Saplings related modules\n* [kanopi/saplings_navbar](https://github.com/kanopi/saplings_navbar) - Creates\na navbar pattern for Saplings that allows the parent to be a link and then have\na dropdown indicator to access child menu items.\n\n---\n\n## Contributing/Testing\nWe'd love your help with testing, ideation, and development.\n\n### Setting up a quick testing environment\nDecide on a name for your testing environment.  In this example, I will use\n`kanland`.\n\n* Checkout kanopi/drupal-starter into it's own repo.\n* `git clone git@github.com:kanopi/drupal-starter.git kanland \u0026\u0026 cd kanland`\n* Open /.docksal/docksal.env in your editor.\n* Update row 28 `hostingsite=\"kanland\"` and save.\n* Run `fin init`\n* The build will fail with the following message as we haven't installed Drupal\n  yet. `Error: Class \"Drupal\\user\\Entity\\User\" not found`\n* Run `fin drush si minimal -y \u0026\u0026 fin drush uli` to install Drupal and log in.\n* Click on the one-time-login to verify the minimal install happened.\n* Require this repository: `fin composer require kanopi/saplings:^1`\n* Apply the recipe: `fin recipe-apply saplings`\n\nTo reset after you have done some testing:\n\n* Run `fin init`\n* The build will fail with the following message as we haven't installed Drupal\n  yet. `Error: Class \"Drupal\\user\\Entity\\User\" not found`\n* Run `fin drush si minimal -y \u0026\u0026 fin drush uli` to install Drupal and log in.\n\n### Requiring recipes\nUse composer the require the recipes needed. We currently host on our packagist.\n\n### Applying and Unpacking recipes in Drupal\nTo apply contrib/composer installed recipes, run the following commands:\n\n`fin recipe-apply recipe-name`\n\nEach recipe can have composer dependencies. \"Unpacking\" takes these dependencies\nfrom the recipe and applies them to the project's composer.json file.\n\nTo unpack contrib/composer installed recipes, run the following commands:\n\n`fin recipe-unpack recipe-name`\n\n## Dependencies\n\nSee chart and list in [/docs/dependencies.md](/docs/dependencies.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkanopi%2Fsaplings","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkanopi%2Fsaplings","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkanopi%2Fsaplings/lists"}