craftcms/craft6-revamp
A revamped Craft CMS 6 starter project from the Craft team, offering a modern scaffold for building content-managed PHP sites. It provides updated structure and configuration to help developers bootstrap Craft 6 installations quickly and explore the next generation of Craft workflows.
composer create-project, then the code is ours. That makes the economic case a one-time time-to-first-deploy saving (scaffolding, env/config wiring, deploy scripts, module skeleton) rather than a recurring licensing or integration cost. MIT license means zero procurement friction.config/project/*.yaml." Variance between project repos is the hidden cost this removes.php craft, Eloquent → Elements, Blade → Twig, providers → modules) is quietly the most valuable artifact here. It suggests we can staff Craft work from our existing PHP/Laravel talent pool instead of hiring Craft specialists — a real cost-of-team input.What this should not drive: any decision to adopt Craft where the deciding factor was "this scaffold looks nice." The scaffold is a convention layer; the platform is the actual commitment.
Adopt as a starting point when:
php craft up in the pipeline, allowAdminChanges => false in production.composer update.Look elsewhere when:
config/, composer.json, and CHANGELOG.md between tags before merging — a scaffold release that silently reshapes config/project/ reshapes the content model.Due-diligence checklist before we commit (one afternoon):
.env.example → config/general.php → config/project/ in that order; confirm the conventions match how we actually deploy.config/project/ and composer.json between 1.1.1 and 1.1.2 to confirm the patch is inert.php craft up. If that round trip is clean, the scaffold is doing its job.To executives — one paragraph: We are evaluating a free, MIT-licensed starting template for Craft CMS 6 projects. It is not a vendor dependency and carries no license cost, no subscription, and no ongoing upgrade obligation — we copy it once, own the result, and the risk is bounded to a single project bootstrap. Its value is process, not code: it encodes a deploy model where the content model lives in version control alongside the code, which is the difference between a CMS deployment we can review, roll back, and reproduce, and one that depends on someone remembering what they clicked in an admin panel. The decision in front of us is really about whether we standardize on Craft 6 for content-heavy sites; this template makes that decision cheaper to execute and easier to staff, because our existing PHP/Laravel engineers can be productive on it quickly rather than requiring Craft specialists.
To engineering — the short version:
laravel/laravel, not as a package. composer create-project, then it's our repo. Pin a tag and diff releases; don't track a branch.config/project/ as committed state. Local dev allowAdminChanges => true, production false plus php craft project-config/apply --force in the deploy. Never let content-model changes happen in the production CP.project-config/diff in CI), and take a database dump before any --force.config/app.php, not in Twig and not in a one-off plugin. Event hooks on Entry::EVENT_AFTER_SAVE, EVENT_REGISTER_SITE_URL_RULES, Users::EVENT_AFTER_LOGIN cover most integration needs.composer install --no-dev --optimize-autoloader → php craft up --interactive=0 → clear-caches all → supervised queue worker. Twig compile caches under storage/runtime/compiled-templates may need a manual purge when template paths move..with([...]), and Entry::find() inside a {% for %}. Also verify devMode is off before anyone investigates a "slow staging environment."Craft::$app->getFoo(), not app(Foo::class). Any ported Laravel code will fight us at exactly that seam.The ask: A one-sprint, timeboxed spike: stand up a reference project from the scaffold, prove the project-config round trip across two machines, and produce a short written verdict on whether these conventions fit how we actually ship. Success criteria are the working round trip and a deploy we can reproduce from a clean checkout — not feature delivery. If the spike succeeds, the follow-on decision is platform standardization on Craft 6, which should be made on platform merits with the scaffold treated as a solved implementation detail; if it fails, we have spent one sprint and learned it cheaply rather than discovering it mid-build.
How can I help you explore Laravel packages today?