Aven

A ride-hailing web app: order a driver, then follow the whole trip live on the map.

Aven Cover
Year
2026
Role
Solo project: design, frontend, backend and database
Platforms
Web
Mobile (planned)
Next.jsTypeScriptPrismaPostgreSQLBetter AuthMapLibreOSRM

Overview

Aven is a ride-hailing app in the spirit of Uber. A customer orders a driver, the first driver to accept gets the ride, and both follow it live on a shared page.

Order a ride in a few taps

Type a few letters, pick the place, and the route appears on the map right away with the distance.

  • Search any place in Bosnia and Herzegovina
  • Route drawn on the map before you order
  • Driver arrives in real time
Aven order screen

A request lands, one driver takes it

Drivers work from their own area. When a customer is nearby, a modal pops up and the first accept wins.

  • Own workspace at /account/driver
  • Request modal for nearby customers
  • Taken to the ride page together with the customer
Aven driver screen

How a ride works

  1. Pick destination

    Search and see the route

  2. Drivers notified

    Nearby drivers get the request

  3. First accept wins

    Only one driver gets the ride

  4. Shared page

    Both land on the ride page

  5. Live trip

    Customer follows in real time

Who uses it

Customer

  • Search any place in Bosnia and Herzegovina by typing a few letters
  • See the route drawn on the map
  • Order a driver
  • Watch the driver arrive in real time
  • Follow the trip and the distance covered

Driver

  • Works from their own area at /account/driver
  • Gets a request modal when a customer is in their area
  • The first to accept gets the ride
  • Is taken to the ride page together with the customer
The idea

A project with real moving parts: two people watching the same ride, a location that keeps changing, and one decision that must happen exactly once.

Key features

Local place search

Type "tra" and get Travnik. Built for places in Bosnia and Herzegovina.

Instant routes

Route and distance are drawn on the map before the customer orders.

First accept wins

No double bookings, even when two drivers tap at the same moment.

Live tracking

Customer and driver see the same ride, stage by stage.

How I built it

Next.js + TypeScript

One codebase for the interface and the backend.

Prisma + PostgreSQL

Users, drivers and rides modelled with clear relations.

Better Auth

Accounts and roles without reinventing login.

MapLibre

Open-source live map instead of a paid service.

OSRM

Routes and distances, also open source.

Location API

Powers the search box for Bosnia and Herzegovina.

Screens

Aven screenshot
Ordering a ride
Aven screenshot
Driver request
Aven screenshot
Account Page
Aven screenshot
Live trip

Challenges

Problem

Two drivers can press accept at almost the same moment.zz

Solution

Checking that the ride is still free and assigning it happen as one step in the database, so only the first accept wins.

Problem

The customer's and the driver's ride page must stay in sync while the driver moves.

Solution

Both pages read the same ride state, so what each person sees always matches the stage the ride is in.

What I learned

01

State is everything

Live features are mostly about state: who owns the ride and which stage it is in.

02

Model it cleanly

A clean database model makes everything else simpler.

03

Open source is enough

MapLibre and OSRM can replace a single paid map service.