AhojBus

Live · Poland

Rent a van or minibus without calling ten companies.

Renting a nine-seater in Poland usually means phoning around and filling in forms until someone has something free. On AhojBus you say where, when and how many people, and you see vehicles that are actually available, with the price, before you book.

The other side is a complete system for rental companies: fleet, calendar, bookings, contracts, payments and clients in one place. Each new company makes the network more useful for customers and for the other operators.

lines of Rust
~65k
overlapping bookings the database will accept
0
free for rental companies
60 days
online payments via Stripe
Card · BLIK
AhojBus search page: pick-up city, dates and number of seats to find a free van

For people renting

  • Search that returns vans

    Pick-up city, dates and seats return vehicles that are free for that window, not a directory of companies to call.

  • Price before you book

    The full price, deposit and any extras are shown upfront and frozen on the booking, so nothing changes at the counter.

  • No account needed

    A booking card with the pickup code arrives by email. Online check-in before pickup turns fifteen minutes at the desk into a few.

  • Pay how you like

    Card or BLIK online through Stripe, or at pickup. A late payment for a booking that already expired is refunded automatically.

For rental companies

  • The whole day on one screen

    Pickups, returns, bookings waiting for confirmation and the week’s fleet usage on the dashboard.

  • Fleet calendar

    Every vehicle by day, with bookings, maintenance and blocks. Google Calendar sync for teams that live there.

  • Contracts and handovers

    Rental agreements generated and signed in the app; handover and return protocols with mileage, fuel and photo evidence.

  • Fleet from a spreadsheet

    Import vehicles from CSV or Excel; models are matched to a shared catalogue so the fleet is live in minutes.

  • Pricing that works for you

    Day rates, long-rental discounts, promo codes, add-ons and opt-in high-demand pricing, applied in one fixed order everywhere a price appears.

  • Leads from the network

    A request you can’t serve goes to a partner company instead of being lost; the chain of hand-offs is kept.

A closer look

AhojBus operator dashboard in Polish: vehicles on the road, upcoming pickups and returns, bookings to confirm and 30-day revenue
The operator dashboard: what is on the road, what leaves and returns this week, and what still needs a decision.
AhojBus booking card on a phone: confirmed booking with vehicle, dates, price, deposit and online check-in
The booking card customers get: pickup code, price and deposit, and online check-in. No account required.

How it's built

A modular Rust monolith on PostgreSQL, deliberately boring where it matters. Availability is an exclusion constraint in the database: ten parallel requests for the same van produce exactly one booking. The app never shows a vehicle as free on stale data.

Money is always integer minor units with a currency, never floating point, and business rules run in Warsaw time. Every schema change is a numbered migration applied at boot.

  • Rust
  • PostgreSQL
  • SolidJS
  • Rust crates: domain (types and rules, no I/O), infra (PostgreSQL), api (Axum) and a background worker
  • A deterministic decision layer spots idle vehicles and demand peaks and suggests a discount or surge pricing in one click
  • Stripe Checkout with card and BLIK; Stripe Connect can route payments straight to the rental company
  • SolidJS frontend with shadcn-style primitives, designed for phones first
  • Self-hosted on an ARM server behind Caddy, with verified nightly backups

Loading…