AhojBus
Live · PolandRent 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

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


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