Gompei's Geared Up
As I've mentioned before, one of my favorite things about software engineering is being able to have an impact - creating tools and applications to help people - and this is a perfect example of that. Gompei's Gears is WPI's bike share program, allowing students to borrow bikes from several locations around campus for transport or exercise. The system currently uses a proprietary app which costs the school over $10,000 per year, and the team who runs it was growing increasingly frustrated with this system. So instead they opted to build new software in-house, and I was invited to help.
Features and Design
Gompei's Geared Up is divided up into two sections - a renter section for borrowing bikes, and an admin section for managing the fleet of bikes and responding to issues. It makes use of the user's geolocation services to verify that they are picking up and dropping off bikes in the correct locations, and logs all user rides to a database. From there, admins can view past rides, monitor usage, and ensure that nobody is abusing the system. Admins can also send mobile push notifications to users if necessary. When a ride is finished, users can report issues with a bike, which causes the bike to be flagged on the admin dashboard.
The system is currently set up as a Flask web application written in Python, with the frontend optimized for use on mobile devices. Eventually the hope is to convert the frontend into a native app, which would be more reliable on spotty mobile networks and allow for interaction with the Bluetooth-controlled locks installed on every bike (Safari doesn't support the Web Bluetooth API unfortunately). A PostgreSQL database keeps track of all user data via the SQLAlchemy ORM, and user authentication is achieved with Microsoft Entra to allow integration with WPI's existing login system.
Process
We worked on this project as a part of WPI's software engineering course over a five week period. The course followed Agile Scrum methodology, with regular check-ins to ensure everyone knew what to do and stayed on task. On a team of four, all of us were somewhat involved with almost every aspect of the project. We made use of project management software to list and triage tasks and make sure milestones were met. Rigorous unit testing was conducted on all components of the project, making use of GitHub Actions to run the tests every time a new commit was made.
Individually I implemented a lot of the renter facing components, including the entire rental process itself. Most of the other group members were not as familiar with JavaScript as I am so I was able to help them incorporate client-side functionality into their components. Flask leans heavily toward server-side logic so getting it communicate well with JavaScript was a bit of a challenge. I also worked on the push notification system, having prior experience working with web push notifications, and helped with integration testing and consistently linking different parts of the system togehter.
Conclusion
This project was a great experience, working on a large scale application on a team, and creating something that has the potential to be put to real use. While there is still work to be done before this system can be put into production, I am excited to see where it goes over the coming months.