Drupal Stack Template
An opinionated Drupal + Nostr sandbox project with some default configurations. Some opinions are coming from drpl.ai.sebastix.dev which is a sandbox / playground project experimenting to use AI with Drupal.
Designed as an AI template for https://getstacks.dev/ for let Drupal developers get started building something with Nostr. Or, if you're up to it, you can also start as a non-dev or non-Drupal dev to take the steep learning curve how to build a very flexible website, webapp or platform.
[ ] Setup Docker config
[ ] Create separate Docker image for development
[ ] Add Stacks config with
stacks init
[ ] Add
stacks.json
[ ] Add
CONTEXT.md
[ ] Add Nostr-PHP library
[ ] https://packagist.org/packages/swentel/nostr-php
[ ] Add Drupal MCP server contrib module
[ ] https://www.drupal.org/project/mcp
[ ] Add Nostr contrib modules
[ ] Add TailwindCSS v4 + daisyUI v5 theme contribs
[ ] https://www.drupal.org/project/tailwind_css
[ ] https://www.drupal.org/project/daisy_ui
[ ] Create / generate some artwork for template
For the Stacks config:
[ ] Add drupalatyourfingertips.com for building Drupal stuff
[ ] Add nostr-php.dev as a resource for using the Nostr-PHP package as a helper library
[ ] Add nostrbook.dev as a resource for doing Nostr stuff
[ ] Add instructions how to add custom code within Drupal with modules
[ ] Add instructions how to build templates with the Twig templating engine with a custom theme
[ ] Add instructions how to apply styling and add UI components within Drupal with a custom theme
[ ] Add instructions to use AI agents within Drupal
[ ] Add instructions how to update Drupal core + contribs
What is Drupal?
Drupal is well-known as a CMS, but in the last decade it's transformed into a framework for creating all kinds of applications.
It's a framework which excels in flexibility.
But this flexibility comes with a price. How to use Drupal has a steep learning curve. Because of the great flexibility you can do stuff in many ways and often leads to a complex architecture on the long-term.
Why this Stack template?
As it's not easy to use Drupal as a beginner, this is where AI can help you a lot.
That's why the Drupal community is putting a great effort in building tools for integrating AI and are pioneering with an AI strategy with the AI initiative.
With this template it's the goal to help you with the following things:
Create and configure content types
Page building
Content generation
Optimize SEO
Create a custom theme with your own design (design-to-code transformations)
...
Mandy of these things will be done by AI micro agents within your Drupal instance. With Stacks you are able to orchestrate these agents.
What can you build with Drupal and this Stacks template?
A simple website with pages
A blog
A portfolio
A news site
An e-commerce platform
...
Docker
See docker/docker-compose.yml
.
Start development
cd docker
docker compose up -d
docker compose exec drpl_drupal bash
composer install
drush si standard
for a clean site installDelete existing entities
drush entity-delete shortcut
delete shortcut entities
Enable devel module
drush en devel
Generate a new UUID for the site
drush uuid
Save this site UUID value site in
system.site.yml
drush cset system.site uuid <the_uuid>
for setting the UUID in the databasedrush cim
for importing current config filesdrush cr
Navigate to http://localhost in your browser
What contrib modules & themes are included?
Config Split
Config Ignore
Drush
Symfony Mailer
Reroute Email
Paragraphs
Admin Toolbar
Admin Dialogs
Gin
Gin Login
Gin Toolbar
Admin Dialogs
Pathauto
Masquerade
Metatag
Ultimate Cron
Media Library Edit
Markdown Easy
WebP
Swiper Formatter
Twig Tweak
Nostr internet identifier NIP-05
Nostr Simple publish
Nostr long-form content NIP-23
Nostr Dev Kit (NDK)
Tailwind CSS
Daisy UI
Development only:
Coder
Devel
Security review
Webprofiler
Drupal Rector
Config split configurations
$config['config_split.config_split.dev']['status'] = TRUE|FALSE;
$config['config_split.config_split.acceptance']['status'] = TRUE|FALSE;
$config['config_split.config_split.production']['status'] = TRUE|FALSE;
settings.local.php
Security checks
@TODO - https://github.com/FriendsOfPHP/security-advisories and https://github.com/fabpot/local-php-security-checker
Code checks
@TODO - https://www.drupal.org/project/coder
Tests
@TODO