Rules of thumb when making a website on the wonderful Craft C ontent M anagement S ystem . Based on two years of developing Craft-based websites for clients. This is our opinionated list of principles for . Some are certainly contestable, some are just common sense, and some are the product of trial and error. These principles range from project management, code structuring, to the field and section structure within the Craft control panel. Craft CMS 1. Start the project with setting up developer, staging and production . This will make the launch way less stressful. environment 2. Start early with the information architecture. Work together with people who will be writing content to set up sections and fields. This will allow you to work with real content, and discover needs for features early. 3. Don’t chase : try to work with graphic design, content and frontend simultaneously. waterfalls development 4. If you feel the need for a matrix-block in a matrix-block, reconsider your information architecture. You’re probably doing it wrong. 5. If you make a “content”-matrix block, keep it simple by avoiding more than six block types. Build your templates up from modules. Keep the HTML in those to allow for both flexibility and consistency. Use them to make page templates. Stay and remember to default variables. DRY Example of a module 7. If you ending up writing a lot of twig to solve the thing, consider making a instead (it’s not as difficult as it may seem). plugin 8. Make sure to discuss, review, show your Craft project to another developer at least once every 40 project hours. 9. Take the time and write good descriptions for your fields. You will not “just do it later”. 10. Use image transforms. Think of your users’ bandwidth. Restrict the rich text editor as much as possible. Don’t allow images in it as it creates more complex code and usually allow for bad layout decisions. 12. Panes are used for hiding stuff that isn’t really that important. 13. Debugging Craft: Have you introduced a PHP-error in the settings? Have you set the necessary .env-variables? Have you installed all the dependencies? Is there some difference between your development, staging and production enviroment? What do the logs say? Have you messed up the caching? Are you trying to access a field that isn’t there? Have you read the error message? Have you read the documentation? Have you searched or asked in the ? really Stack Overflow Craft Slack are for unique pages with their own template, whose content isn’t used other places — typically frontpages for listing out channel entries and so on. 14. Singles are for structured content that either makes sense as a stream, or a group of similar content (e.g. news or products). Channels are also good for content that will be reused in several contexts. 15. Channels can be useful if you want to have a flexible hiearchy of content, where the hierarchy is important for managing the content. 16. Structures are mostly used for pure metadata and to connect content across sections. 17. Categories 18. Use primarily unique and channel sections. Avoid structures. We tend to not use structures because we prefer a and it’s prone to content entropy. pretty shallow information architecture 19. Some plugins make any Craft project easier: , , , , , / , and . ( ). Admin Bar CP Field Links Element API Kint Linkit Sprout Fields Forms Retour And a bunch more on Awesome Craft Whatever you do, consider how your choices will affect the client’s ability to make good choices when managing their content, and how easy it will be for your future self to troubleshoot and further develop your code. Not so much a principle as good advice: keep up to date by subscribe to the newsletter and listen to the . Craft Link List Craft.Podcast What are your principles for projects on Craft CMS?