Intro
When most engineers hear the term 'full-stack' they think of an engineer who is able to not only design back-end APIs, manage databases, and architect complex server topologies; but also an engineer who can design elegant user interfaces, meaningful client interactions and build powerful tools driven by data. My definition is a little different in that I add an often overlooked layer - The Hardware ā” (along side the paired Firmware). It is a critical piece in making ANY 'stack' function. Being an Embedded Software engineer who often toes the line between the Software and Hardware/Firmware world, I want to start a project where I architect, design, and build every piece of the "stack" and document it all along the way. A couple pieces will have some very clear goals and challenges, others are just to have fun and see what I come up with. It may seem like I am re-inventing the wheel on a couple things, but that's the point. It's a learning exercise!
The Plan
The high-level plan is this:
- Create a custom PCB in KiCAD: Its purpose will be to remind you at a customized interval that you need to drink water š(I desperately need to be reminded to hydrate).
- Write firmware for the custom PCB with the ability to be updated via a custom USB bootloader and interact with the User via touch and gestures.
- Write a cross-platform Desktop application using ElectronJS to update the the device via USB as well as pull and display your "stats" about your Drinking habits. Another function might be to upload the data to a backend database.
- Write a web app to show your individual stats and a leaderboard to watch and compete against friends on.
- Utilize Github CI/CD features for testing and releasing of all Firmware/Software pieces.
Conclusion
These pieces will each take a decent bit of time to architect, build, test and document so please bear with me as the cadence of these posts will be erratic at best. Happy Hacking!
Top comments (0)