ShareRoute PKT --:--

FaisalabadLahore

Someone is already driving there.

آپ کا راستہ، کسی اور کا بھی

ShareRoute fills the empty seats and the empty boot on trips people make anyway: between cities on the Faisalabad–Lahore corridor, and on the daily commute across town.

Ride the route
Next with a free seat--
08:00Faisalabad Lahore
3 seats2 parcel slotsCash to driver
Departuresروانگی1/2
TimeFromToViaSeatPclStatus
                                                   
                                                   
                                                   
                                                   
                                                   
01 FSD · Publish

It starts with a driver who was going anyway.

Imran drives Faisalabad to Lahore every weekday for work. He verifies his CNIC and car once, then publishes the trip with an origin, a destination and what he has room for. A weekday trip becomes five separate trips, so a seat on Tuesday never gets mixed up with Wednesday.

TR-2291✓ CNIC and vehicle verified
FromFaisalabad
ToLahore

No stops to type. The road decides who can be picked up along the way.

Leaves08:00
Seats3
Parcels2
CarLEA-4521
Repeats
5 trips a week, each one booked on its own
02 KHW · Match

Matched by the road, not the city name.

Imran typed two cities. Sana lives off the road near Khurrianwala. She never appears in a search for “Faisalabad”, but the route passes close to her and to where she is going. If both ends fall inside the radius, she is a match, and Imran sees the extra distance before he says yes.

FSDKHWSKPLHRRider · 2.4 km off roadDrop
No match yetThe road passes 2.4 km from the rider. Widen the radius.
03 SKP · Seats

A seat is free for a stretch of road, not for a whole trip.

Ayesha gets off at Sheikhupura. Hira gets on there. One seat, two riders, never at the same time. Every trip keeps a ledger for each stretch between stops, so the car is never sold out while a seat sits empty. Pick a stretch and try booking it.

Board at
Get off at
Parcel space · counted separately
PR-0381 FSD › LHR1 of 2 free all the way
A single trip-wide counter says

3 bookings, 3 seats: full

ShareRoute says

1 seat from Faisalabad to Lahore

04 PCL · Parcel

The empty boot carries a parcel.

Kamran is sending documents to his sister in Lahore. She doesn't have the app and doesn't need it. Kamran holds one code, she gets another by SMS, and the parcel counts as delivered only when the driver has entered both. You are the driver. The codes are on the right.

Driver · TR-2291PR-0381

Enter the sender's pickup code

On the sender's phone

Read this to the driver when you hand over the parcel.

418 207Kamran · Pickup at Faisalabad
  1. 07:52 Parcel attached to TR-2291
  2. --:-- Picked up at Faisalabad
  3. --:-- Delivered at Lahore
  4. --:-- Completed

Every handover is time-stamped. If anything goes wrong, these stamps are the evidence a dispute is judged on.

05 LHR · Arrive

Arrive. Pay in cash. Leave a word.

No wallet, no card form. You hand the driver the fare and the app only keeps track of who rode where. Your rating feeds the score the next rider sees before booking. If something went wrong, a report becomes a dispute a person reviews, with the handover times as evidence.

BK-1063 · TR-2291Tue, 17 Nov
Khurrianwala → LahoreRs 950
Paid toImran, in cash
Boarded · dropped08:31 · 10:18
How was the ride with Imran?
Tap to rate
— Left at the depot

Things we decided not to build.

A small project that does one thing properly beats a big one that does six things badly.

  1. 01Instant ride-hailingCareem and inDrive already send a car to you. ShareRoute fills cars that are leaving anyway.
  2. 02Surge pricingRain, Eid or rush hour, the fare the driver set is the fare.
  3. 03In-app walletsPay the driver in cash. JazzCash and Easypaisa can come later, once people trust the routes.
  4. 04Automated risk scoresA person reads every dispute, with the handover record in front of them.
  5. 05Promoted listingsNobody pays to sit at the top of your search results.
⚙ Under the bonnet

The parts list.

Two apps, one database. Specified as 25 functional and 7 non-functional requirements before a line of code was written.

25functional requirements
7non-functional
5actors, from rider to admin
Rider and driver app
Flutter · shadcn_ui
Admin panel
Laravel · Blade · Tailwind 4
App sign-in
Sanctum tokens
Staff sign-in
Fortify, 2FA required
Route matching
MySQL ST_Distance_Sphere, indexed
Capacity
Per-segment ledger, locked in a transaction
Routes
Directions API (Google Maps or OSRM)
Database
35 tables
Audit
Every admin action: who, what, when
Staff roles
super_admin · admin · support

Two riders tapping “Book” on the last seat at the same moment: one gets it, the other is told straight away. That is what the transaction is for.