Craft CMS + Twig Starter

This is a basic blog starter project for creating Craft CMS using the native Twig templating language. It's a simple install that requires no database dump and no front-end tooling. It includes a single, first-party plugin (CKeditor) to support a richer authoring experience.

Tip

Check out our full list of starter projects!

Features

  • Dedicated places to edit global information and the primary top-level pages (Home, Blog, and Guestbook);
  • Blog and category feeds;
  • Elegant content composition via CKEditor and nested entries;
  • Front-end Guestbook form, protected by login;
  • Arbitrary Pages structure for additional, hierarchical content;
  • Preconfigured, Craft Cloud-ready asset storage;

The Entries sidebar has also been configured to make these pages and sections easier to find for this setup.

Installation

  1. Clone this repository and move into the folder:

    git clone https://github.com/craftcms/starter-twig.git
    cd starter-twig/
  2. Start DDEV:

    ddev start
  3. Install dependencies:

    ddev composer install
  4. Run the Craft setup wizard:

    ddev craft install

Congratulations—Craft has been installed! You can start exploring the control panel by visiting https://starter-twig.ddev.site/admin in your browser, or running ddev launch admin.

Post-Install

Control Panel

The Craft control panel is available at https://starter-twig.ddev.site/admin. Log in with the username and password you created during installation!

  • Create some content by visiting the Entries screen;
  • Use Live Preview to visualize edits as you make them;
  • Adjust or augment the content model by exploring the Settings screen;
  • Open the front-end by clicking the site name in the upper-left corner;

Tip

You can always get back to the control panel by appending /admin to the project’s base URL.

Project Structure

This project was scaffolded from our blank-slate started kit, and therefore follows its overall directory structure and configuration scheme.

Licensing

The free Craft Soloedition is active by default, and will automatically acquire a perpetual license to evaluate, develop, and deploy a site for yourself or a friend. This key will be written out to config/license.key, and is safe to commit to version control.

You can upgrade to Craft Team or Pro any time! Read more about licensing in the Knowledge Base.

Tips + Tricks

Running on a Different Domain

The DDEV configuration files shipped with this project have a hard-coded project “name” that determines (among other things) the URL prefix. If you would like to change this (say, prior to pushing the project to a new remote), open .ddev/config.yml and update the name key.

Apply that change by running ddev start in the project directory. The site will restart, and be available at https://{new-name}.ddev.site!

Pushing to a new Remote

When cloning a git repository, it typically sets up the origin as a default remote. To push the project to your own repository, follow these steps:

  1. Remove the default origin:

    git remote remove origin
  2. Create a new repository. This can be on GitHub, or any other git provider.

  3. Add the new origin:

    git remote add origin https://github.com/your-username-or-org/new-repo-name.git
  4. Push to the new origin:

    git push origin

Tip

You may be able to create repositories in contexts that your local environment is not authorized to read from or write to! If you encounter permissions issues at this stage, consult the git provider’s documentation.

Getting Help

If you have any questions or suggestions, you can always reach us at support@craftcms.com or post a GitHub issue.

Thanks for trying Craft!

🍋

About

A simple starter for Craft CMS

Resources

Code of conduct

Contributing

Security policy

Stars

11 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Craft CMS + Twig Starter

This is a basic blog starter project for creating Craft CMS using the native Twig templating language. It's a simple install that requires no database dump and no front-end tooling. It includes a single, first-party plugin (CKeditor) to support a richer authoring experience.

Tip

Check out our full list of starter projects!

Features

  • Dedicated places to edit global information and the primary top-level pages (Home, Blog, and Guestbook);
  • Blog and category feeds;
  • Elegant content composition via CKEditor and nested entries;
  • Front-end Guestbook form, protected by login;
  • Arbitrary Pages structure for additional, hierarchical content;
  • Preconfigured, Craft Cloud-ready asset storage;

The Entries sidebar has also been configured to make these pages and sections easier to find for this setup.

Installation

  1. Clone this repository and move into the folder:

    git clone https://github.com/craftcms/starter-twig.git
    cd starter-twig/
  2. Start DDEV:

    ddev start
  3. Install dependencies:

    ddev composer install
  4. Run the Craft setup wizard:

    ddev craft install

