CircuitParts Web App

May 2022 - Now

CircuitParts is a parts management system for robotics organizations developed with ReactJS, ExpressJS, Typescript and MongoDB. Click For GitHub

The Problem

With most computer-aided design projects (3D Modeling), there is a file-tree structure similar to the following:

notion image
 

Keeping this tree organized can be quite a challenge. Questions like:

  • What should a particular file be named?
  • How can I identify what assembly part X is in?
  • How can I see if assembly Y has any child parts or assemblies?
 

Where CircuitParts Comes Into Play

CircuitParts solves all of these and more. At a base level, CircuitParts manages your file tree and auto-generates part numbers to keep your files organized. This is best explained with examples:

 
Making a new part
  1. Create a new part via the Create Part button in your CircuitParts project
  1. Choose a parent assembly and name your part
  1. Press Create Part
  1. Copy and paste the newly-generated part number into your CAD software.
 
Making a new assembly
  1. Create a new assembly via the Create Assembly button in your CircuitParts project
  1. Choose a parent assembly (or if at the top level, your current project), and name it
  1. Press Create Assembly
  1. Copy and paste the newly-generated assembly number into your CAD software.
  1. You can now create parts under this assembly
 
Project home view
Project home view
Modal to edit part
Modal to edit part

However, CircuitParts also takes care of:

  • Part statuses for prototyping, e.g:
    • Ready for CNC
    • Ready for laser
    • Waiting for materials
    • etc
  • Quantity and material tracking
  • User management
  • Priority optimization
  • Order management
 
Users page from admin-only perspective
Users page from admin-only perspective
 

Naming Convention

Briefly, the naming convention consists of four parts. Here’s an example part number:

 

6962022-P-1035_Thingimabober_Reducer

 
  • 6962022 is the Project Name
  • P denotes Part, or Assembly (A)
  • 1035 is the Part ID.
    • 10 represents the assembly number
    • 35 represents the part number within that assembly
      • e.g: this part is number 35 in assembly 10. Note, assembly 9 may also have a part 35: 0935.
  • Thingimabober_Reducer is the part comment. This is optional and the PMS does not track this: it allows the designer to have a general idea of what the part is directly in CAD software.
 
A view of a part table, containing properties like name, part number, etc.
A view of a part table, containing properties like name, part number, etc.

More On Development

  • Frontend
    • ReactJS
    • Typescript
    • Tailwind CSS
  • Backend
    • ExpressJS
    • Typescript
    • Mongoose integration
  • Database
    • NoSQL MongoDB
    • Integrated via mongoose with express

Personal Reflection

This is my first “big” web project: there is a frontend, backend, database, user authentication, etc. It was my first opportunity to put all that I had been learning since May into use, and I’m extremely proud of what it’s become.

 

This project also required grit (like many other projects I’ve done); it’s large enough to the point where I cannot spend one hour today, another hour some other day; it has to be many hours for many days for a long time.