← back to work
04ev-charging.tsxMobile App
EV Charger Sharing
ChargeShareA two-sided app connecting EV owners who need charging with hosts who have chargers to share — discover chargers on a map, mutually match, book real availability and pay securely, backed by a type-safe API and analytics-rich admin dashboard.
React Native (Expo)TypeScriptReact 19ZustandTanStack Query/RouterFastifyTypeBoxDrizzle ORMKyselyPostgreSQLSocket.ioStripe ConnectMapboxSharpSupabaseCloudflare R2NodemailerRechartsNextUIFirebase
drop screenshot
Mobile App · 01
Mobile App · 01
drop screenshot
Mobile App · 02
Mobile App · 02
// key_features
▸
Interactive Map Discovery
Mapbox map with clustered markers (Turf/GeoJSON) and real-time states: available, matched and selected.
▸
Two-way Matching
Tinder-style matching where renters and hosts must mutually match before they can message or book.
▸
Real-time Messaging
Socket.io chat with instant delivery, room-targeted events, read-status tracking and auto room creation on match.
▸
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.
▸
Stripe Connect Payments
Payment Intents, connected accounts for host payouts, platform fee calculation and webhook reconciliation.
▸
Transactional Email
Handlebars HTML templates (Nodemailer) for verification, match alerts, booking confirmations and Stripe onboarding.
▸
Server-side Image Pipeline
Uploads optimized with Sharp to AVIF and resized before storage on Supabase; presigned delivery via Cloudflare R2.
▸
Push Notifications
Expo + Firebase (FCM) for match requests, new bookings and incoming messages.
▸
Multi-step Onboarding
Image upload, charger/vehicle specs, weekly availability scheduling and a map-based location picker.
▸
Dual-role Architecture
A single account operates as host or renter, with role-aware theming and a switch-account flow.
▸
Admin Dashboard
Revenue, bookings, growth, verification-funnel and engagement analytics with Recharts, plus a generic table explorer with XLSX export.
▸
Type-safe API + Monorepo
Fastify with TypeBox schemas validating every request/response over Drizzle + Kysely; mobile, web and API in one repo.
© 2026 marius mariakinas · all rights reserved · built from scratch