Zurich based sharoo AG has a great mission to create flexible carsharing and a new mobility model. sharoo allows both companies and individuals to share their cars, which reduces the fix costs for the vehicle owner and gives a real, environmentally friendly alternative to owning a vehicle to the renters.
Such a service can only succeed if it feels natural and seamless to the users. The renter should be able to rent and open the car without any contact with the owner. For that to happen, a vehicle needs to be equipped with a special sharoo box, and the rest of the magic is in the mobile app. This app should securely communicate with the box and unlock the car without a need for a physical key. And this where our help was required.
We were contacted by sharoo in February 2016 to develop the mobile application from scratch. The application should run on iOS and Android, deliver great and seamless UX for the users, and be secure for the car owners and renters alike. We've done that, and then we stayedworking together with the sharoo team for four years, until the company got fully integrated into their main shareholder, AMAG. You will find below a few stories from this journey.
We have been working for most of the time as three developers strong team, building both the iOS and Android applications. We were building something new, a greenfield app, a unique experience for the sharing economy. Back in the day, there were not many established best practices in the world for this kind of application, so everything had to be done in a very flexible and agile way. We had to observe users, and learn from them how to improve the app. To achieve this we worked closely with the designers and product owners, running weekly scrum sprints.
Solid architecture as app foundation
As we described in Lokalportal Case Study, we believe that if your app has to change often to rapidly evolving requirements, you will need a robust architecture. You need to delegate as much work as possible to the computer, so you can focus on implementing the business logic. Both apps were developed in their native languages and frameworks, Swift for iOS and Kotlin for Android app. We used MVVM, declarative programming and Rx to help us keep the project clean and improve state management of the controllers.
Combination of MVVM and Rx gives a unique opportunity to separate UI from the business logic. UI is usually much more challenging (and much slower!) to test via automated tests, so you want to have the most important logic contained in easily testable Models and ViewModels. Rx allows us to reduce and control the typical callback infestations as now we can drive the UI using sleek observables. Additionally, it helps in keeping data immutability inside the app. All that significantly reduces the number of potential bugs in the code, which of course saves our client's time and money.
sharoo iOS app is rated 4.6 stars
Designed with offline capabilities in mind
Cars waiting for renters can be parked anywhere, so odds are some parking spots don't have great network coverage. Limited connectivity in underground parking lots in particular poses a challenge for the mobile application. That's why the app was built with offline use in mind. There are various aspects of offline friendly apps, like data request queueing, or optimistic UI, just to mention a couple of them.
Without going into too much detail, we wanted to share our solution for local data availability in poor / no network connection scenarios. The conventional way of storing data is using Core Data for iOS, and on Android, you would probably choose Room as an abstraction for SQLite. However, we've decided to go with Realm DB as our solution for storing data and it worked perfectly. It not only tremendously reduces the amount of the boilerplate you have to write for your models, but also makes possible that both platforms use the same DB schemes. That means it's much easier to compare the implementations and do DB migrations in the same way. Another advantage is the easiness of refreshing views with new data, driven by RxRealm.
sharoo Android app is rated 4.1 stars
Security as the key component
When you are managing a big fleet of expensive vehicles, security can't be an afterthought. Also, we are working 99% remotely, but the sharoo project has a substantial amount of hardware components which the mobile app has to communicate with. However, this was not a show stopper at all. We've simply received a developer kit sharoo box so we could use it to implement a secure communication protocol. The whole implementation was evaluated as safe by an independent security audit. The communication between the app and car hardware was implemented with a deep dive into Bluetooth framework stack and low-level package programming. We are talking here about good, old-fashioned bit operations.
Debugging remote hardware
Even if we had sharoo box sitting next to our computers, sometimes there was still a need to debug application inside sharoo offices where it could be tested with actual cars. For these particular cases, we used SwiftyBeaver. This allowed us to "see" in real-time the interaction between the mobile app, sharoo box, and the car. It's great to have an experienced pair of eyes which can tell an engineer what is happening with the app, the vehicle, how far away is the mobile to the box, etc. But those eyes can only see the surface. If the engineer has to move fast and solve an issue quickly, they have to "see" how the code works. The standard way of gathering the logs on the device, downloading them to the computer and sending over the internet is just too cumbersome and too slow. SwiftyBeaver gives you the ability to see the logs in real time, as fast as they are generated. This way, a mobile engineer can provide instant feedback to the testing person, like "move closer to the car", etc. This is a massive quality of life improvement for everyone involved. It's like sending a chat message instead of posting a letter.
sharoo European P2P Carsharing Price/Performance Value Leadership Award from Frost & Sullivan
We were delighted with the results of the collaboration with sharoo. And turns out so were the users. The app was rated 4,6 stars in the iOS AppStore, and 4,1 on the Android PlayStore. We are really proud of those numbers.
But not only the users praised the product. Business analysts were pleased as well. Deloitte in the Sharing Economy report named sharoo a pioneer in software development in the area of car sharing.
In 2016 sharoo received a European P2P Carsharing Price/Performance Value Leadership Award from Frost & Sullivan.
Everyone has learned a lot from this project, and so have we 💪 A mutual growth opportunity and partnership is what Brains & Beards is all about 🙇♂️