HyreCar was created when the its founders had difficulties renting a car to use for Uber and Lyft. The app they created matches individuals interested in driving for Uber and Lyft to car owners who want to rent their unused cars. HyreCar has capitalized on a previously underserved niche market. Since its inception in 2016, it has matched almost 200,000 drivers to cars, and achieved an impressive 318% growth. Their explosive growth left them with a techonogical platform that did not match the needs of their community. This is where we here at Novvum came in. Utilizing GraphQL we helped HyreCar rennovated their out of date infrastructure and scale their product to serve their new found customerbase.
As we started the project, Novvum faced monumental challenges. HyreCar’s original technology and infrastructure had been created by over 20 different developers in multiple countries with very little communication between them. The technology stack was disorganized, undocumented, and not built to scale. This is common for many startups but is detrimental when they start developing a large user base. As a team, we had to strategize how to move an entire community from a front end full of unfinished features and a back end infrastructure lacking core best practices, all of this without losing or changing data and causing major outages during HyreCar’s busiest season. Not to mention in an extremely short period of time in order to keep up with investor and stakeholder demands.
As a growing technology company, HyreCar needed the flexibility and speed to try out and push out new product features; this requires a pragmatic approach to process and execution. Our development philosophy focused on newer technologies that emphasized flexibility, speed, scalability, stability and lower costs for our clients - a perfect match for HyreCar’s needs.
We kicked off the project by working with HyreCar to prioritize a lengthy feature list, identifying high-risk items, and test assumptions. As a user-centric design and development team, we honed in on gathering quantitative and qualitative feedback from HyreCar’s users. Equipped with this data, our team came to the conclusion that HyreCar was going to need a full rebuild of their infrastructure in order to handle the user requirements, scaling demands, administrative features requests, and the foundation required to innovated and build new products.
FULL FRONT-END AND BACK-END REBUILD
Through a series of weeklong design sprints, the teams at HyreCar and Novvum constructed a prototype that addressed many of the customers' concerns. Prioritizing simplicity for both drivers and owners allowed us to optimize functions such as booking and listing a car and extending rentals. The new design provided a streamlined user experience. To illustrate, booking a car on the site originally required 7 steps; with the new design, it only took 3.
Once the front end was successfully built and deployed, our focus shifted to the monumental task of building a new back end and consequently a completely new admin portal. Our initial strategy was to make incremental changes to the backend to prevent disruption to their day to day operations. Unfortunately, we uncovered unforeseen issues that could only be fixed with an immediate and complete rebuild from the ground up.
The biggest issue was the MySQL database itself. It was very unclear how or why most of the tables and columns were used. The old database evolved with the business and the majority of it was no longer necessary. To address this, we broke apart the database into multiple service-based databases for example users, cars, rentals, payments, etc. This isolated the data to a specific context. If one of the databases becomes too large or no longer necessary, it would not affect the rest of the system. This also allowed us the freedom to use different types of databases for different services.
To bind all of these different databases together into one coherent API for clients, we used GraphQL. The GraphQL paradigm enables us to iterate on our API without having to worry about breaking the functionality of existing apps which are using it. It allowed us to provide a frontend product to the users right away while using the old backend. The GraphQL wrapper wrapped the old backend providing stability and developer flexibility while the new backend was being built. It acted as a great buffer during the two phases and much of it was reusable.
Another big issue with Hyrecar’s REST API was that third-party integrations like analytics tracking, CRM, and notifications were collocated with their core business logic. This often led to the server crashing or some core operation failing because one of the integrations broke. For the new build, we implemented an event-based system where functions would run independently in response to an event that gets triggered from the core API. For example, if a driver requests to book a car, the core API would trigger an event called “driver.requestedBooking” and a number of functions would subscribe to this event and send a notification to the requested car owner, update the CRM for the sales agents to follow up and so forth. Now, if any one of those functions fail, the core transaction will still go through and the other functions will still work.
Through our work with HyreCar we were able to create a product that successfully minimized customer problems and improved HyreCar’s bottomline in its busiest season. Perhaps most importantly, this product was built on a foundation that could scale with HyreCar’s continued growth. Since then, customer complaints about critical business transactions have decreased. Internally, we helped create development and deployment significantly reduced response time. In our sprints with the HyreCar team, we helped them establish a scope of work and trained them on how to structure their code and improve documentation and deployment. What started as a team of multiple developers from all across the globe, was consolidated with our help into an outstanding in house team. With our team’s development expertise, we became HyreCar’s technology partner, helping them make decisions about their technology stack, deployment and systems.