InteractivePCB is a hard fork of InteractiveHtmlBom with a focus interactions with a PCB beyond a bill of materials. To that end, InteractivePCB lets one interaction with individual PCB layers, aid in PCB assembly by showing similar parts, and also provide an interactive BOM.
Currently InteractivePCB is designed to work with EagleCAD with minor support for FusionElectonics and can be displayed using the Chrome web browser.
InteractivePCB started as a hard fork of InteractiveHtmlBom with the goal of adding support for EagleCAD, my choice of electronic CAD software at the time. Later InetractivePCB was used as a platform to learn HTML, JavaScript, CSS, and how to write formal specifications for data format.
InteractivePCB current focus is on integrate additional tools to analyze PCB's and to support additional ElectronicCAD software.
InteractivePCB is still under active development but developed as time permits to the lead developer with features and enhancements implemented on an as needed basis.
Version 2 is released and can be found under Releases. A Version 3 is in development with plans to release the project in the near future.
Browser support for Interactive PCB is primary for Chrome. Small PCB's may work in Firefox, but an unknown bug Forces Firefox to hand. No testing has been performed on other browsers.
The following section outlines how to get started using and developing InteractivePCB. Dependencies, building, and usage shall be covered. For those interested only in using InteractivePCB, you may skip directly to Usage
Following is a list of software expected to be installed:
This project is hosted on GitHub and can be cloned by issuing the following command from a terminal:
$ git clone git@github.com:oceanofthelost/InteractivePCB.git
Open a terminal and navigate to GUI folder and issue the following command to build:
$ make
Once issued, make will use npm to install project specific dependencies, then generate InteractivePCB.html and related.
No installation is necessary, simply have all the following files all in a folder:
Start EagleCAD and from a PCB, press ULP button and navigate to ipcb.ulp. Select a folder where to place script output, pcbdata.json
. By default project directory is used.
Copy pcbdata.json
to a folder created in Installation.
Now open iPCB.html
in a web browser.
Development consists of three primary branches:
Master branch is used like development branch. Reason master is not named develop is because initial development was by solo developer and solo developer did not care to over complicate development with multiple branches. Now that project has grown this is being addressed and at some point in the future master will be renamed to develop to make it clear where primary development should occur.
Releases fall into one of two categorizes, bugfix and feature. The following section discuss the generic release steps common to both bugfix and feature releases.
Generic steps for creating a release are:
version.js
make release
Release
by pulling in master.Release
branch and tags to origin.The above will generate a zip file iPCB.zip
.
Next, from GitHub:
Choose a tag
select tag corresponding to newest version numberBugfix releases are designed to address specific issues found in release software. Once an issue is identified and an issue ticket created on GitHub, development will commonsense on fixing the issue. Upon fixing the bug and adding the change to the software, testing will be preformed and when complete will a new release will be made, tagged, and released on [GitHub](released.
Feature releases used for adding new capabilities to InteractivePCB. First a feature request is made by creating a GitHuib issue. Next development on the feature will commence on a new branch and once complete will be merged back into master. When enough features are integrated or a milestone has been reached, then a release candidate will be created. Once a release candidate is made testing will commence to discover and fix any bugs. Once testing is complete a release will be made from the release candidate, tagged, and released on [GitHub](released.
InteractivePCB uses Subjective Versioning which is inspired by Semantic Versioning. Subjective Versioning uses MAJOR.MINOR.PATCH-RC# with V prefixed. The following rules are used for incrementing MAJOR, MINOR, and PATCH:
Two methods exist for getting help related to InetractivePCB.
First and preferred way to request help is to post a questions on the discussion board. If unable to ask a question on the discussion forum, you may also file an issue and adding the label help
to the ticket.
In both cases of communication, do not worry, your request will be reviewed but a response may not or answered right away. Answer by the lead developer are made as time permits.
We encourage public contributions! Please review CONTRIBUTING.md for details on our development process and our code of conduct before you do!
??????????????
Also see the list of contributors who participated in this project.
Thank you to the following for inspiration and assistance on this project.
Embedded Artistry for the thorough README template.
Code Thessaurus for our code of conduct and issue and PR templates.
openscopeproject for providing InteractiveHtmlBom for without, this project would not exist.