← Index / Work
Travel Agency Back Office
Agency operations app

Travel Agency Back Office

A back office for travel agencies that run their own group trips. Staff plan each departure, sign travellers up, 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. The app runs in Croatian and English, in light and dark themes.

ForAgencies running their own group trips
StaffPlan trips, sign up travellers, take payments
StatusIn development with its first agency
Trips

Season overview

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 trip opens for sign-ups only once its dates, seats and price are set
  • Departures within a week are marked on the list and the timeline
  • Status changes are confirmed, list their consequences and can be undone
Bookings

Bookings and the waiting list

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.

  • Travellers are added from one search field, which stays ready for the next
  • A family can be added to one booking and pay together
  • Seats are counted from active bookings only, so every screen shows the same fill
Payments

Payments per booking

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, with the deposit and the final payment date.

  • Transfer, cash or card, with the card type recorded
  • Suggested amounts for the deposit or the full remainder
  • A CSV export of payments for the accountant
Overdue

Overdue balances

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.

  • The overdue count sits in the sidebar, visible from every screen
  • Completed trips leave the list 60 days after return
Travellers

Traveller records

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.

  • Personal ID numbers are validated, stored encrypted and matched exactly
  • Age is worked out from the birth date on the date of the trip
  • Travellers who no longer book are archived, with their history kept
How it's built
Backend & API
Laravel, PHP, Sanctum, MySQL
Frontend
Vue, TypeScript, Vue Router, Pinia, TanStack Query, TanStack Table
Interface
shadcn-vue, Reka UI, Tailwind, vue-i18n
Quality
PHPUnit, Vitest, ESLint, Prettier