This project serves as a boilerplate to generate a new Craft CMS project through composer create-project
. It is an opinionated configuration made specifically for how I like to build sites with Craft.
The boilerplate creates a Craft 4.x build with a DDEV configuration for local development. If you prefer a different local development environment than DDEV, you're free to adjust the setup process accordingly.
To generate a new Craft CMS project with this package, run the following, where <path>
is the system path you want to be the project root:
composer create-project evanwarner/craft-boilerplate <path>
Note: As part of the project creation process this file will be renamed to SETUP.md
, while the file README-site.md
will become README.md
, as it is intended to be the README file that lives on with the generated project.
The following should be completed immediately after generating a new project. Once complete, this file can be deleted.
cd
into the project rootgit init
git commit --allow-empty -m "Initial commit"
- Add desired git remote (assuming named
origin
) git push -u origin master
git checkout -b develop
- Rename
/webroot
to an appropriate name for this project (to match the production server)- Update the
docroot
config in/.ddev/config.yaml
to match - Update the
config.webroot
variable inpackage.json
to match - Update the
* > aliases > @webroot
path in/craft/config/general.php
to match - Update the paths in
.gitignore
to match - Update the paths in the Getting Started section in
README.md
to match
- Update the
- (Optional) You may rename
/craft
to a preferred name for this project- Update the
composer_root
config in/.ddev/config.yaml
to match - Update the
web_environment > CRAFT_CMD_ROOT
config in/.ddev/config.yaml
to match - Update the
config.craft
variable inpackage.json
to match - Update the shared bootstrap
require
path in/[webroot]/index.php
to match:require dirname(__DIR__) . '/[craft]/bootstrap.php';
- Update the paths in
.gitignore
to match - Update the paths in the Getting Started section in
README.md
to match - Update the paths in the File Organization section in
README.md
to match - Be aware of this change as you follow the remaining steps in this setup
- Update the
- Ensure permissions of these directories
chmod 774 /[craft]/storage
chmod 774 /[craft]/vendor
- Ensure permissions on the craft cli executable
chmod 755 /[craft]/craft
- Edit the Project Name and Project Description in
README.md
- Edit the
name
config in/.ddev/config.yaml
- Set the
name
anddescription
inpackage.json
- Set the
name
anddescription
in/[craft]/composer.json
- Set the
CRAFT_APP_ID
in/[craft]/.env
- Set the
SYSTEM_NAME
in/[craft]/.env
- Set the
SITE_NAME
in/[craft]/.env
- Configure the project domains
- Edit the project domain under the
additional_fqdns
config in/.ddev/config.yaml
- Set the
SITE_URL
in/[craft]/.env
- Set the
start_url
in/src/manifest.json
to the production domain
- Edit the project domain under the
- Set the
SYSTEM_EMAIL
in/[craft]/.env
- Set the
SYSTEM_SENDER_NAME
in/[craft]/.env
- Set the
SYSTEM_REPLY_TO_EMAIL
in/[craft]/.env
- Set the
TEST_EMAIL
in/[craft]/.env
- Comment out or delete the www and https rewrite settings in
/src/.htaccess
as desired
- From the project root run
npm run dev
to compile source files and watch for changes
- Adjust the additional environment configs (versions, ports) in
/.ddev/config.yaml
as desired - From the project root run
ddev start
- Create a
CRAFT_SECURITY_KEY
in/[craft]/.env
ddev craft setup/security-key
(or generate one manually)
- Run the Craft installation at
http://[local hostname]/manage
- Set the Name of the primary site to
$SITE_NAME
- Set the URL of the primary site to
$SITE_URL
- Set the Name of the primary site to
- In Settings > General set the system Time Zone appropriately
- In Settings > Sites set the Name of the site group as desired
- Delete this file.
git add -A
git commit -m "Add and configure site boilerplate"
git push -u origin develop