Inspiration

Two experiences shaped this project: meeting my girlfriend through a dating app, and relying on help from the motorcycle community as a student. Both showed how powerful the right platform can be when it connects the right people.

What it does

Roadmates is a mobile app for people living the van life. It focuses on three things.

People
Swipe to discover nearby vanlifers. Filter by interests, relationship type, or who wants to meet up. Matches drop straight into chat.

Community
A shared feed for campspots, road stories, and van life tips. Like a campfire conversation, just async.

Builder Marketplace
A trust based marketplace where users offer skills, sell parts, or ask for help. No payments handled in app. People connect and work it out themselves.

All interactions use real time chat over WebSockets.

How it is built

The backend uses Django REST Framework with Django Channels and Daphne. Postgres handles data storage. Auth is JWT based with refresh tokens. The API supports profiles, vans, swipe matching, chat rooms, and shared community and marketplace threads.

The frontend is a Flutter app for Android and iOS. It uses a singleton API service with automatic token refresh and a custom design system built around forest green tones. Navigation uses a five tab floating bar. Chat is fully real time. Community and marketplace share the same thread and reply system.

The app ships with seeded data including realistic user profiles, van builds, photos, community posts, and marketplace listings so it feels alive on first launch.

Deployment runs on an Ubuntu server with nginx reverse proxying to Daphne.

Challenges

WebSocket reliability was the hardest part. Connection lifecycle handling in Flutter required care so chat would survive navigation. Optimistic message rendering with deduplication was needed to keep chat instant but correct.

Discovery needed context aware filtering. Users already swiped on should not reappear in People, but could still appear in the marketplace. This was solved with lightweight context parameters on discovery endpoints.

Image handling had several edge cases including DRF action routing quirks and client side media URL resolution.

What worked well

The app is fully functional end to end. Users can register, create a profile and van, swipe, match, chat in real time, browse the marketplace, post in the community, and contact others.

The design is consistent across the app. Every screen follows the same spacing, card system, and color palette.

Generated seed data makes the product immediately understandable and usable.

Monetarisation

A Roadmates Premium subscription for unlimited swipes and promoted listings

What is next

Location based discovery using GPS radius matching
Push notifications for chat An AI powered van build assistant for common problems (because it is 2026)

For Testing

In case you are interested in testing the app on your device, the invite code on the first page is "shipyard"

Built With

Share this project:

Updates