Address
Utrecht, Veenendaal

Work Hours
Monday to Friday: 9am to 5pm
Weekend: 10am to 5pm

Car Sharing Mobile Application

A personal project: a mobile app for a shared car, tracking who drove it, what it cost and how that splits between drivers. A .NET backend with MySQL behind a React Native app and a Vue.js web client.

  • TypePersonal project
  • Period2021
  • RoleSolo full stack build
  • DeliverediOS and Android app, web client, backend
  • Mileage and fuel settled per trip and per driver, so nobody has to remember who filled the tank.
  • Push notifications and email keep every driver current on where the car is and who has it.
  • iOS, Android and web on one backend, so the app and the web client never disagree about what a trip cost.

Context

Sharing a car between several people works until the money comes up. Everyone remembers the trips differently, the fuel receipts are in somebody else's glovebox, and the settling up is an argument nobody wanted. The app takes that off the table by recording it as it happens.

The challenge

Fairness has to be computed, not assumed. Mileage, fuel and who was driving each have to be captured accurately at the moment of use, because none of it can be reconstructed afterwards. And the app is only useful if drivers actually reach for it, which makes notifications and the flow of the thing part of the engineering, not decoration on top of it.

What I did

  • Built the .NET backend, holding trips, drivers, costs and the settlement logic that turns them into what each person owes.
  • Modelled the data in MySQL, around trips and cost events, so a correction is a new fact rather than a rewrite of history.
  • Shipped the mobile app in React Native with Expo, to iOS and Android from one codebase.
  • Built a Vue.js web client on the same services, for the things that are easier on a keyboard, such as reviewing a period or correcting a trip.
  • Added push notifications and email, on the events that actually matter to the other drivers, and only those.

The outcome

  • Shared use recorded as it happens instead of reconstructed from memory.
  • Costs split on the numbers, which takes the argument out of the settlement.
  • One backend, two clients, and a clean line between what the services own and what each client renders.

Technologies used

  • .NET: The backend services and the cost settlement logic.
  • C#: The language the backend is written in.
  • MySQL: Trips, drivers, vehicles and cost events.
  • React Native: The iOS and Android app, built with Expo.
  • Vue.js: The web client over the same services.

React, Next.js and React Native are five years of my own building, and I am glad to walk you through what that covers.