Files
workdock-platform/PRODUCTIZATION_ROADMAP.md
2026-03-27 02:46:40 +01:00

5.9 KiB

Productization Roadmap

Goal

Turn the current TUBCO-specific onboarding/offboarding portal into Workdock, a reusable company portal product, while preserving the current TUBCO deployment as a stable customer-specific baseline.

Current branch roles:

  • main: current TUBCO customer baseline
  • product_company_portal_foundation: generic product-development branch

Core Product Principles

  1. Do not build "TUBCO with exceptions".
  2. Separate platform core from company configuration.
  3. Start as single-tenant configurable, not full multi-tenant.
  4. Make branding and document identity admin-managed, not code-managed.
  5. Add new business apps only after the core platform layer is standardized.
  6. Prefer inline editing for lightweight profile and configuration data, but keep explicit forms for sensitive or high-risk settings.

Product Layers

1. Platform Core

Reusable across all customer deployments:

  • authentication
  • roles and permissions
  • page shell and navigation
  • audit log
  • backup and recovery
  • integrations framework
  • translations
  • document engine
  • app registry

2. Company Configuration

Per deployment / per company:

  • portal title
  • company display name
  • logos
  • favicon
  • brand colors
  • support/contact email
  • legal text
  • default language
  • PDF letterhead
  • email sender labels
  • notification routing defaults

3. Business Apps

Examples:

  • onboarding / offboarding
  • welcome emails
  • asset return
  • approvals
  • leave / request flows
  • checklists
  • document workflows

Delivery Strategy

Phase 0. Freeze Current Customer Baseline

Status: completed

Purpose:

  • keep the current TUBCO state stable
  • allow future customer-specific fixes without mixing them with productization work

Snapshot commit:

  • 08971ab snapshot: preserve current tubco portal baseline

Phase 1. Product Core Standardization

Status: next

Purpose:

  • remove hardcoded company identity from the platform surface
  • introduce config-driven branding and document identity

Deliverables:

  1. PortalBranding or TenantConfig model

    • portal title
    • company name
    • logo
    • favicon
    • primary / secondary colors
    • support email
    • default language
    • PDF letterhead file
    • legal / imprint / privacy text
  2. Branding management UI

    • super-admin/admin controlled
    • editable from frontend
  3. Shared context layer

    • inject branding into templates
    • replace hardcoded TUBCO title/logo references
  4. Tenant-aware document identity

    • letterhead path from config
    • company display name from config
    • footer/legal text from config
  5. Documentation updates

    • product setup flow
    • branding flow
    • PDF/letterhead override behavior

Phase 2. App Registry and Navigation

Purpose:

  • stop hardcoding app cards and app visibility in the homepage template

Deliverables:

  • app registry model or registry config
  • title / subtitle / icon / route / required capability / enabled flag
  • homepage and navigation driven by registry data
  • ability to enable/disable apps per deployment

Phase 3. Trial Mode Lifecycle

Purpose:

  • allow limited-time test environments for demos and sales

Deliverables:

  • trial flag
  • trial_expires_at
  • trial banner
  • safe default integrations behavior
  • cleanup command / scheduled deletion
  • DB/media cleanup policy

Phase 4. New Business Apps

Only start after phases 1-3 are stable.

Candidate apps:

  • asset management
  • leave / absence requests
  • approval workflows
  • internal purchase requests
  • visitor onboarding
  • contractor onboarding
  • policy acknowledgements

Initial product model:

  • single-tenant configurable deployment
  • one company per deployment
  • shared codebase
  • company identity controlled through admin-managed config

Do not start with:

  • true multi-tenant shared-data SaaS

Reason:

  • tenant isolation affects auth, media, PDFs, routing, backups, audit, and cleanup
  • it is much more complex than the current product stage requires

What Must Be Removed From Hardcoded Product Core

Examples already identified:

  • former TUBCO-specific portal title kept only as historical baseline context
  • logo asset references
  • invitation email wording mentioning TUBCO
  • historical product text references that still describe the original TUBCO baseline
  • fixed letterhead file assumptions

These should move into configuration progressively, not all at once in one risky rewrite.

Immediate Next Slice

Implement first:

  1. PortalBranding model
  2. branding management page
  3. shared branding context processor
  4. replace header/logo/title references on:
    • home
    • shared header
    • login/auth pages
  5. make PDF letterhead configurable

This is the first productization slice because it gives:

  • generic portal identity
  • customer-specific configurability
  • a cleaner base for every future app

Guardrails

  • keep current customer deployment values stable while generic product defaults move to Workdock
  • keep migrations backward-compatible
  • update both wiki and developer handbook for every architecture change
  • snapshot at the end of each major phase

Shared UI Pattern: Inline Editing

Use inline editing as a platform pattern where it improves speed without weakening clarity or safety.

Good candidates:

  • user profile and contact data
  • company config sections
  • branding text and non-sensitive metadata
  • low-risk app-registry metadata

Do not use it by default for:

  • credentials and secrets
  • integrations with side effects
  • destructive actions
  • multi-step workflow forms
  • settings that need heavy validation or confirmation

Preferred implementation style:

  • section-level inline editing
  • explicit Bearbeiten, Speichern, Abbrechen
  • no noisy per-field autosave
  • clear view mode and edit mode separation

Reason:

  • keeps Workdock faster and more product-grade
  • avoids large admin-style forms for simple edits
  • still preserves reliable validation and safer change boundaries