← Back to home

Changelog & roadmap

What we've built — and what's next. Source: `plans/` directory in the TourOS repo.

As of: 2026-05-05 · DE

Q4 2025 → Q1 2026

Foundation

  • Plan 08live

    Multi-tenant foundation

    144 tenant-scoped tables with Postgres RLS, NextAuth session extension for TenantMember memberships, RBAC matrix for 6 roles, separate touros_app role (NOSUPERUSER + NOBYPASSRLS).

  • Plan 10live

    Super-Admin app

    `super.touros.pro` with tenant list + detail + create wizard + branding editor + custom-domain form + members management + audit log + platform health.

  • Plan 11live

    Branding & domains

    Per-tenant branding (accent colors, font, logo slots) with Zod-strict validation, BRANDING_PRESETS, dompurify SVG sanitizer, BrandingLoader as server component.

Q1–Q2 2026

Domain modules

  • Plan 12live

    Local tour CMS

    22 new Tour models with translations + variants + FAQs + categories + pages + SEO + media. Replaces WordPress lock-in; WordPress adapter remains as optional migration path.

  • Plan 13live

    Booking engine + Mollie

    BookingService with slot lock via Redis TTL, Mollie per-tenant AES-256-GCM token encryption, RFC-5545 RRULE availability rules, atomic per-tenant BookingNumber, ICS mail attachment.

  • Plan 14live

    Workforce operations

    Shift templates (RRULE) + ShiftSlot instances, TourAssignment N:M, match-score engine, GuideAvailability override, auto timesheet at tour completion, per-tenant VAPID for web push.

  • Plan 15live

    Finance & invoicing

    pdfmake invoices, local VAT engine (DE/EU/third country + B2B reverse charge), cancellation + credit note as separate audit models (DE §14 UStG), DATEV CSV, signed-URL PDF download.

  • Plan 16live

    Customer portal

    Path-routing `<tenant>.touros.pro/account/*` with magic link (sha256 token hash + DB session), GDPR cookie banner, Mollie repayment via persisted checkoutUrl.

  • Plan 17live

    Guide PWA

    Path `/guide/*` with dynamic per-tenant PWA manifest, IndexedDB offline sync (DB name `tos-pwa-${tenantId}`), web push subscribe against per-tenant VAPID, tour reports + absences.

  • Plan 18live

    Public storefront + AEO

    Direct-Prisma server components, AEO suite (`/availability` markdown + `/llms.txt` + `/api/availability.{json,rss}`), tour detail with availability calendar + booking form, custom-domain resolver with 5-min cache.

  • Plan 19live

    Tenant admin app

    12 tabs (dashboard, tours, bookings, customers, workforce, agents, conversations, knowledge base, finance, branding, settings, audit) + RBAC filter, AuditLogService with hook integration in mutation services.

Q2 2026

Migrations + identity

  • Plan 20live

    Recras import wizard

    6-step wizard in super-admin (connect → discovery → mapping → dry-run → run → report) with SSE live progress, externalImportRef re-run dedup, 91/91 cross-tenant tests green.

  • Plan 25live

    FareHarbor adapter (discovery + skeleton)

    Adapter workspace with two sources: decommissioned mjptours account (CSV exports) + walkingcologne Wix embed item IDs. End-to-end wizard in super-admin + NestJS bridge with dryrun endpoint.

  • Plan 26live

    Tenant identity import

    Anthropic Bundle import (URL `https://api.anthropic.com/v1/design/h/<id>`), Brandfetch API, Claude Sonnet agent with web_fetch_20260209 tool. Curated brand profile library, logo slots, token vocabulary audit.

  • Plan 24live

    Design system

    `@touros/design-tokens` (Navy halo + teal compass + Plus Jakarta Sans + Inter Tight + JetBrains Mono) and `@touros/ui` (11 React components with Storybook). 5 of 6 apps migrated.

Q2 2026

Platform maturity

  • Plan 27live

    Containerization + GHCR

    11 containers (touros-postgres, touros-redis + 9 app containers) on ports/volumes/network disjoint from KC-Bookingportal. GHCR CI/CD, helper deploy/touros-ops.sh compose-aware.

  • Plan 28live

    Platform RBAC + tenant support access

    6 platform roles (platform_owner/admin, support_lead/agent, finance_admin, readonly_auditor). Platform staff has NO automatic tenant access — support sessions run via runWithTenantAsSupport with scoped, time-limited tenant-approved grants.

  • Plan 29live

    Setup sandbox + go-live lifecycle

    Lifecycle setup_draft → ready_for_go_live → go_live_pending → live. MockPaymentProvider decouples Mollie platform account, MailService wrapper with [SETUP] prefix + whitelist + owner BCC, storefront lifecycle gate, atomic 9-step go-live execution with soft rollback. 13/14 milestones live (M5 + M12 deferred).

  • Plan 31live

    Inbound mail pipeline

    Postmark inbound stream as single source. Platform inbound (`support@mail.touros.pro`) → PlatformInboundMessage + auto-ticket in super-admin. Tenant inbound via plus-addressing (`<tenantUuid>+<conv>@mail.touros.pro`) → tenant-scoped EmailMessage with RLS, threading, reply form.

Q3 2026 (in preparation)

Planned

  • Plan 21in progress

    Tenant self-service onboarding

    Sign-up funnel at `touros.pro/signup`, Mollie subscription for platform charge (instead of Stripe), 14-day trial WITHOUT credit-card prepay, onboarding checklist in admin. M1+M2+M4+M4b live, M3 awaits user action "platform Mollie account".

  • Plan 22in progress

    KC pilot migration

    Big-bang cutover in 4–6h maintenance window. Plan fully written, all prerequisites from Plan 20+21+29 met. Remaining blockers are user actions (Recras contract cancellation, DNS TTL, Mollie webhook URL switch).

  • Plan 23planned

    Production readiness

    Doppler instead of Vault, Grafana Cloud free tier, self-hosted Statping, hard quota, GDPR compliance (right-to-erasure as anonymization rather than hard delete), disaster recovery, load tests, security hardening, pen test, production go-live checklist.

This page is a curated mirror of the internal sub-plans. Roadmap shifts are possible whenever user actions (e.g., platform Mollie account, maintenance window) suggest a different sequence.