Congratulations—Craft has been installed! You can start exploring the control panel by visiting https://starter-twig.ddev.site/admin in your browser, or running ddev launch admin.

Post-Install

Control Panel

The Craft control panel is available at https://starter-twig.ddev.site/admin. Log in with the username and password you created during installation!

  • Create some content by visiting the Entries screen;
  • Use Live Preview to visualize edits as you make them;
  • Adjust or augment the content model by exploring the Settings screen;
  • Open the front-end by clicking the site name in the upper-left corner;

Tip

You can always get back to the control panel by appending /admin to the project’s base URL.

Project Structure

This project was scaffolded from our blank-slate started kit, and therefore follows its overall directory structure and configuration scheme.

Licensing

The free Craft Soloedition is active by default, and will automatically acquire a perpetual license to evaluate, develop, and deploy a site for yourself or a friend. This key will be written out to config/license.key, and is safe to commit to version control.

You can upgrade to Craft Team or Pro any time! Read more about licensing in the Knowledge Base.

Tips + Tricks

Running on a Different Domain

The DDEV configuration files shipped with this project have a hard-coded project “name” that determines (among other things) the URL prefix. If you would like to change this (say, prior to pushing the project to a new remote), open .ddev/config.yml and update the name key.

Apply that change by running ddev start in the project directory. The site will restart, and be available at https://{new-name}.ddev.site!

Pushing to a new Remote

When cloning a git repository, it typically sets up the origin as a default remote. To push the project to your own repository, follow these steps:

  1. Remove the default origin:

    git remote remove origin
  2. Create a new repository. This can be on GitHub, or any other git provider.

  3. Add the new origin:

    git remote add origin https://github.com/your-username-or-org/new-repo-name.git
  4. Push to the new origin:

    git push origin

Tip

You may be able to create repositories in contexts that your local environment is not authorized to read from or write to! If you encounter permissions issues at this stage, consult the git provider’s documentation.

Getting Help

If you have any questions or suggestions, you can always reach us at support@craftcms.com or post a GitHub issue.

Thanks for trying Craft!

🍋

About

A simple starter for Craft CMS

Resources

Code of conduct

Contributing

Security policy

Stars

11 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Craft CMS + Twig Starter

This is a basic blog starter project for creating Craft CMS using the native Twig templating language. It's a simple install that requires no database dump and no front-end tooling. It includes a single, first-party plugin (CKeditor) to support a richer authoring experience.

Tip

Check out our full list of starter projects!

Features

  • Dedicated places to edit global information and the primary top-level pages (Home, Blog, and Guestbook);
  • Blog and category feeds;
  • Elegant content composition via CKEditor and nested entries;
  • Front-end Guestbook form, protected by login;
  • Arbitrary Pages structure for additional, hierarchical content;
  • Preconfigured, Craft Cloud-ready asset storage;

The Entries sidebar has also been configured to make these pages and sections easier to find for this setup.

Installation

  1. Clone this repository and move into the folder:

    git clone https://github.com/craftcms/starter-twig.git
    cd starter-twig/
  2. Start DDEV:

    ddev start
  3. Install dependencies:

    ddev composer install
  4. Run the Craft setup wizard:

    ddev craft install

Congratulations—Craft has been installed! You can start exploring the control panel by visiting https://starter-twig.ddev.site/admin in your browser, or running ddev launch admin.

Post-Install

Control Panel

The Craft control panel is available at https://starter-twig.ddev.site/admin. Log in with the username and password you created during installation!

  • Create some content by visiting the Entries screen;
  • Use Live Preview to visualize edits as you make them;
  • Adjust or augment the content model by exploring the Settings screen;
  • Open the front-end by clicking the site name in the upper-left corner;

Tip

You can always get back to the control panel by appending /admin to the project’s base URL.

Project Structure

This project was scaffolded from our blank-slate started kit, and therefore follows its overall directory structure and configuration scheme.

Licensing

The free Craft Soloedition is active by default, and will automatically acquire a perpetual license to evaluate, develop, and deploy a site for yourself or a friend. This key will be written out to config/license.key, and is safe to commit to version control.

You can upgrade to Craft Team or Pro any time! Read more about licensing in the Knowledge Base.

Tips + Tricks

Running on a Different Domain

