Project 05Mobile App + Web Admin

ChargeShare.

EV Charger Sharing

A mobile marketplace where EV drivers find shared chargers, match with hosts and book available hours. The backend checks host availability and prevents double bookings, while Socket.IO supports chat between matched users. Stripe Connect handles payments and host payouts, with webhooks reconciling payment status and a web dashboard for booking and revenue analytics.

My role

As Co-Founder CTO, I architected and built the React Native app, Fastify backend, PostgreSQL database and web admin dashboard, modelling the host and renter journey from discovery and matching to booking and payment.

Explore the project
Under the hood

What makes
it work.

The stack

React Native (Expo)TypeScriptReact 19ZustandTanStack Query/RouterFastifyTypeBoxDrizzle ORMKyselyPostgreSQLSocket.ioStripe ConnectMapboxSharpSupabaseCloudflare R2NodemailerRechartsNextUIFirebase
01

Interactive Map Discovery

Mapbox map with clustered markers (Turf/GeoJSON) and real-time states: available, matched and selected.

02

Two-way Matching

Tinder-style matching where renters and hosts must mutually match before they can message or book.

03

Real-time Messaging

Socket.io chat with instant delivery, room-targeted events, read-status tracking and auto room creation on match.

04

Booking & Scheduling Engine

Multi-step flow with custom calendar and wheel date picker, hourly slots from each host’s availability and server-side double-booking prevention.

05

Stripe Connect Payments

Stripe Connect Payment Intents and transfers to hosts, connected-account readiness checks and verified webhook signatures. Successful, failed and cancelled payments update booking status.

06

Transactional Email

Handlebars HTML templates (Nodemailer) for verification, match alerts, booking confirmations and Stripe onboarding.

07

Server-side Image Pipeline

Uploads optimized with Sharp to AVIF and resized before storage on Supabase; presigned delivery via Cloudflare R2.

08

Push Notifications

Expo + Firebase (FCM) for match requests, new bookings and incoming messages.

09

Multi-step Onboarding

Image upload, charger/vehicle specs, weekly availability scheduling and a map-based location picker.

10

Dual-role Architecture

A single account operates as host or renter, with role-aware theming and a switch-account flow.

11

Admin Dashboard

Revenue, bookings, growth, verification-funnel and engagement analytics with Recharts, plus a generic table explorer with XLSX export.

12

Protected Customer & Administrator APIs

Token verification, administrator-account checks and restrictions for banned users, with administrative controls for user management and operational analytics.

13

Type-safe API + Monorepo

Fastify with TypeBox schemas validating every request/response over Drizzle + Kysely; mobile, web and API in one repo.