Busflow Docs

Internal documentation portal

Skip to content
πŸ“‹ Project Reviewed 10 May 2026

xtoura App β€” Feature Audit ​

Source: Codebase analysis of satzart-xtoura-app monorepo. Tech stack: Vue 3 + Quasar v2 + Capacitor v7 (iOS/Android native), NestJS backend, Hasura GraphQL, PostgreSQL, Firebase, Redis/BullMQ. Architecture: Multi-tenant SaaS (tenant ID injected via Hasura row-level permissions). Each operator gets a white-labeled instance of the same app.


System Architecture ​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Mobile App (Capacitor β€” iOS + Android)              β”‚
β”‚   Vue 3 + Quasar + Apollo Client + Pinia            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Admin Interface (Web)                               β”‚
β”‚   Vue 3 + Quasar β€” operator configuration panel     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Hasura GraphQL Engine (API gateway)                 β”‚
β”‚   Row-level permissions per tenant                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ NestJS Backend (business logic + async jobs)        β”‚
β”‚   Modules: AI, Kuschick, Turista, Messaging,        β”‚
β”‚   PDF, CleverReach, Auth                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ PostgreSQL + Redis (BullMQ)                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key architectural trait: The backend integrates directly with Kuschick and Turista (legacy ERP systems) via dedicated NestJS modules. The app pulls booking data, invoices, and vouchers from these systems and presents them to passengers. This is a "glass pane over legacy ERP" architecture β€” xtoura does not own the booking or operational data.


Feature Surface β€” Mobile App ​

1. Trip Catalog (Browse & Discover) ​