The DDEV configuration files shipped with this project have a hard-coded project “name” that determines (among other things) the URL prefix. If you would like to change this (say, prior to pushing the project to a new remote), open .ddev/config.yml and update the name key.

Apply that change by running ddev start in the project directory. The site will restart, and be available at https://{new-name}.ddev.site!

Pushing to a new Remote

When cloning a git repository, it typically sets up the origin as a default remote. To push the project to your own repository, follow these steps:

  1. Remove the default origin:

    git remote remove origin
  2. Create a new repository. This can be on GitHub, or any other git provider.

  3. Add the new origin:

    git remote add origin https://github.com/your-username-or-org/new-repo-name.git
  4. Push to the new origin:

    git push origin

Tip

You may be able to create repositories in contexts that your local environment is not authorized to read from or write to! If you encounter permissions issues at this stage, consult the git provider’s documentation.

Getting Help

If you have any questions or suggestions, you can always reach us at support@craftcms.com or post a GitHub issue.

Thanks for trying Craft!

🍋

About

A simple starter for Craft CMS

Resources

Code of conduct

Contributing

Security policy

Stars

11 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Craft CMS + Twig Starter

This is a basic blog starter project for creating Craft CMS using the native Twig templating language. It's a simple install that requires no database dump and no front-end tooling. It includes a single, first-party plugin (CKeditor) to support a richer authoring experience.

Tip

Check out our full list of starter projects!

Features

  • Dedicated places to edit global information and the primary top-level pages (Home, Blog, and Guestbook);
  • Blog and category feeds;
  • Elegant content composition via CKEditor and nested entries;
  • Front-end Guestbook form, protected by login;
  • Arbitrary Pages structure for additional, hierarchical content;
  • Preconfigured, Craft Cloud-ready asset storage;

The Entries sidebar has also been configured to make these pages and sections easier to find for this setup.

Installation

  1. Clone this repository and move into the folder:

    git clone https://github.com/craftcms/starter-twig.git
    cd starter-twig/
  2. Start DDEV:

    ddev start
  3. Install dependencies:

    ddev composer install
  4. Run the Craft setup wizard:

    ddev craft install

Congratulations—Craft has been installed! You can start exploring the control panel by visiting https://starter-twig.ddev.site/admin in your browser, or running ddev launch admin.

Post-Install

Control Panel

The Craft control panel is available at https://starter-twig.ddev.site/admin. Log in with the username and password you created during installation!

  • Create some content by visiting the Entries screen;
  • Use Live Preview to visualize edits as you make them;
  • Adjust or augment the content model by exploring the Settings screen;
  • Open the front-end by clicking the site name in the upper-left corner;

Tip

You can always get back to the control panel by appending /admin to the project’s base URL.

Project Structure

This project was scaffolded from our blank-slate started kit, and therefore follows its overall directory structure and configuration scheme.

Licensing

The free Craft Soloedition is active by default, and will automatically acquire a perpetual license to evaluate, develop, and deploy a site for yourself or a friend. This key will be written out to config/license.key, and is safe to commit to version control.

You can upgrade to Craft Team or Pro any time! Read more about licensing in the Knowledge Base.

Tips + Tricks

Running on a Different Domain

The DDEV configuration files shipped with this project have a hard-coded project “name” that determines (among other things) the URL prefix. If you would like to change this (say, prior to pushing the project to a new remote), open .ddev/config.yml and update the name key.

Apply that change by running ddev start in the project directory. The site will restart, and be available at https://{new-name}.ddev.site!

Pushing to a new Remote

When cloning a git repository, it typically sets up the origin as a default remote. To push the project to your own repository, follow these steps:

  1. Remove the default origin:

    git remote remove origin
  2. Create a new repository. This can be on GitHub, or any other git provider.

  3. Add the new origin:

    git remote add origin https://github.com/your-username-or-org/new-repo-name.git
  4. Push to the new origin:

    git push origin

Tip

You may be able to create repositories in contexts that your local environment is not authorized to read from or write to! If you encounter permissions issues at this stage, consult the git provider’s documentation.

Getting Help

If you have any questions or suggestions, you can always reach us at support@craftcms.com or post a GitHub issue.

Thanks for trying Craft!

🍋

About

A simple starter for Craft CMS

Resources

Code of conduct

Contributing

Security policy

Stars

