Intercity carpooling platform for Egypt — NestJS backend, Flutter app, Kashier payments
# يلا نسافر · Yala Nsafr
Intercity carpooling for Egypt. Drivers post trips they are already making, passengers
book a seat, and the platform holds the fare in escrow until the trip completes — taking
a 7% commission and paying the driver out to a mobile wallet or bank account.
| | |
|---|---|
| **Backend** | NestJS 11 · PostgreSQL + PostGIS · Redis · TypeORM |
| **Mobile** | Flutter (Dart SDK ≥ 3.3), Riverpod, GoRouter — Arabic-first, RTL |
| **Payments** | Kashier (authorize → capture escrow, plus payouts) |
| **Push** | Firebase Cloud Messaging |
| **Tests** | 111 end-to-end tests against a real Postgres instance |
The marketing site lives separately at
and222row/yala-nsafr-website.
---
## What it does
**Trips & booking** — search by route and date, seat availability, women-only trips,
preferences (smoking, pets, luggage, A/C, chattiness), per-trip comments and group chat,
live driver location while a trip is running, and an SOS button for every participant.
**Money** — card and wallet payments are *authorized* at booking and only *captured*
when the driver ends the trip, so a passenger's funds are held rather than taken.
Cancellations resolve by policy (free cancel → void the hold, late cancel → capture then
partially refund, no refund → capture in full). Cash trips skip escrow entirely and are
tracked for commission only.
**Drivers** — verification, earnings broken down per trip, withdrawals to Vodafone Cash /
InstaPay / bank, and subscription-gated trip posting.
**Trust & safety** — two-sided ratings revealed after both parties submit (or after 7
days), disputes with admin mediation, user blocking, and an escalating ban for drivers who
repeatedly cancel (3 strikes → 7-day posting ban, 5 → 30 days, 10 → suspension).
**Automation** — scheduled jobs send pre-departure reminders, auto-cancel abandoned trips,
auto-reject bookings a driver never answers, reveal expired ratings, and reconcile payouts
against Kashier.
---
## Getting started
### Prerequisi …