Inspiration

UCI students spend over $400/quarter on parking permits alone — and that's before gas. Meanwhile, thousands of cars sit in traffic on the 405 with empty seats. We wanted to build something that actually solves this: a platform where students heading the same direction can find each other and share the ride.

What it does

ZotPool is a carpooling platform built for the UCI community. Students can post or browse rides, get matched based on route, schedule, and preferences, and coordinate the details -- all within a verified student network. Rides aren't limited to daily commutes either: we support event-based trips like airport runs during breaks, campus events, and off-campus outings, which tend to have the highest demand and the fewest options. Non-UCI community members can also join and access shared listings, while UCI students get verified badges and access to UCI-only posts.

How we built it

The frontend is React 19 with TypeScript and Vite, styled with Tailwind CSS. We use Supabase (Postgres + Row Level Security) for auth, data, and access control -- no custom backend server. Route visualization uses Mapbox GL with geocoding for address search and parking zone selection. The matching engine is a weighted scoring algorithm that evaluates route proximity, time window overlap, day-of-week compatibility, and rider preferences (gender, cost) to surface quality matches. The onboarding flow walks users through account setup, profile, and vehicle registration in a single guided wizard.

Challenges we ran into

Getting the map to feel right was one of our bigger technical hurdles. Rendering Mapbox route previews dynamically as users typed addresses required careful debouncing and state management to keep it responsive rather than laggy.

Designing around trust and safety took real iteration. We had extensive discussions about UCI vs. non-UCI access tiers, when to surface vehicle details (masked while browsing, revealed after match acceptance), and how gender preferences should factor into the matching algorithm. Getting those tradeoffs right meant revisiting decisions multiple times.

Fitting the onboarding flow together was trickier than expected. The liability waiver originally lived on a standalone route that blocked everything, but we moved it into the onboarding wizard where it felt much more natural alongside profile setup and role selection.

Accomplishments that we're proud of

The UI came out exactly how we wanted it -- clean, UCI-themed, and easy to navigate. We put a lot of effort into making ride cards, filters, and the post creation flow feel polished without being cluttered. The matching algorithm also turned out well: it produces genuinely useful results by balancing proximity, timing, and personal preferences with a weighted scoring system.

What we learned

This project pushed us into UI/UX territory we hadn't explored before. The core challenge was information density: every ride has a route, schedule, driver profile, vehicle info, cost details, and preferences. Fitting all of that into browseable cards and expandable modals without overwhelming the user taught us a lot about information architecture -- knowing what to show upfront versus what to tuck behind a click.

What's next for ZotPool

We want to integrate with UCI class schedules and tools like Google Calendar and AntAlmanac so matching can happen automatically based on a student's actual course load. We're also planning group carpools for late-night study sessions and grocery runs, and expanding our safety features as the platform grows.

Built With

Share this project:

Updates