11 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Craft CMS + Twig Starter

This is a basic blog starter project for creating Craft CMS using the native Twig templating language. It's a simple install that requires no database dump and no front-end tooling. It includes a single, first-party plugin (CKeditor) to support a richer authoring experience.

Tip

Check out our full list of starter projects!

Features

  • Dedicated places to edit global information and the primary top-level pages (Home, Blog, and Guestbook);
  • Blog and category feeds;
  • Elegant content composition via CKEditor and nested entries;
  • Front-end Guestbook form, protected by login;
  • Arbitrary Pages structure for additional, hierarchical content;
  • Preconfigured, Craft Cloud-ready asset storage;

The Entries sidebar has also been configured to make these pages and sections easier to find for this setup.

Installation

  1. Clone this repository and move into the folder:

    git clone https://github.com/craftcms/starter-twig.git
    cd starter-twig/
  2. Start DDEV:

    ddev start
  3. Install dependencies:

    ddev composer install
  4. Run the Craft setup wizard:

    ddev craft install

Congratulations—Craft has been installed! You can start exploring the control panel by visiting https://starter-twig.ddev.site/admin in your browser, or running ddev launch admin.

Post-Install

Control Panel

The Craft control panel is available at https://starter-twig.ddev.site/admin. Log in with the username and password you created during installation!

  • Create some content by visiting the Entries screen;
  • Use Live Preview to visualize edits as you make them;
  • Adjust or augment the content model by exploring the Settings screen;
  • Open the front-end by clicking the site name in the upper-left corner;

Tip

You can always get back to the control panel by appending /admin to the project’s base URL.

Project Structure

This project was scaffolded from our blank-slate started kit, and therefore follows its overall directory structure and configuration scheme.

Licensing

The free Craft Soloedition is active by default, and will automatically acquire a perpetual license to evaluate, develop, and deploy a site for yourself or a friend. This key will be written out to config/license.key, and is safe to commit to version control.

You can upgrade to Craft Team or Pro any time! Read more about licensing in the Knowledge Base.

Tips + Tricks

Running on a Different Domain

The DDEV configuration files shipped with this project have a hard-coded project “name” that determines (among other things) the URL prefix. If you would like to change this (say, prior to pushing the project to a new remote), open .ddev/config.yml and update the name key.

Apply that change by running ddev start in the project directory. The site will restart, and be available at https://{new-name}.ddev.site!

Pushing to a new Remote

When cloning a git repository, it typically sets up the origin as a default remote. To push the project to your own repository, follow these steps:

  1. Remove the default origin:

    git remote remove origin
  2. Create a new repository. This can be on GitHub, or any other git provider.

  3. Add the new origin:

    git remote add origin https://github.com/your-username-or-org/new-repo-name.git
  4. Push to the new origin:

    git push origin

Tip

You may be able to create repositories in contexts that your local environment is not authorized to read from or write to! If you encounter permissions issues at this stage, consult the git provider’s documentation.

Getting Help

If you have any questions or suggestions, you can always reach us at support@craftcms.com or post a GitHub issue.

Thanks for trying Craft!

🍋

About

A simple starter for Craft CMS

Resources

Code of conduct

Contributing

Security policy

Stars

11 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Craft CMS + Twig Starter

This is a basic blog starter project for creating Craft CMS using the native Twig templating language. It's a simple install that requires no database dump and no front-end tooling. It includes a single, first-party plugin (CKeditor) to support a richer authoring experience.

Tip

Check out our full list of starter projects!

Features

  • Dedicated places to edit global information and the primary top-level pages (Home, Blog, and Guestbook);
  • Blog and category feeds;
  • Elegant content composition via CKEditor and nested entries;
  • Front-end Guestbook form, protected by login;
  • Arbitrary Pages structure for additional, hierarchical content;
  • Preconfigured, Craft Cloud-ready asset storage;

The Entries sidebar has also been configured to make these pages and sections easier to find for this setup.

Installation

  1. Clone this repository and move into the folder:

    git clone https://github.com/craftcms/starter-twig.git
    cd starter-twig/
  2. Start DDEV:

    ddev start
  3. Install dependencies:

    ddev composer install
  4. Run the Craft setup wizard:

    ddev craft install

