Integration Strategy β xtoura-app Γ Busflow Coexistence β
Core question: Instead of sunsetting xtoura-app, can we keep it alive (for all operators, including non-Busflow customers) while selectively surfacing Busflow capabilities to Busflow-powered operators through the xtoura-app?
The Hybrid Model β
The idea splits the app's feature set into three tiers:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Tier 1: xtoura-only features (all operators) β
β Interactive Catalog, Checklist, Office Finder, β
β Surveys, Newsletter β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Tier 2: Busflow-enhanced features (Busflow ops) β
β Booking via Busflow widget (replaces redirect), β
β Real-time trip data from Busflow API, β
β Wallet pass deep-links β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Tier 3: Busflow-exclusive features (Busflow only) β
β Live ETA, driver GPS tracking, self-service β
β rebooking β these stay in Busflow Passenger Portalβ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββHow It Works β
- xtoura-app stays alive as a standalone product for operators still using it.
- For Busflow operators: The xtoura-app detects (via tenant config) that the operator runs on Busflow and activates Tier 2 integrations β replacing the legacy booking redirect with Busflow's widget URL, pulling trip data from Busflow's API, and linking to Busflow wallet passes.
- The deep operational features (Live ETA, driver tracking, automated rebooking) stay exclusively in Busflow's own Passenger Portal. These require tight integration with Busflow's real-time backend and cannot be surfaced through a loosely-coupled API integration.
Integration Touchpoints (Tier 2) β
These are the concrete integration points between xtoura-app and Busflow, ordered by effort:
1. Booking Widget URL Swap (Effort: ~1 day) β
Current state: xtoura's BookingBlock.vue opens an external booking_url in an in-app browser. The URL is configurable per operator via the admin configurator.
Integration: For Busflow operators, set the booking_url to the Busflow booking widget URL. No code change required β just a configuration change in the admin interface.
Impact: Passengers browse trips in xtoura β tap "Zur Buchung" β land in Busflow's checkout flow β Busflow handles payment, confirmation, and ticketing.
2. Interactive Catalog β Busflow Trip Links (Effort: ~2 days) β
Current state: The interactive catalog has hotspots with tripId and tripDateId fields that link to xtoura's internal trip detail pages. There is also an external field for arbitrary URLs.
Integration: For Busflow operators, set hotspot external URLs to Busflow booking widget URLs (e.g., https://operator.busflow.app/book/trip-123). This lets passengers tap on catalog pages and land directly in Busflow's booking flow.
Impact: The partner's physical catalog becomes a direct acquisition funnel for Busflow bookings.
3. My Trip Data from Busflow API (Effort: ~2β4 weeks) β
Current state: The "My Trips" feature pulls booking data from Kuschick/Turista ERPs via dedicated backend modules. This is the most complex integration.
Integration: Add a new NestJS backend module (busflow) alongside the existing kuschick and turista modules. This module calls Busflow's API to fetch booking data, documents, and trip details for passengers whose operator runs on Busflow.
Prerequisite: Busflow must expose a passenger-facing read API (GraphQL or REST) that xtoura's backend can call with a passenger token. This aligns with Busflow's API-first architecture β the API already exists for the Busflow Passenger Portal; xtoura reuses the same endpoints.
Impact: Busflow operators' passengers see real-time booking data in xtoura, replacing the stale Kuschick/Turista data pull.
4. Wallet Pass Deep Links (Effort: ~1 day) β
Current state: xtoura offers PDF downloads for booking confirmations and vouchers.
Integration: For Busflow operators, replace the "Vorgangsdruck herunterladen" and "Voucherdruck herunterladen" buttons with "Zum Apple Wallet hinzufΓΌgen" and "Zum Google Wallet hinzufΓΌgen" deep links pointing to Busflow's pass generation endpoint.
Impact: A taste of Busflow's superior passenger experience β inside the xtoura-app.
Why This Works Strategically β
For the Partner (Short-Term Good Faith) β
- Their app investment survives. We enhance it rather than ask them to abandon it.
- The app improves for free. Busflow-powered operators get a better experience inside the xtoura-app without the partner writing any new code (Tier 2 integrations require minimal xtoura changes).
- Non-Busflow operators keep working. Operators on other systems continue using xtoura as before. No disruption.
- The partner controls the narrative. They tell operators: "Our app now works with Busflow too β you get the best of both worlds."
For Busflow (Long-Term Natural Selection) β
- Low effort, high signal. The integrations above cost 1β4 weeks total. This is negligible compared to the relationship value.
- Busflow becomes visible inside the partner's ecosystem. Every Busflow-enhanced feature in the xtoura-app is a silent demo of Busflow's capabilities.
- The sunset happens naturally. Once operators experience Busflow's Passenger Portal directly (Live ETA, wallet passes, self-service rebooking), they will ask: "Why do I need two apps?" The partner does not need to be told to sunset β the operators will pull.
- The app becomes a legacy wrapper. Over 12β24 months, the xtoura-app's value proposition narrows to the unique features (Interactive Catalog, Office Finder, Surveys). These are niche β the ex-employee can maintain them profitably without competing with Busflow.
The Natural Evolution Timeline β
Phase 1 (Now β +3 months): Configuration-Only Integration
ββ Swap booking_url to Busflow widget for Busflow operators
ββ Update interactive catalog hotspots to Busflow booking URLs
ββ Effort: ~3 days, zero xtoura code changes
Phase 2 (+3 β +9 months): API Integration
ββ Add Busflow backend module to xtoura-backend-nest
ββ Replace legacy ERP data with Busflow API data for Busflow ops
ββ Replace PDF downloads with Wallet Pass deep links
ββ Dependency: requires xtoura developer (ex-employee) cooperation
ββ Effort: ~2β4 weeks xtoura development
Phase 3 (+9 β +18 months): Natural Sunset
ββ Busflow Passenger Portal ships (Live ETA, self-service, etc.)
ββ Operators compare: xtoura shows booking data; Busflow shows live GPS
ββ Partner organically deprioritizes xtoura-app investment
ββ xtoura-app handed to ex-employee for niche maintenanceWhat Busflow Must Build (Our Side) β
For this hybrid model to work, Busflow needs:
| Requirement | Status | Notes |
|---|---|---|
| Public booking widget URL (per operator, per trip) | Planned (H1) | Already in the Commerce pillar roadmap |
| Passenger-facing read API (booking data, trip details) | Planned (API-first) | The Passenger Portal will consume this same API |
| Wallet Pass generation endpoint (public URL) | Planned (H1) | Part of the Digital Wallet Passes feature |
None of these require building anything for xtoura. They are all features Busflow builds for itself. xtoura simply consumes the public surface.
Risk Assessment β
| Risk | Probability | Impact | Mitigation |
|---|---|---|---|
| Partner interprets Tier 2 as "Busflow taking over our app" | Low | Medium | Frame as enhancement, not takeover. Partner controls which operators activate Busflow integration. |
| xtoura-app development slows to zero before Busflow Portal ships | Medium | Low | Phase 1 requires zero xtoura code changes. Phase 2 can wait until Busflow API is ready. |
| Operators prefer xtoura's familiar UI over Busflow's new portal | Low | Low | Natural user migration takes time, which is acceptable. Both apps serve the same data. |
| Ex-employee refuses or fails to maintain xtoura | Medium | Medium | Offer 6-month maintenance SLA. Document everything during Phase 2. |
| Partner demands Busflow features only surface through xtoura (no standalone portal) | Low | High | Non-negotiable: Busflow's Passenger Portal ships independently. xtoura gets the API, not exclusivity. |
Partner-Facing Arguments β
See Partner Pitch for the full set of six USPs and pitch lines for the partner conversation.