/cookiecutter-kicad

KiCAD project boiler plate template using cookiecutter to create an open source hardware project with autogenerated documentation and a CICD pipeline

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Cookiecutter for KiCAD Projects

Powered by Cookiecutter, Cookiecutter KiCad generates boilerplate for production-ready KiCad projects.

See the Project Documentation for more details.

Features

The project you create from this template has a few features to be aware of including:

  • Kicad v5.x supported.
  • Kicad v6.x supported.
  • A KiCAD project structure to get you going.
  • A starting project document structure using Mkdocs-Materials that automatically publishes to the projects github.io pages site on release. Inspiration for the document structure is based on the https://hutscape.com/pine/ by Sayanee Basu https://github.com/sayanee and her great YouTube video around hardware documentation https://youtu.be/uPitFGqjyPU.
  • Automated Release and Changelog management.
  • Automated asset generation that incorporates into the documentation build, e.g. BOM, Schematics, PCB, 3D Board Images.
  • CICD pipeline for Hardware and Firmware testing.
  • Poetry Python Virtual Environment and dependency management for the project.
  • mermaid diagrams using markdown syntax.
  • wavedrom waveform diagrams using markdown syntax.

Usage

Let's pretend you want to create a hardware widget called "some widget". Rather than manually creating the project directory structures and the documentation, get cookiecutter to do all the work.

First, get Cookiecutter:

pip install "cookiecutter>=1.4.0"`

Now run it against this repo:

cookiecutter https://github.com/madeinoz67/cookiecutter-kicad

You'll be prompted for some values. Provide them, then a project structure will be created for you.

Warning: After this point, change 'Fred Smith', 'fsmith', etc to your own information.

Answer the prompts with your own desired options. For example:

Cloning into 'cookiecutter-kicad'...
remote: Counting objects: 550, done.
remote: Compressing objects: 100% (310/310), done.
remote: Total 550 (delta 283), reused 479 (delta 222)
Receiving objects: 100% (550/550), 127.66 KiB | 58 KiB/s, done.
Resolving deltas: 100% (283/283), done.
project_name [Project Name]: Some Widget
project_repo_name [repo-name]: some-widget
project_description [This is my Kicad Project]: A Hardware Widget
author_name [my_name]: Fred Smith
author_email [my_email@somewhere.com]: fsmith@nowhere.com
github_user [my_gihub_username]: fsmith
Select kicad_version:
1 - 6.x
2 - 5.x
Choose from 1, 2 [1]: 1
Select license:
1 - CC-A-SA
2 - CC-A
3 - MIT
4 - BSD
5 - OSHD
6 - TAPR
7 - CERN-OHL-P
Choose from 1, 2, 3, 4, 5, 6, 7 [1]:

Enter the project and take a look around:

cd some-widget/
ls -a

Create a git repo and push it there:

git init
git add .
git commit -m "initial project commit"
git remote add origin git@github.com:fsmith/wireless-widget.git
git push -u origin master

Open KiCad and open the project

If you have performed the steps above, you should now be able to open KiCad and open the new project.

Resources

Would you like to learn more? Check out the links below!

Author

This program was created by Stephen Eaton.

This project is hosted on GitHub. Please feel free to submit pull requests.

License

Copyright © 2021 Stephen Eaton. This program is released under the GPLv3 license, which you can find in the file LICENSE.