Congratulations—Craft has been installed! You can start exploring the control panel by visiting https://starter-twig.ddev.site/admin in your browser, or running ddev launch admin.

Post-Install

Control Panel

The Craft control panel is available at https://starter-twig.ddev.site/admin. Log in with the username and password you created during installation!

  • Create some content by visiting the Entries screen;
  • Use Live Preview to visualize edits as you make them;
  • Adjust or augment the content model by exploring the Settings screen;
  • Open the front-end by clicking the site name in the upper-left corner;

Tip

You can always get back to the control panel by appending /admin to the project’s base URL.

Project Structure

This project was scaffolded from our blank-slate started kit, and therefore follows its overall directory structure and configuration scheme.

Licensing

The free Craft Soloedition is active by default, and will automatically acquire a perpetual license to evaluate, develop, and deploy a site for yourself or a friend. This key will be written out to config/license.key, and is safe to commit to version control.

You can upgrade to Craft Team or Pro any time! Read more about licensing in the Knowledge Base.

Tips + Tricks

Running on a Different Domain

The DDEV configuration files shipped with this project have a hard-coded project “name” that determines (among other things) the URL prefix. If you would like to change this (say, prior to pushing the project to a new remote), open .ddev/config.yml and update the name key.

Apply that change by running ddev start in the project directory. The site will restart, and be available at https://{new-name}.ddev.site!

Pushing to a new Remote

When cloning a git repository, it typically sets up the origin as a default remote. To push the project to your own repository, follow these steps:

  1. Remove the default origin:

    git remote remove origin
  2. Create a new repository. This can be on GitHub, or any other git provider.

  3. Add the new origin:

    git remote add origin https://github.com/your-username-or-org/new-repo-name.git
  4. Push to the new origin:

    git push origin

Tip

You may be able to create repositories in contexts that your local environment is not authorized to read from or write to! If you encounter permissions issues at this stage, consult the git provider’s documentation.

Getting Help

If you have any questions or suggestions, you can always reach us at support@craftcms.com or post a GitHub issue.

Thanks for trying Craft!

🍋

About

A simple starter for Craft CMS

Resources

Code of conduct

Contributing

Security policy

Stars

11 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Craft CMS + Twig Starter

This is a basic blog starter project for creating Craft CMS using the native Twig templating language. It's a simple install that requires no database dump and no front-end tooling. It includes a single, first-party plugin (CKeditor) to support a richer authoring experience.

Tip

Check out our full list of starter projects!

Features

  • Dedicated places to edit global information and the primary top-level pages (Home, Blog, and Guestbook);
  • Blog and category feeds;
  • Elegant content composition via CKEditor and nested entries;
  • Front-end Guestbook form, protected by login;
  • Arbitrary Pages structure for additional, hierarchical content;
  • Preconfigured, Craft Cloud-ready asset storage;

The Entries sidebar has also been configured to make these pages and sections easier to find for this setup.

Installation

  1. Clone this repository and move into the folder:

    git clone https://github.com/craftcms/starter-twig.git
    cd starter-twig/
  2. Start DDEV:

    ddev start
  3. Install dependencies:

    ddev composer install
  4. Run the Craft setup wizard:

    ddev craft install

Congratulations—Craft has been installed! You can start exploring the control panel by visiting https://starter-twig.ddev.site/admin in your browser, or running ddev launch admin.

Post-Install

Control Panel

The Craft control panel is available at https://starter-twig.ddev.site/admin. Log in with the username and password you created during installation!

  • Create some content by visiting the Entries screen;
  • Use Live Preview to visualize edits as you make them;
  • Adjust or augment the content model by exploring the Settings screen;
  • Open the front-end by clicking the site name in the upper-left corner;

Tip

You can always get back to the control panel by appending /admin to the project’s base URL.

Project Structure

This project was scaffolded from our blank-slate started kit, and therefore follows its overall directory structure and configuration scheme.

Licensing

The free Craft Soloedition is active by default, and will automatically acquire a perpetual license to evaluate, develop, and deploy a site for yourself or a friend. This key will be written out to config/license.key, and is safe to commit to version control.

You can upgrade to Craft Team or Pro any time! Read more about licensing in the Knowledge Base.

Tips + Tricks

Running on a Different Domain

