Voi ❤️ Tech

Kevin Neville
Voi Engineering
Published in
4 min readApr 5, 2022

--

When you think about Voi — what’s the first thing that pops into your head? Scooters, right? Physical scooters that let you transport yourself from A to B in a smooth and environmentally friendly way.

But there’s more to it! Under the hood, there’s all sorts of technologies that enable your ride. So you could say that our services are a (happily ever after) marriage between hardware and software.

And since we’re very proud of our technology, our engineers would like to use this blog to share insights into the exciting and cutting edge initiatives that we’re working on. This blog will be all about tech, for corporate content please visit voiscooters.com/blog instead. Sharing is caring!

But let’s start off with explaining a little bit about our tech stack.

Tech stack

At Voi we provide our internal and external customers with many different and demanding capabilities. Therefore we’ve created an ecosystem of applications which collaborate with each other.

Below is the tech stack that we use.

Backend

We build Go microservices that are deployed via ArgoCD and live their life in Kubernetes clusters hosted in the Google Cloud. On top of that we also practice IaC (Infrastructure as Code) through Terraform where, for example, our PostgreSQL instances are managed. For monitoring we rely on Grafana which is fed by metrics from Prometheus and other sources. And the related alerting is delegated to Opsgenie for smooth incident handling.

Backend stack

Android

Our Android apps are built using Kotlin and Android Studio. And for dependency injection we make use of Hilt on top of Dagger. We make use of a MVVM architecture with libraries/utilities such as Data Binding, Navigation component and LiveData for our UI. HTTP client-wise Retrofit is our first choice in combination with Coroutines for concurrency purposes.

Android stack

ios

Our iOS apps are built using Swift and Xcode. And for dependency management we make use of Cocoapods and Swift Package Manager. Observability and monitoring are taken care of by Embrace in order to gather useful user experience data. For payments we use the services of Stripe, Braintree, Primer and Apple Pay.

ios stack

Data

Our data infrastructure follows the modern data tech stack, and we are heavily invested in dbt and Snowflake. Data from internal services are ingested by combining pub/sub, Dataflow, and Airflow. We use Tableau and Metabase as our BI tool where we also leverage geospatial tooling like Mapbox since geodata plays a big role at Voi.

Data stack

Frontend

Our web applications are built using React + Typescript and hosted in Firebase. For state management we make use of Redux together with Redux-Saga middleware. The UI is made up of a combination between Material UI and Styled components. Additionally we also expose core UI components through Storybook for design alignment purposes. When it comes to testing we’ve chosen Jest for unit tests and Cypress for E2E tests.

Frontend stack

What’s next?

Our aim is to have our engineers regularly fill this blog with posts about interesting topics and initiatives that we’ve worked with. And we want to do this because our philosophy is that “if it excites us — it most likely excites others as well, So stay tuned for a, soon to come, blog post that’ll be as nerdy as all of us Voi engineers are :)

And in the meanwhile, feel free to check out our career page. Who knows — maybe you’re our next Voiager!

--

--