Busflow Docs

Internal documentation portal

Skip to content

Fleet & Staff: User Journeys

Sabine's first days with Busflow — getting her fleet and team into the system so every downstream feature has data to work with.

Context

These journeys cover the onboarding and ongoing management of vehicles and crew — the foundation layer that the Dispatch Board, Tour Management, and Bookings all depend on. They happen before the existing Sabine journey (user-journeys.md Journey 1: "Magic Upload") and represent the very first actions a new operator takes.


J0: Mandatory Operator Profile Setup

Before doing anything else, Thomas (the GF) must input legal company details. Without this, future invoices will be legally invalid.

The Trigger

Thomas creates the account. The system enforces a hard gate: he lands on the Settings → Company Profile page and cannot proceed to Tour Creation without filling it out.

The Layout

The Settings page uses a vertical tab layout with sections:

  • Company Profile (V1 scope)
  • Branding (V1 scope — logo, colors)
  • Billing & Subscription (read-only in V1)
  • Payment, Cancellation, and Deposit configs use smart defaults from the DB schema.

The Action

Thomas fills out the Company Profile:

  • Company name — "Bruning Reisen GmbH" (pre-filled)
  • Legal name — "Bruning Reisen GmbH"
  • Address — "Berliner Str. 42, 10115 Berlin"
  • Country — "Germany"
  • VAT ID — "DE123456789" (Required for DATEV and invoicing)
  • Tax ID — "27/123/45678"
  • Legal form — "GmbH"

He clicks Save. Inline success: fields briefly highlight green.

Branding

Thomas switches to the Branding tab. He uploads the company logo and selects a primary brand color. These values feed into the brand_config JSONB column. (Note: Live PDF preview generation is deferred to Phase 4).


J1: First-Time Fleet Setup

Sabine needs to register her 3 buses.

The Trigger

Sabine navigates to the Fleet section.

The Empty State

The Fleet page displays a clean, inviting empty state: a lightweight bus illustration, the headline "Let's build your fleet", subtext explaining "Add your vehicles to start dispatching and managing capacity," and a prominent "+ Add Vehicle" button.

The Action

Sabine clicks "+ Add Vehicle." A slide-over Drawer opens:

  • License plate (required, unique)
  • Model (required)
  • Vehicle class (required — dropdown: Coach, Minibus, Van)
  • Capacity (required)
  • Transmission (default: Manual)

She fills in "B-BF 1234", "Mercedes Tourismo", "Coach", 49 seats, and clicks Save.

The Payoff

The Drawer closes. The DataTable instantly shows her first vehicle row. A toast slides in: "Vehicle added." The empty state is gone. She repeats for Bus 2 and Bus 3. Total time: under 2 minutes.

The Detail Check

She clicks the row for Bus 1. A popup overlay shows the vehicle's detail card: license plate, model, class, capacity, and status (Active).


J2: Add a New Driver

Sabine registers a new driver, Marco, and records his qualifications.

The Trigger

Sabine navigates to Fleet → Staff. She clicks "+ Add Crew Member."

The Action

A Drawer opens:

  • First name & Last name — "Marco Weber"
  • Role — "Driver"
  • Phone & Email — Contact info.
  • License number & expiry

She clicks Save. Marco appears in the DataTable with status Active.

Adding Qualifications

Sabine clicks Marco's row to open the detail popup. In the Qualifications section, she clicks "+ Add Qualification." A modal appears where she inputs his "Module 95" data.

Linking to User Account

At the bottom of Marco's detail popup, Sabine sees "Busflow Account". She clicks "Link Account", enters Marco's email address, and the system sends an invitation. (Note: Driver App access is Phase 4).


J3: Manage Crew Leave

Driver Klaus requests 2 weeks of vacation via WhatsApp. Sabine approves it in the system.

The Trigger

Sabine opens Fleet → Staff and clicks Klaus's row to open his detail popup.

The Action

In the Absences section, she clicks "+ Add Absence." A modal appears:

  • Type — "Vacation"
  • Start date — "2026-07-10"
  • End date — "2026-07-24"
  • Notes — "Annual summer vacation"

Because Sabine has Manager permissions, the status defaults to Approved. She clicks Save.

Toast: "Leave approved." The absence appears in Klaus's detail view with a green Approved chip.

The Downstream Effect

When the Dispatch Board (Phase 5) loads, Klaus's row shows a vacation block (🏖️) from July 10–24. Dragging Klaus onto any trip in that window triggers a hard block.


J4: Decommission a Vehicle

An old bus is sold. Sabine changes its status.

The Action

Sabine locates Bus 3 in the Fleet DataTable. She clicks the row-level action menu (⋮) and selects "Decommission." The system immediately changes the status to Decommissioned and applies a muted visual treatment to the row.

A toast appears: "Vehicle decommissioned — [Undo]"

What Happens

  • Bus 3 remains in the Fleet DataTable (soft-deleted) with a Decommissioned status chip, filterable via a status dropdown.
  • All historical data remains intact.
  • She can click [Undo] on the toast within 5 seconds if it was a mistake.

Journey Map: Onboarding Sequence

Day 1: Account Created

  ├─ J0: Mandatory Operator Profile (Thomas)
  │    └─ Company name, VAT, Legal Form

  ├─ J1: First-Time Fleet Setup (Sabine)
  │    └─ Register 3 buses (2 min)

  └─ J2: Add Drivers (Sabine)
       └─ Register Klaus, Sarah, Marco + qualifications

Day 2+: Ongoing Operations

  ├─ J3: Manage Leave (as requests come in)
  └─ J4: Decommission (when a bus is sold)


       Ready for Phase 2: Tour & Trip Management

Internal documentation — Busflow