The DDEV configuration files shipped with this project have a hard-coded project “name” that determines (among other things) the URL prefix. If you would like to change this (say, prior to pushing the project to a new remote), open .ddev/config.yml and update the name key.

Apply that change by running ddev start in the project directory. The site will restart, and be available at https://{new-name}.ddev.site!

Pushing to a new Remote

When cloning a git repository, it typically sets up the origin as a default remote. To push the project to your own repository, follow these steps:

  1. Remove the default origin:

    git remote remove origin
  2. Create a new repository. This can be on GitHub, or any other git provider.

  3. Add the new origin:

    git remote add origin https://github.com/your-username-or-org/new-repo-name.git
  4. Push to the new origin:

    git push origin

Tip

You may be able to create repositories in contexts that your local environment is not authorized to read from or write to! If you encounter permissions issues at this stage, consult the git provider’s documentation.

Getting Help

If you have any questions or suggestions, you can always reach us at support@craftcms.com or post a GitHub issue.

Thanks for trying Craft!

🍋

About

A simple starter for Craft CMS

Resources

Code of conduct

Contributing

Security policy

Stars

11 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Craft CMS + Twig Starter

This is a basic blog starter project for creating Craft CMS using the native Twig templating language. It's a simple install that requires no database dump and no front-end tooling. It includes a single, first-party plugin (CKeditor) to support a richer authoring experience.

Tip

Check out our full list of starter projects!

Features

  • Dedicated places to edit global information and the primary top-level pages (Home, Blog, and Guestbook);
  • Blog and category feeds;
  • Elegant content composition via CKEditor and nested entries;
  • Front-end Guestbook form, protected by login;
  • Arbitrary Pages structure for additional, hierarchical content;
  • Preconfigured, Craft Cloud-ready asset storage;

The Entries sidebar has also been configured to make these pages and sections easier to find for this setup.

Installation

  1. Clone this repository and move into the folder:

    git clone https://github.com/craftcms/starter-twig.git
    cd starter-twig/
  2. Start DDEV:

    ddev start
  3. Install dependencies:

    ddev composer install
  4. Run the Craft setup wizard:

    ddev craft install

Congratulations—Craft has been installed! You can start exploring the control panel by visiting https://starter-twig.ddev.site/admin in your browser, or running ddev launch admin.

Post-Install

Control Panel

The Craft control panel is available at https://starter-twig.ddev.site/admin. Log in with the username and password you created during installation!

  • Create some content by visiting the Entries screen;
  • Use Live Preview to visualize edits as you make them;
  • Adjust or augment the content model by exploring the Settings screen;
  • Open the front-end by clicking the site name in the upper-left corner;

Tip

You can always get back to the control panel by appending /admin to the project’s base URL.

Project Structure

This project was scaffolded from our blank-slate started kit, and therefore follows its overall directory structure and configuration scheme.

Licensing

The free Craft Soloedition is active by default, and will automatically acquire a perpetual license to evaluate, develop, and deploy a site for yourself or a friend. This key will be written out to config/license.key, and is safe to commit to version control.

You can upgrade to Craft Team or Pro any time! Read more about licensing in the Knowledge Base.

Tips + Tricks

Running on a Different Domain

The DDEV configuration files shipped with this project have a hard-coded project “name” that determines (among other things) the URL prefix. If you would like to change this (say, prior to pushing the project to a new remote), open .ddev/config.yml and update the name key.

Apply that change by running ddev start in the project directory. The site will restart, and be available at https://{new-name}.ddev.site!

Pushing to a new Remote

When cloning a git repository, it typically sets up the origin as a default remote. To push the project to your own repository, follow these steps:

  1. Remove the default origin:

    git remote remove origin
  2. Create a new repository. This can be on GitHub, or any other git provider.

  3. Add the new origin:

    git remote add origin https://github.com/your-username-or-org/new-repo-name.git
  4. Push to the new origin:

    git push origin

Tip

You may be able to create repositories in contexts that your local environment is not authorized to read from or write to! If you encounter permissions issues at this stage, consult the git provider’s documentation.

Getting Help

If you have any questions or suggestions, you can always reach us at support@craftcms.com or post a GitHub issue.

Thanks for trying Craft!

🍋

About

A simple starter for Craft CMS

Resources

Code of conduct

Contributing

Security policy

Stars

11 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages