Project 02Mobile App

Zipp.

On-Demand Parcel Delivery

A mobile marketplace connecting parcel senders with drivers across Lithuania. The Fastify backend manages delivery orders and price proposals, while Socket.IO carries live driver locations and negotiation updates. Stripe Connect handles upfront payments and driver payouts, with sender and driver roles available in a single account.

Explore the project
Under the hood

What makes
it work.

The stack

React NativeExpoExpo RouterTypeScriptNativeWindZustandTanStack Queryi18nextFastifyTypeBoxDrizzle ORMKyselyPostgreSQLSocket.IOBunStripe ConnectMapboxSupabaseFirebase (FCM)Expo NotificationsNodemailerSharpArgon2
01

Order Creation

Senders set package size, weight and price, pick collection & delivery points on a Mapbox map and choose a date; payment is taken upfront via Stripe.

02

Map-based Order Discovery

Drivers browse available orders on an interactive Mapbox map and claim the ones that fit their route.

03

Price Negotiation

Drivers propose alternative prices on orders; senders review, accept or reject the proposals in real time.

04

Real-time GPS Tracking

Live driver location streamed to senders over Socket.IO during active deliveries.

05

Stripe Connect Payments & Payouts

Upfront card payments for senders; Stripe Connect accounts with IBAN linking and automated payouts for drivers.

06

Social & Email Authentication

Google and Microsoft OAuth plus email + password with Argon2 hashing, email verification and SMS/email password reset.

07

Push Notifications

Real-time alerts for order events, price proposals and delivery status via Expo Notifications and Firebase Cloud Messaging.

08

Driver Onboarding

Vehicle/transport registration and Stripe bank account setup before drivers can accept jobs.

09

Multi-role Support

A single account switches between sender and driver, with role-aware dashboards.

10

History & Earnings

Drivers track completed and pending earnings; senders see their full order and payment history.

11

Type-safe API

Fastify with TypeBox schemas validating every request/response over Drizzle + Kysely on PostgreSQL.

12

Bilingual & Profile

Full EN / LT localization with i18next, plus profile editing, help center and in-app suggestions.