Reusable Drupal recipes for Sous Drupal Project. Install the packages your project needs through Composer. Each recipe is a separate ZIP; sharing a repository and release version does not install the entire collection.
Every package uses the fourkitchens/ Composer namespace and the collection's
shared version, beginning with 2.0.0.
| Package | Purpose | Installation choice |
|---|---|---|
| sous-admin | Gin, Navigation, roles, menu permissions and management Views | Starter base |
| sous-dashboard | Site admin and Editor dashboards | Starter base |
| sous-emulsify | Emulsify theme and tools | Starter base |
| sous-workflow | Shared Editorial moderation and scheduled publishing | Starter/shared dependency |
| sous-content-base | Shared Page/Frontpage fields, tabs, teasers and aliases | Shared dependency |
| sous-content-types | Page and Frontpage with Body | Default content |
| sous-formats | Text formats, CKEditor 5 and Linkit defaults | Starter base |
| sous-media | File, Image, Video and media authoring | Starter base |
| sous-events | Recurring events, event types, teasers and upcoming/past embeds | Optional recipe |
| sous-news-post | News Posts, bylines, categories, teasers and a Recent News embed | Optional recipe |
| sous-profile | Profiles, automatic names, images, bios and searchable teasers | Optional recipe |
| sous-content-list | Hand-picked teasers and a term-filtered automatic listing | Main course component |
| sous-gallery | An image and video gallery | Main course component |
| sous-seo | Redirects, sitemaps, breadcrumbs and SEO integrations | Starter base |
| sous-alerts | Site-wide alert banners with scheduling and dismissal | Optional recipe |
| sous-search | Database search with a results block and content type filter | Optional recipe |
| sous-dev-tools | Local debugging, file proxying and user impersonation | Starter base |
| sous-paragraph-types | Text, media, accordion, tabs, quote, embed and table components | Paragraphs building blocks |
| sous-paragraphs | Layout Paragraphs on Page/Frontpage without Body | Optional composition |
| sous-core-layout-builder | Native layouts with matching nested inline block types | Optional composition |
| sous-config-split | Local/staging development tools excluded from production | Starter base |
Events, News Post, Profile, Alerts and Search are offered in the starter's optional recipe menu. The starter includes Content List and Gallery with the Paragraphs and Layout Builder main courses.
The content compositions share a Body-free base. The default content package adds Body; Paragraphs adds its component reference instead. Page and Frontpage place Title above the horizontal tabs, with no separate SEO Title or Info tab. Layout Builder adds no Paragraphs recipe, modules or configuration.
Navigation, included by Admin, requires core Layout Builder, and Layout Paragraphs requires Layout Discovery. Those module dependencies do not enable Layout Builder on the Paragraphs composition's entity displays.
Add this scoped Composer repository to the site's composer.json:
{
"type": "composer",
"url": "https://fourkitchens.github.io/sous-drupal-packages/",
"only": ["fourkitchens/sous-*"]
}Before requiring recipes, copy the complete 2.0.0 patch directory into the site root, including its manifest. Sous Drupal Project already provides these files. Allow and install Composer Patches 2, then configure the root manifest:
ddev composer config allow-plugins.cweagans/composer-patches true
ddev composer config extra.composer-patches.patches-file patches/patches.json
ddev composer require cweagans/composer-patches:^2.0Composer reads this manifest from the project root; the complete manifest only
applies patches for installed packages. Commit patches/ and patches.lock.json
with the site's Composer files.
Require and apply a recipe:
ddev composer require fourkitchens/sous-admin:^2.0
ddev composer patches-relock
ddev composer patches-repatch
ddev drush recipe /var/www/html/web/recipes/sous-adminRecipes are applied once during setup and then unpacked, so the site owns its dependencies and configuration.
Use Node.js 24.22.1, npm 11.21.1, PHP 8.4+, Composer and zip.
npm ci
npm test
npm run create-package sous-eventThe generator copies recipe-template into packages/sous-event
and fills in its name. Add the recipe's configuration, module requirements and
Sous dependencies before using it. Packages are discovered automatically by the
archive builder; no central package registry needs editing.
npm test checks package manifests, syntax, code standards and formatting. The CI
recipes job applies recipes to fresh SQLite Drupal sites in four compositions. See
CONTRIBUTING.md for contribution and local build instructions.
Merges to main automatically create a semantic release, publish every package's
ZIP at the same version and update the static Composer index. The first release
is 2.0.0; see RELEASING.md for version rules and setup.
Distributed under GPL-2.0-or-later, matching Sous Drupal Project. Copyright and dependency notices are retained in NOTICE and the packages.