Documentation
Comma is a privacy-first earnings tracker for gig workers in Canada: it records shifts, GPS mileage, expenses, and CRA-aware tax estimates, and everything stays on your device unless you choose to sync it.

Get Comma
| Platform | Where | Notes |
|---|---|---|
| Android | github.com/raiz-toff/Comma/releases/latest | Download the APK and sideload it by allowing "Install unknown apps". A Play Store listing is planned. |
| Web | comma-psi.vercel.app | Opens in any modern browser and installs as a PWA. See Web App (PWA). |
| Source | github.com/raiz-toff/Comma | One monorepo holding the phone app, the web app, and these docs. |
What makes Comma different
- No account. No email, no password, no server to sign up for. You open the app and start tracking.
- Local-first. Your data lives in a database on your own device — SQLite on the phone, IndexedDB in the browser. Comma has no backend and cannot see your earnings.
- Background GPS on the phone. A native foreground service records your route during a shift and separates active delivery distance from dead distance. The web app tracks too, but only while its tab stays open.
- CRA-aware tax. Comma loads Canadian mileage rates, HST/GST, CPP, and province presets, and keeps a running self-employment estimate. It is an estimator, not tax advice.
- Optional Google Drive sync. Connect your own Drive to keep the phone and the web app in step. It is off until you connect it, and everything it syncs is end-to-end encrypted with a backup password only you hold.
Comma ships for Canada only today. Definitions for other countries exist in the source but are deliberately not enabled.
Guides
- Introduction — What Comma is and how it works.
- Quick Start — Install, onboard, and log your first shift.
- Core Concepts — Shifts, platforms, active versus dead distance.
- FAQ — Common questions about the phone and web apps.
- Troubleshooting — Fixes for common issues on both apps.
How-to Guides
- Install Comma — Sideload the Android app or install the PWA.
- Demo Mode — Explore the app with sample data.
- Moving Between Devices — Carry your data across phones and browsers.
- Import from CSV — Bring earnings in from a spreadsheet.
Features
- Shift Tracking — Live GPS shifts and manual log entries.
- Mileage Tracking — How the GPS engine measures distance.
- Expenses — Log and categorize business expenses.
- Tax Center — Self-employment tax estimates.
- Goals and Gamification — Weekly goals, XP, badges, streaks.
- Vehicles — Manage vehicles and maintenance logs.
- Analytics and Reports — Charts, trends, and exportable reports.
- Supported Platforms — The gig platforms Comma covers.
- Web App (PWA) — Using Comma in the browser.
Reference
- Settings — Every setting and what it changes.
- Shift Fields — Each field on a shift record.
- Expense Fields — Each field on an expense record.
- Feature Flags — The gated features and their defaults.
- Platforms — The platform registry.
- Countries — The country registry and what ships.
- Notifications — The notifications Comma raises.
- Keyboard Shortcuts — Shortcuts in the web app.
Backup and Sync
- Overview — The local-first philosophy.
- Google Drive Backup — Set up and use encrypted backup.
- Cloud Sync — Multi-device sync through your own Drive.
- Encryption — How your data is protected.
Architecture
- Overview — Tech stack and design principles.
- Database — SQLite schema reference.
- State Management — Zustand and React Query.
- Navigation — Screen and routing structure.
- GPS Engine — The native background location service.
Development
- Setup — Run both apps locally.
- Project Structure — The monorepo file tree.
- Environment Variables —
.envconfiguration. - Native Module — The
comma-trackerKotlin module. - Contributing — Code style, PRs, and conventions.
- Releasing — Building and publishing a release.
License
Comma is MIT licensed. Open source, no paywall.