A back office for travel agencies that run their own group trips. Staff plan each departure, sign travellers up, seat them on the bus, take payments and see who still owes, and every screen states what an action will do before it is taken.
Records save as staff type, sending only the fields that changed; a value the server rejects is marked on its field while the rest is saved. Hints under fields and confirmations before consequential actions say what happens automatically, what does not, and whether it can be undone. Staff do all day-to-day work; admins also manage users, settings and the activity log, and deactivating a user signs them out everywhere. The app runs in Croatian and English, in light and dark themes.
Trips are grouped by month with their dates, fill and price, under a four-month timeline of the season. A strip at the top flags drafts that depart within 60 days and drafts still missing what they need to open.
A booking has one payer and one or more travellers. Each traveller's price is copied from the trip at the moment of booking, with surcharges and discounts as separate lines. A booking that does not fit goes on the waiting list automatically, and nobody can be on the same trip twice.
A trip has one or more buses, and their seats set its capacity. Seats are assigned on a map of the bus: choose a traveller, then a free seat, or a taken one to swap the two, and the next member of the same booking is chosen automatically. Saved buses bring their carrier, seat layout and usual driver and guide onto a trip, and each bus gets its own printable passenger list.
Payments belong to the booking, which pays as a whole. Each records its date, method, reference and who handed over the money, and the booking panel shows the total, what is paid and what remains. Money can also go back as a refund, which needs a reason, or move to another booking as a linked pair of entries. A cancelled booking shows what the agency still holds.
Bookings still owing after their trip's final payment date are collected on one page, longest overdue first, with the payer's phone number. The final payment date is set per trip, or defaults to 30 days before departure.
A traveller's record keeps their details and every trip they have booked, with what they paid and what they owe. Search ignores diacritics, so "saric" finds "Šarić", and a new entry warns when the person may already exist.
Every change to trips, travellers, bookings, payments, users and settings is recorded field by field, with the old value, the new one and who made it. Edits by the same person to the same record within ten minutes fold into one entry, so autosave doesn't write a line per pause. Admins read the log on its own page and in a history tab on each trip and traveller.