FeatureDescriptionMaturity
Trip ListingFilterable list of upcoming tours with image carousels, category tags (Land, Region, Art).βœ… Shipped
Trip Detail ViewRich content page: title, subtitle, intro, itinerary, services included, hotel info, route maps, dynamic content fields. Configurable section ordering and expandable/collapsible sections.βœ… Shipped
Custom CSS per operatorOperators inject custom CSS via the admin configurator. Styles are scoped to .trip-detail-view at runtime.βœ… Shipped
Price Table & Date SelectorDisplays price tiers (demographic pricing), optional date picker for multi-date trips, ancillary options (Zusatzleistungen).βœ… Shipped
Booking Redirect"Zur Buchung" button opens an external booking URL (operator's website or Kuschick web portal) in an in-app browser. No native booking flow.βœ… Shipped
Trip SharingNative share sheet (Capacitor Share API) for sharing trip links.βœ… Shipped

Key insight: The app does not handle bookings natively. It redirects to external booking URLs. This is a fundamental architectural limitation.

2. My Trips (Post-Booking Passenger Portal) ​

FeatureDescriptionMaturity
Booked Trip ListShows trips the logged-in passenger has booked.βœ… Shipped
Trip Detail (booked)Displays dates, images, start address with embedded map (StreetMap component + Google Maps link).βœ… Shipped
Kuschick Data IntegrationPulls detailed booking data from Kuschick ERP: transport (BefΓΆrderung), accommodation (Unterbringung), ancillaries (Zusatzleistungen), pickup stops (Zustiege), seat plans (SitzplΓ€ne), insurance (Versicherung).βœ… Shipped
Turista Data IntegrationSimilar integration for Turista ERP systems.βœ… Shipped
Document DownloadsDownload booking confirmation PDF (Vorgangsdruck), voucher PDF (Voucherdruck), and per-user uploaded files. Offline-capable with local filesystem caching (Capacitor Filesystem).βœ… Shipped
Trip FilesGeneral files attached to trips (operator-uploaded) + user-specific files.βœ… Shipped
NotificationsPer-trip notification list displayed inline in the trip detail.βœ… Shipped
Post-Trip Survey BannerBanner prompting passengers to complete a survey after their trip (links to survey page).βœ… Shipped

3. Digital Catalog Viewer ​

FeatureDescriptionMaturity
PDF CatalogFetches PDF travel catalogs from operator-configured URLs, displays thumbnails, opens full PDFs.βœ… Shipped
Interactive Image CatalogPage-by-page image viewer with interactive hotspots (x/y coordinate-based). Hotspots can link to specific trips or external URLs. Supports preloading and presigned URL caching.βœ… Shipped

Key insight: This is the digitized version of the physical travel catalog. The operator uploads catalog pages as images, places interactive hotspots on them, and passengers tap to navigate to trips. This is a unique feature that Busflow does not plan to offer.

4. Travel Checklist ​

FeatureDescriptionMaturity
Packing ChecklistLocal-only (localStorage) checklist with default items (Personalausweis, Reiseunterlagen, etc.). Add/delete/reset items.βœ… Shipped

Key insight: A simple convenience feature. No backend integration. Purely client-side.

5. Office Finder ​

FeatureDescriptionMaturity
Office DirectoryLists operator branch offices with contact details: phone, email, address, opening hours, contact person with avatar.βœ… Shipped
Direct ActionsTap-to-call, tap-to-email, open address in Google Maps.βœ… Shipped

6. Messaging & Notifications ​

FeatureDescriptionMaturity
Push NotificationsFirebase-based push notifications to passenger devices.βœ… Shipped
In-App Notification CenterMessaging center for trip-specific notifications (departure info, updates).βœ… Shipped
Per-Trip NotificationsNotification cards displayed within the My Trip detail view.βœ… Shipped

7. Surveys ​

FeatureDescriptionMaturity
Post-Trip SurveyPassengers complete surveys after trips. Results tracked per user to avoid duplicates.βœ… Shipped

Feature Surface β€” Admin Interface ​

ModuleDescription
App ConfiguratorJSON-based configuration editor with live iPhone mockup preview. Configures: booking URLs, phone numbers, custom CSS, dynamic content fields, expandable sections, booking button labels.
Trip ManagementCRUD for trip content (title, subtitle, itinerary, services, hotel info, prices, dates, extras).
Catalogue ManagementUpload and organize catalog images. Place interactive hotspots on catalog pages linking to trips.
File ManagementUpload files to trips (general or user-specific).
MessagingSend push notifications to passengers.
NewsletterCleverReach integration for email marketing campaigns.
Survey ManagementCreate surveys, view analytics, manage responses.
User ManagementManage app users and roles.
Module SystemEnable/disable feature modules per operator (modular tile-based UI).

Backend Integrations ​

ModulePurpose
KuschickFetch booking details, invoices (Rechnung), booking confirmations (Vorgangsdruck), vouchers from Kuschick ERP. Agentur-code-based authentication.
TuristaFetch booking data from Turista ERP systems.
CleverReachEmail marketing / newsletter integration.
AI (OpenAI + Gemini)AI features β€” content generation and translation for trip descriptions and marketing copy.
PDF (Stirling PDF)PDF generation for documents.
Messaging (Twilio)SMS/Email messaging to passengers.

Feature Overlap with Busflow β€” Critical Assessment ​

IMPORTANT

The overlap assessments below are critically honest, not diplomatically convenient. Each row includes a "reality check" that flags where the initial analysis was oversimplified, premature, or biased.

High-Overlap Features ​

xtoura FeatureBusflow EquivalentOverlapReality Check
Trip Catalog (browse)Booking Widget + Tour listingsMedium (not High)The initial "High" rating conflates two different things. xtoura's catalog is a content-rich browsing experience β€” image carousels, itineraries, hotel descriptions, map imagery, custom CSS styling per operator. Busflow's booking widget is a transactional checkout flow β€” it assumes the discovery and browsing happened elsewhere (partner website, physical catalog). Busflow does not plan to build a full catalog browsing experience; it embeds a conversion widget. These serve different stages of the funnel. The overlap exists only if Busflow builds a standalone Passenger Portal with trip browsing β€” which is [v0.2] at best.
My Trips (booked)Branded Passenger PortalHigh (confirmed)This assessment stands. Both products show booked trip details to passengers. However: Busflow's portal does not exist yet. It is planned for [v0.2] with a "start with small widgets" strategy. xtoura's My Trips is shipped and functional today. The "Busflow portal is deeper" claim is aspirational, not factual.
Push NotificationsTrigger-Based AutomationLow–Medium (not High)Overrated in the initial analysis. xtoura's notifications are simple Firebase push blasts β€” manual sends from the admin panel, no event logic, no automation. Busflow's Trigger-Based Automation is an event-driven pipeline with T-24h reminders, post-trip reviews, crisis broadcasts, and a Communication Decision Engine with Supersession Rules. These are architecturally different systems at completely different maturity levels. The overlap is superficial: "both send push notifications." The depth gap is enormous. But β€” Busflow's system is also entirely unbuilt.

Superseded Features (With Caveats) ​

xtoura FeatureBusflow EquivalentOverlapReality Check
Booking redirectNative checkout + paymentSuperseded (in theory)The "Superseded" label is premature. xtoura's booking redirect works today with existing operator booking pages (Kuschick web portal, partner websites). Busflow's native checkout is [v0.1] roadmap. Until Busflow ships and an operator migrates, xtoura's redirect remains the only working booking funnel for existing operators. The label should be "Superseded once Busflow ships," not "Superseded."
PDF/Voucher downloadBusflow-generated PDFs + Wallet PassesDisplay layer onlyReclassified after founder input. xtoura does not generate PDFs β€” it only displays documents produced by Kuschick/Turista. Busflow will also generate PDF itineraries, confirmations, and vouchers. xtoura could simply display Busflow's PDFs instead of Kuschick's. This makes the xtoura feature a data-source-agnostic display mechanism, not a competing product. The "Superseded by wallet passes" framing was wrong β€” PDFs remain necessary for older DACH demographics. Busflow will produce both PDFs and wallet passes; xtoura can surface either.
Kuschick/Turista integrationN/A (Busflow is the system of record)Replaced (eventually)Correct in principle, but the transition timeline matters enormously. Not every operator will migrate to Busflow immediately. Operators still running on Kuschick/Turista need the xtoura-app as their only passenger-facing digital surface. Busflow "replacing" ERPs is a multi-year migration, not a switch. During the migration window, xtoura's ERP integration is more valuable, not less.

Non-Overlapping Features ​

xtoura FeatureBusflow EquivalentOverlapReality Check
Interactive CatalogNo equivalentNoneCorrectly identified as unique. The interactive catalog with x/y hotspots linking to trip details/booking pages is a digitized version of the physical travel catalog β€” a marketing-layer feature that Busflow's non-goal #5 explicitly excludes.
Travel ChecklistNo equivalentNoneCorrectly identified as trivial. localStorage-only, no backend. Not worth discussion.
Office FinderNo equivalentNoneCorrect assessment, but worth noting: Busflow's Branded Passenger Portal could eventually include a "contact your operator" section. This would not be an "Office Finder" but could partially overlap. Low priority.
SurveysNo equivalentNone (but adjacent)The initial assessment ("could integrate via n8n") is hand-wavey. More precisely: Busflow's event system could emit TripCompleted or BookingFulfilled domain events that trigger external survey tools (Typeform, Google Forms) via n8n. But this is a generic webhook integration, not a survey product. xtoura's surveys are first-class: create surveys in the admin, collect results, view analytics. Busflow will never build this.
Newsletter (CleverReach)No equivalentNone (but adjacent)The initial assessment ("Busflow's Customer Intelligence data could feed into CleverReach segments") is correct but misleading β€” Customer Intelligence is [future β€” Phase 3], making this a 2+ year aspiration, not a near-term integration.
Custom CSS per operatorWhite-label parameters (today); Custom CSS capability plannedShared capabilityReclassified after founder input. Custom CSS is not a "feature" but a platform capability β€” the ability for operators or their agencies to deeply customize the visual presentation. Busflow sees high potential in this capability and will likely offer it too. xtoura's current implementation (raw CSS injection at runtime, scoped to .trip-detail-view) is a working proof of concept. Busflow can learn from both the value (operators love deep customization) and the pitfalls (operators break their own apps with bad CSS). This is not xtoura-exclusive β€” it is a shared direction.

Missing from the Original Analysis ​

The original table omitted two important overlap dimensions:

1. Non-Goal #1 β€” Consumer Travel Planning App

Busflow's explicit non-goal states: "Consumer travel planning app β€” Lambus territory. Our B2C surface serves the operator's passengers, not independent travelers."

xtoura-app is dangerously close to this non-goal. It functions as a consumer-facing travel catalog and trip planner (browse trips, view itineraries, plan with checklists, share with friends). This is exactly the territory Busflow explicitly avoids. The overlap here is not "Busflow competes with xtoura" β€” it is "xtoura occupies a space Busflow deliberately refuses to enter." This is strategically important because it means xtoura and Busflow are complementary by design, not just by accident.

2. Multi-Tenant White-Labeling

Both xtoura and Busflow use multi-tenant architectures with per-operator configuration. xtoura uses Hasura row-level permissions with x-hasura-tenant-id; Busflow uses its own multi-tenant bounded contexts. Both support white-label branding (logo, colors, app name). This is structural overlap that matters for the integration story β€” both systems already think in "per-operator" terms, making API integration between them conceptually straightforward.


Features xtoura Has That Busflow Will NOT Offer ​

FeatureWhy Busflow Won't Build ItIntegration PotentialReality Check
Interactive Catalog ViewerNon-goal #5 excludes content marketing tools. Busflow is operations + commerce.High β€” xtoura catalog hotspots already have an external URL field that can point to Busflow booking widget URLs. Zero code change needed.This is the easiest, highest-value integration point.
Travel ChecklistNo operational value. Too trivial.NoneNot worth discussing in partner conversations.
Office FinderOperators manage their own websites; Busflow does not build website content.LowCould overlap with a future "contact operator" section in the Busflow Passenger Portal, but not worth building proactively.
Post-Trip SurveysNot in roadmap. Busflow builds transactional workflows, not marketing research tools.Medium β€” Busflow could emit TripCompleted domain events that trigger xtoura survey links via webhook.Realistic only after Busflow ships the event system ([v0.2]). Until then, xtoura surveys are fully standalone.
Newsletter / CleverReachBusflow builds transactional comms (Pillar 4), not marketing campaigns.Medium β€” Customer Intelligence data could feed CleverReach segments.Customer Intelligence is Phase 3 ([future]). This integration is 2+ years away. Be honest about this with the partner.
Legacy ERP Integration (Kuschick/Turista)Busflow replaces ERPs. A new passenger-facing integration path may be built separately from xtoura.Not xtoura-exclusiveReclassified after founder input. The founder does not plan to use the xtoura-app as the vehicle for legacy ERP passenger data. A new integration will either be rewritten or handled through a different mechanism (e.g., Busflow's own passenger portal consuming ERP data directly, or a standalone migration bridge). xtoura's current Kuschick/Turista modules are existing code, not a strategic dependency.

Internal documentation β€” Busflow