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](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F1dcc6fa2-4823-41f7-b1c2-d363859961af%2FNew_Flowchart.png?table=block&id=d052d851-a258-49e7-8f78-848402444f48&cache=v2)
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
- Create a new part via the Create Part button in your CircuitParts project
- Choose a parent assembly and name your part
- Press Create Part
- Copy and paste the newly-generated part number into your CAD software.
Making a new assembly
- Create a new assembly via the Create Assembly button in your CircuitParts project
- Choose a parent assembly (or if at the top level, your current project), and name it
- Press Create Assembly
- Copy and paste the newly-generated assembly number into your CAD software.
- You can now create parts under this assembly
![Project home view](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6c6d40db-f79e-462e-a3c2-a1bb6822dc0a%2F3thing.png?table=block&id=e0442aa6-7c2a-45e8-a47c-c1a6ae03b86c&cache=v2)
![Modal to edit part](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa889820e-3dd7-41ae-9ab4-2bf9581fc367%2F1156971e00acb900a8b28ad486207c63.png?table=block&id=0ff56ed6-8806-48ef-b8b0-1d6eca8b387f&cache=v2)
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](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2d71d49a-f8ef-4d99-b319-d9f9dd38ac95%2F8c5d6a3d4157b2306ec4f40bc158d5cd.png?table=block&id=18f864a8-bb3f-40ea-889d-754e1dcf5ee8&cache=v2)
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.](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F9580b972-a15a-40f5-9d0b-aed42fa98b64%2F715b09295b950e9318d488ecd4f96088.png?table=block&id=dabdd400-3fbe-407c-b5e2-740e40db1cc2&cache=v2)
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.