Platform Core

privsyn_platform is the shared application-platform layer intended to be reused across multiple synthetic-data products, not just the tabular web app in this repository.

Why It Exists

The tabular app, future image app, and future text app should not duplicate the same infrastructure code for:

  • request authentication and SSO integration
  • durable job metadata
  • durable object storage
  • shared runtime settings
  • common ownership and access-control semantics

Those concerns are product-agnostic. The generator logic, model dependencies, UI, and evaluation metrics are not.

Current Scope

The first extraction step introduces a package-level reuse seam without forcing a risky file move:

  • privsyn_platform.auth
  • privsyn_platform.settings
  • privsyn_platform.metadata_store
  • privsyn_platform.object_storage
  • privsyn_platform.job_service
  • privsyn_platform.modality

These modules currently re-export the production implementations that still live under web_app/. This keeps the existing tabular app stable while giving new projects a platform-oriented import path to depend on.

Use one shared core plus multiple modality-specific applications:

  • privsyn_platform
  • shared auth, storage, metadata, ownership, and deployment primitives
  • privsyn_tabular
  • tabular-specific library and CLI
  • web_app
  • tabular web UI / API
  • future image_app
  • image-generation API / UI, reusing privsyn_platform
  • future text_app
  • text-generation API / UI, reusing privsyn_platform

Near-Term Migration Plan

  1. Keep web_app imports stable while new projects import from privsyn_platform.
  2. When image/text projects appear, put new shared code in privsyn_platform first.
  3. Gradually move implementation files from web_app into privsyn_platform once the interfaces settle.
  4. Keep modality-specific job payloads and model runners out of privsyn_platform.

Design Rule

If a module depends on tabular-only concepts such as inferred domains, categorical binning, or tabular evaluation, it should stay out of privsyn_platform. If it only depends on identity, storage, jobs, or deployment contracts, it belongs in the shared platform layer.