Jagdeep Sandhu

Things I've built

Chaloo

A carpooling app for India. I built the Flutter app on Supabase, then built a replacement backend that I host myself.

Role
Founder, app and backend developer
Year
2026
Runs on
Backend on my Hetzner server in Helsinki. Marketing site on the DigitalOcean droplet.
Live
chalooapp.com
chalooapp.com home page: headline Share rides. Save money. Let's ride., with a phone mock-up showing rides from Amritsar and Ludhiana.
chalooapp.com, the marketing site.

Problem

Chaloo matches drivers and passengers who are heading the same way, so they can split the cost of the trip. It launched on hosted Supabase.

I wanted the backend on infrastructure I control. The move couldn't mean rewriting the app's security rules, and it couldn't put the live app at risk.

What I built

  • A Postgres 17 and PostGIS database in Docker, loaded with the live schema through small compatibility shims. The existing 35 row-level security policies still decide who can see what.
  • A Node 22 and Fastify API that runs every request as the caller's database role, the same way Supabase does. It covers sign-in (Google, Apple, phone and email), realtime updates over WebSockets filtered by the same policies, push notifications through Firebase Cloud Messaging, and scheduled jobs such as ride reminders.
  • Fixes for bugs that also exist in the live app: reviews blocked by a trigger, broken ride-tracking links and a missing nearby-search function.
  • An 82-check end-to-end smoke test that uses throwaway accounts and cleans up after itself, plus a security check script. Both run against the new stack before each change.
  • A beta build of the app pointed at api.chalooapp.com, built by Xcode Cloud and shipped to TestFlight.

Stack

Flutter, PostgreSQL, PostGIS, Node.js, Fastify, Docker, nginx, Firebase Cloud Messaging, Supabase

Outcome

The self-hosted backend is running in beta (TestFlight build 1.0.9). Google and Apple sign-in and push notifications are confirmed on a real iPhone.

The public app still runs on Supabase. It moves over once the beta has been fully tested on devices.

Proof

chalooapp.com
Up
100% of 7,697 one-minute checks since Sep 28, 2026
Outages
none recorded
TLS
certificate valid to Nov 8, 2026
Measured by my own monitoring. Snapshot taken Oct 4, 2026.
api.chalooapp.com
Up
99.98% of 7,697 one-minute checks since Sep 28, 2026
Outages
1
TLS
certificate valid to Dec 26, 2026
Measured by my own monitoring. Snapshot taken Oct 4, 2026.

See it live: chalooapp.com.