{"id":46232761,"url":"https://github.com/sufst/pcb","last_synced_at":"2026-03-03T18:11:05.680Z","repository":{"id":62960392,"uuid":"545735288","full_name":"sufst/pcb","owner":"sufst","description":"Monorepo for all schematics and PCB designs","archived":false,"fork":false,"pushed_at":"2026-02-25T22:15:26.000Z","size":270611,"stargazers_count":15,"open_issues_count":9,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-25T22:45:45.775Z","etag":null,"topics":["kicad","pcb","schematics"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sufst.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-10-04T22:23:47.000Z","updated_at":"2026-02-24T17:41:20.000Z","dependencies_parsed_at":"2023-10-15T20:31:42.057Z","dependency_job_id":"c204d3ec-7d2d-4bd0-bec4-4c16617cbf0b","html_url":"https://github.com/sufst/pcb","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/sufst/pcb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufst%2Fpcb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufst%2Fpcb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufst%2Fpcb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufst%2Fpcb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sufst","download_url":"https://codeload.github.com/sufst/pcb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufst%2Fpcb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30054111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T17:46:22.538Z","status":"ssl_error","status_checked_at":"2026-03-03T17:46:22.036Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kicad","pcb","schematics"],"created_at":"2026-03-03T18:11:05.134Z","updated_at":"2026-03-03T18:11:05.671Z","avatar_url":"https://github.com/sufst.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PCBs\n\n## About\nCentral repository of all schematics and PCB design files.\n\n| Folder     | Project                          | Project Code |\n|------------|----------------------------------|--------------|\n| ail        | Accumulator Indicator Light Logic| `ail`        |\n| ail-led    | Accumulator Indicator Light Led  | `ail-led`    |\n| batak      | Batak Game (non-car)             | `batak`      |\n| break-light| Rear Break Light                 | `break-light`|\n| bspd       | Brake System Plausibility Device | `bspd`       |\n| can-node   | Voltage Reader and Broadcaster   | `can-node`   |\n| curr-amp   | Current Sensor Amplifier         | `curr-amp`   |\n| dash       | Dashboard                        | `dash`       |\n| discharge  | Discharge Relay Breakout         | `discharge`  |\n| hv-sense   | High Voltage Sense               | `hvs`        |\n| latching   | Latch Circuit                    | `latching`   |\n| loom*      | Loom Design                      | `loom`       |\n| lvbms      | Low Voltage Battery Management System | `lvbms` |\n| precharge  | Precharge Controller             | `precharge`  |\n| segment    | Segment                          | `segment`    |\n| telemetry  | On-Car Telemetry                 | `telemetry`  |\n| test-rig   | PCB Test / Demo Rig              | `test`       |\n| top-level* | Full Car Schematic               |              |\n| trc        | TSAC Relay Controller            | `trc`        |\n| tsal       | Tractive System Active Light     | `tsal`       |\n| vcu        | Vehicle Control Unit             | `vcu`        |\n\nWe design our PCBs in KiCad (version 8+).\n\n\u003e*Moved to https://github.com/sufst/loom\n\n## Version Control for KiCad Projects\n\n### Why?\n- Revert individual changes.\n- Document development history via commits and GitHub issues.\n- Easily view previous versions of designs.\n- Manage shared library of components.\n\n### Files\n\nFiles that should be in this repo, under version control:\n- Project files (`.kicad_pro`).\n- Schematic files (`.kicad_sch`).\n- PCB files (`.kicad_pcb`).\n- Custom footprints (`.kicad_mod`).\n- Custom symbols (`.kicad_sym`).\n- Footprint library tables (`fp-lib-table`).\n- Symbol library tables (`sym-lib-table`).\n- 3D models of components (`.step` files).\n- Simulation code (e.g. `.asc` files from LTSpice).\n\nFiles that should never be in here:\n- Exports such as BOMs, gerbers, netlists, renders, etc.\n- Local project settings (`.kicad_prl`).\n- Project backups (.zip files generated in `\u003cproject name\u003e-backups`, `.bak` `.bck` `-bak` files).\n- Cache files (`fp-info-cache`).\n\nThe `.gitignore` should prevent the addition of files we don't want to keep in here, but before you commit make sure to do a quick check of what is actually being added.\n\n### Shared Resources\n\nThe `common` folder is used for resources which can be shared across multiple projects. This includes:\n\n- Images (`images` subdirectory).\n- 3D models (`step` subdirectory).\n- Custom symbols (`sufst-lib.kicad_sym`).\n- Custom footprints (`sufst-lib.pretty`).\n- SUFST standard sheet layout (`sheet-layout.kicad_wks`).\n\n\u003e Note: Since projects were previously in their own individual repos, many designs still have their own libraries, step files, etc. These will gradually be migrated to the SUFST library.\n\n### Library Paths\nWhen you configure the library paths for a project (`sym-lib-table` and `fp-lib-table` data), make sure to always use a path relative to the project with the `${KIPRJMOD}` substitution.\n\n- Correct: `${KIPRJMOD}/../common/sufst-lib.kicad_sym`\n- Incorrect: `/Users/\u003cyour name\u003e/Documents/sufst/pcb/common/sufst-lib.kicad_sym`\n\nIf an absolute path is used, when someone else opens the project that path will not exist and the library paths will not be valid. `-lib-table` files should never contain an absolute path.\n\n### Git Limitations\nIt is not possible to resolve merge conflicts within individual design files, which is an unfortunate limitation of using `git` with KiCad. While KiCad files are in a text format, they aren't really designed to be edited manually. It is therefore *essential* that only one person is editing a particular file in a project at a time (including the shared library). Once someone starts working on a file, until it is merged into the `main` branch nobody else can edit that file. A good way to get round this is to use the \"hierarchical sheets\" feature to divide schematics into multiple files (if it can be done in a logical way).\n\n## Releases\n\n### Release Files\nWhen a PCB is fabricated, a new 'release' for the given project should be \ncreated and stored within this repo in the `releases/\u003cPROJECT NAME\u003e` folder. \nThis folder should contain the latest version (and ONLY the latest version) of\nthe following files:\n\n1. Exported gerbers and drill files in a ZIP archive called `fabrication.zip`.\n2. Schematic sheets as a PDF (`Schematic.pdf`).\n3. Layout as a PDF in colour, with border and title block (`Layout.pdf`).\n4. HTML iBOM created using the [\"Interactive HTML BOM Plugin\"](https://github.com/openscopeproject/InteractiveHtmlBom) (`ibom.html`).\n\nAdditionally, a file called `info` (no extension) should be created (if it \ndoesn't already exist) containing release information in the following format:\n\n```txt\nversion: \u003cVERSION NUMBER\u003e\ndate: \u003cRELEASE DATE\u003e\nfabrication: \u003cCOMPANY\u003e\n```\n\nVersion numbers should be in the format `v1.0.1` and dates should be in the\nformat `YYYY-MM-DD`. For example:\n\n```txt\nversion: v1.0.1\ndate: 2023-01-23\nfabrication: JLCPCB\n```\n\nThe release folder for a project should then have the following structure and \nfile names:\n\n```txt\n\u003cPROJECT NAME\u003e\n├── Layout.pdf\n├── Schematic.pdf\n├── fabrication.zip\n├── ibom.html\n└── info\n```\n\nWhen creating a new release, make sure to overwrite/replace all the existing \nfiles.\n\n### Release Tag\n\nThe release commit should then be tagged with the following command:\n\n```sh\ngit tag \u003cPROJECT CODE\u003e-\u003cVERSION_NUMBER\u003e\n```\n\nTagging should be done **after** merging to `main`! Example command:\n\n```sh\ngit tag segment-v1.0.1\n```\n\nTo push tags to GitHub:\n\n```sh\ngit push --tags\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsufst%2Fpcb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsufst%2Fpcb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsufst%2Fpcb/lists"}