you’re something like me, “procrastination” would possibly as properly be your center identify. There’s all the time that nagging hesitation earlier than beginning a brand new venture. Simply fascinated by establishing the venture construction, creating documentation, or writing a good README is sufficient to set off yawns. It looks like watching a clean web page for a dreaded college essay. However bear in mind how a lot simpler it will get as soon as some useful LLM (like ChatGPT) offers a beginning template? The identical magic can apply to your coding initiatives. That’s the place Cookiecutter steps in.
What Is Cookiecutter?
Cookiecutter is an open-source instrument that helps you create venture templates. It’s language-agnostic and works with nearly any programming language (and even exterior coding, do you have to want a standardized folder and file construction). With Cookiecutter, you possibly can arrange all of the boilerplate information (like READMEs, Dockerfiles, venture directories, or the rest), then rapidly generate new initiatives primarily based on that construction.
The Cookiecutter workflow consists of three important steps:
- You outline your venture template.
- The person enters values for the variables you specify.
- Cookiecutter generates a brand new venture, robotically filling in information, folders, and variable values primarily based on the person’s enter.
The next picture illustrates this course of:
1. Fundamental Laptop Setup
You want minimal programming expertise to put in and use Cookiecutter. When you can open a command line window, you’re good to go.
• On Home windows, sort “cmd” within the search bar and open the “Command Immediate.”
• When you haven’t already, set up pipx with:
pip set up pipx
Take a look at your set up by working:
pipx --version
When you get a “command not discovered” error, add pipx to your PATH. First, discover the place pipx was put in: python -m website –user-base.
This would possibly return one thing like /residence/username/.native. Search for the folder containing pipx.exe (on Home windows) or pipx (on macOS or Linux). In case you have no admin rights, the listing could be C:UsersusernameAppDataRoamingPythonPythonxxxScripts.
I had so as to add pipx to my path and should you don’t have admin rights, you will have to do it every time you begin a brand new terminal window. It’s due to this fact really useful so as to add the situation completely to your Surroundings Variables settings. Nonetheless, if this setting is behind admin privileges, you continue to can add
set PATH=C:UsersusernameAppDataRoamingPythonPythonxxxScripts;%PATH%
Or
set PATH=/residence/username/.native/bin;%PATH%
Hopefully, you get a significant response for pipx --version now.
2. Putting in and Setting Up Cookiecutter
Cookiecutter is distributed as a Python bundle, so you possibly can set up it with pipx:
pipx set up cookiecutter
Or just run it on the fly with:
pipx run cookiecutter ...
Let’s stroll via making a venture template. On this instance, we’ll arrange a template for Streamlit apps (cookiecutter_streamlit_ml).
3. Creating the Template Construction
Inside your cookiecutter_streamlit_ml folder, you want these two key elements:
• cookiecutter.json – a JSON file that defines the variables you need customers to fill in (venture identify, creator, Python model, and so on.).
• {{ cookiecutter.directory_name }} – A placeholder folder identify outlined utilizing curly braces. This listing will comprise your venture’s construction and information. When the person creates a brand new venture out of your template, Cookiecutter will exchange this placeholder with the identify they offered. Be careful to maintain the curly braces!

Your cookiecutter.json would possibly look one thing like this:

First, you outline variables in cookiecutter.json which might be used all through the generated venture. At a minimal, you’ll desire a variable for the venture identify.
For instance, I usually reference my GitHub repository in documentation. Moderately than getting into it repeatedly, I set a variable as soon as and let Cookiecutter populate each occasion robotically. Equally, I don’t wish to write out my identify in every readme or documentation file, so I set it initially.
To keep away from points with Docker and ensure the right Python model is specified, I immediate for the Python model at venture creation, making certain it’s used within the generated Dockerfile.
You may outline default values for every discipline in cookiecutter.json. Cookiecutter will robotically exchange each occasion of {{ cookiecutter.variable }} in your template information with the person’s enter. You can too use transformations like decrease() or exchange(‘ ‘, ‘_’) to keep away from points with areas in listing names.
In my template, I choose offering detailed directions to customers somewhat than setting default values. This helps information those that would possibly skip studying the README and soar straight into venture creation.
4. Constructing Out Your Template
Now begins the enjoyable half, specifically defining your template. You might be doing it as soon as and for all, so it’s worthwhile to spend a while on it, which can drastically cut back your venture setup time in the long term.
First, create the folder construction on your venture. This contains creating all folders that you just anticipate to make use of in your venture. Don’t fear, no matter is lacking or seems to be superfluous will be edited within the precise venture. For now, you’re merely creating the blueprint; the whistles and bells will probably be project-specific.

After getting your folders prepared, you possibly can populate them with information. These will be both empty and even have some content material that you just would possibly in any other case continually copy-paste from different paperwork. In these information, consult with your cookiecutter variables wherever one thing must be set dynamically (e.g., the venture identify or the GitHub repo). Cookiecutter will robotically exchange these placeholders with person inputs, which will probably be requested for throughout venture setup. This spares you a whole lot of tedious copy-paste work, notably in your documentation information.

Lastly, deposit the entire cookiecutter_py_streamlit folder in your GitHub account, zip it, or depart it as it’s. Both manner, now you can …
5. Use your template
As soon as your template is prepared, creating a brand new venture turns into a snap:
1. Open your terminal and navigate to the place you’d wish to create the venture.
2. Run one of many following instructions:
• From GitHub:
pipx run cookiecutter gh:ElenJ/cookiecutter_streamlit_ml (exchange along with your repo)
• From a neighborhood folder:
pipx run cookiecutter /path/to/template_folder
• From a zipper:
pipx run cookiecutter /path/to/template.zip
3. Cookiecutter will ask you the questions outlined in cookiecutter.json. Present solutions—or simply press enter should you’ve set default values.

4. Voilà 🎉 your new venture folder is generated, full with folders, information, and references personalized to your inputs.

You may synchronize your new venture with GitHub by both pushing it straight out of your IDE’s built-in Git performance or by creating a brand new repo on GitHub (making certain it’s empty and doesn’t embrace a Readme) after which transferring your generated venture folder there.
And that’s it! You’ve turned what was a day-long chore right into a swift course of and have immediately generated plenty of information ready to be stuffed in along with your concepts. Trying on the new venture, you positively ought to have a sense of a productive day. When you’re nonetheless searching for steering on finest practices, take a look at the official Cookiecutter templates here.
And as all the time: Glad coding!

