Back to projects
Released

DriverFinanceTracker

Offline Android app for ride-hailing drivers to log income and expenses in a few taps.

Role: App design and development

  • Ionic
  • Angular
  • Capacitor
  • SQLite

APK released (v1.1.2); no download for now.

DriverFinanceTracker home: monthly balance, income, expenses and small recurring expenses

Problem

Many ride-hailing drivers do not know clearly how much they really earn. They receive payments from several apps, spend on fuel, tolls, washing and maintenance, and also have small daily expenses and household costs. Without a record, it all blends together and it is impossible to know what the net income of the week was.

Spreadsheets do not work well here. A driver is not going to open a sheet between two trips, with one hand on the wheel and a weak signal. If logging an entry is awkward, it gets left for later, and what is left for later is forgotten. A tool like this is only useful if noting an income or an expense is almost instant.

There is also the vehicle. Maintenance depends on the kilometers driven, and someone who does not write them down finds out an oil change was due when it is already late and expensive.

Solution and key features

DriverFinanceTracker is an Android app that works offline. It started as a tool for my own use, and I released it as an APK (v1.1.2). There is no public download for now, and I say so to avoid promising something that does not exist. These are its main pieces:

The app is built with Ionic and Angular, packaged with Capacitor, and keeps everything in a local SQLite database. It needs no sign-up and no server, so nobody’s data lives anywhere except the phone of the person using it.

I tested the logic with a broad suite of automated tests, including tests against a real SQLite database, and left a few checks on physical devices for a final pass. The most important thing about the design is that the priority never changed: log quickly, offline and without depending on anyone.

Architecture

DriverFinanceTracker architectureSimplified diagram: the Ionic and Angular app stores everything in a local SQLite database; the daily copy to the Documents folder and the local maintenance alerts come from that database. The app runs on Android through Capacitor.AppIonic + AngularOffline-firstLocal databaseSQLiteCSV backupDocuments folderLocal alertsMaintenance by kmAndroidCapacitorDriverFinanceTracker architectureSimplified diagram: the Ionic and Angular app stores everything in a local SQLite database; the daily copy to the Documents folder and the local maintenance alerts come from that database. The app runs on Android through Capacitor.AppIonic + AngularOffline-firstLocal databaseSQLiteCSV backupDocuments folderAndroidCapacitorLocal alertsMaintenance by km

Simplified diagram; internal details omitted for privacy.

Technical decisions

  1. Local SQLite database, with no cloud sync.

    Why
    A driver works between trips, sometimes without signal. With the data on the phone, logging an entry always works and does not depend on any account or server.
    Trade-off
    If the phone is lost, the data goes with it, which is why I added backups instead of continuous sync.
  2. Money is stored as whole numbers in the currency's minor unit.

    Why
    Binary decimals accumulate rounding errors when adding up many entries. With integers, the daily and monthly totals always add up.
    Trade-off
    Every screen has to convert when displaying and when reading what the user types, an extra step that needs care.
  3. Restoring a CSV file in a single transaction, after validating it and showing a preview.

    Why
    A damaged or incomplete file cannot leave the database half-updated. Either everything is restored or nothing changes.
    Trade-off
    Restoring is slower and stricter than importing row by row, and a file with a single error is rejected as a whole.
  4. Daily automatic backup to the phone's Documents folder, instead of using a cloud service.

    Why
    It avoids asking for accounts or broad permissions, works offline, and the driver can take the file along when switching phones.
    Trade-off
    The copy lives on the same device, so it protects against accidental deletion but not against losing the phone unless the user copies it elsewhere.

My role

I designed and built the whole app, from the interface to local storage, and I also prepared and signed it so it can be installed on other phones. It started as a tool for myself and I kept improving it through daily use.

Next project

ExperimentTennis Live AnalyticsA real-time data and ML project that estimates each player's chance of winning live tennis matches, evaluated with paper trading.View case study

Have a project?

Let's talk about your project