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.authprivsyn_platform.settingsprivsyn_platform.metadata_storeprivsyn_platform.object_storageprivsyn_platform.job_serviceprivsyn_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.
Recommended Repository Shape¶
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¶
- Keep
web_appimports stable while new projects import fromprivsyn_platform. - When image/text projects appear, put new shared code in
privsyn_platformfirst. - Gradually move implementation files from
web_appintoprivsyn_platformonce the interfaces settle. - 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.