Technical Documentation
Languages and Tools
The program is an electron app written in JavaScript and utilizes the Vue.js framework along with the Nuxt.js meta-framework. The backend is ALSO written in JavaScript. The styling is done with Tailwind CSS which makes inline CSS a joy to work with. Thandi did a phenomenal job with the backend as the original implementation was not the greatest, so whilst he is not going with us, he will be remembered for his contributions to the project.
System
The computer used to power the software is a Raspberry Pi 5, which is a small computer that is perfect for this application, as it is honestly quite beefy for its size, including 8 gigabytes of RAM and a quad-core processor. The software is stored on a microSD card, which is inserted into the Raspberry Pi. The software is loaded onto the microSD card using a computer, and then the microSD card is inserted into the Raspberry Pi. The Raspberry Pi is then connected to the car's power supply, and the software will automatically load up when the car is turned on. The operating system chosen for our purposes was Arch Linux ARM, specifically the aarch64 distribution.
Interfaces
The program uses serial port through USB (universal serial bus) which lets us directly communicate with the BMS, no middleman. Same goes for the GPS, which is reliant on the excellently crafted gpsd and is enabled using systemd, and by the way just a fun fact gpsd is literally the industry standard, it is baked into basically all Android phones and drones and even military applications. The VPN is set through wireguard, a project directly embedded in the Linux kernel, so allows for also easy low level networking to get data across. We have 10 gigabytes of data on these VPNs, so we should be good for a while since we are only sending telemetry data. NO YOUTUBE!
Documentation
This documentation was quite last minuted, but we hope it is helpful. It is written using the Docus project, which is a documentation specific project based on Nuxt.js and Vue.js.