Productify Documentation
Productify is a platform for running several web applications for several customer organizations (tenants) behind one login and one proxy. A central Manager holds the configuration, the Proxy routes traffic and authenticates users, the CLI (pfy) drives it all from your terminal, and small integration libraries connect your own frontend and backend code to it. This site documents each part and how they fit together.
Early development
Productify is pre-1.0. It works, but it may contain bugs and breaking changes can land between releases. Test it against your own use case before you rely on it in production, and read the current known issues and limitations.
Start here
- Zero-to-App Local Quickstart —
pfy dev upstarts the whole platform on your machine in one command, then walks through both dev loops and a trigger firing locally. - Docker Compose — a hand-managed local or small-team stack.
- Nomad — the production orchestration target.
Kubernetes
Kubernetes deployment is planned for a later release. pfy platform render targets nomad and compose today.
The components
Each component lives in its own repository and has its own section on this site:
| Component | What it does | Docs |
|---|---|---|
| Manager | The configuration API and web UI: projects, tenants, applications, environments, deployment specs, machine users, triggers, audit log. Renders the proxy configuration. | Manager Guide |
| Proxy | A Caddy build with Productify plugins: OIDC login through Pocket ID, per-application virtual hosts rendered from Manager data and reloaded live, tenant switching (/_tenant), identity headers for your backend, window.__PRODUCTIFY__ for your frontend. | Proxy |
CLI (pfy) | Manages projects, tenants, applications, pilets and deployments; renders Nomad jobs and the platform stack from specs; runs the local dev platform (pfy dev). | CLI |
| Autoscaler | Forecasts load (SARIMAX) and solves for the cheapest replica plan (MILP); the Nomad autoscaler plugin applies it. The scaling block of a deployment spec renders into the Nomad job. | Autoscaler |
| Integration libraries | Server libraries for Go and Node.js/Express; a framework-agnostic browser client (@productifyfw/core) with Vue and React packages; a notifications pilet. | Integration |
| Deployments | The rendered artifacts, compose bundle, runbooks and end-to-end tests. | Deployment |
For the raw API surface see the API Reference.
How the pieces fit
One deployment, many apps, many tenants. One proxy instance serves every application and tenant. One running backend per application and environment serves all of that application's tenants.
- A Project owns Applications and Environments (
dev,qas,run). - A Tenant is a customer organization. An application is enabled for a tenant through a
Tenant2Applicationrow, which also holds that tenant's configuration for the app. - Roles: system, project and application roles are fixed; tenant roles are configurable per project over a fixed permission vocabulary. Tenant administrators can invite members and manage their own roles. See the Access Model.
- The proxy renders one virtual host per application from Manager data and reloads over Caddy's admin API; onboarding a tenant is a Manager change, not a config edit.
Read Multi-tenancy for the full model. Upgrading from the older Project → Tenant → Application hierarchy? Follow the Wave 3 Migration Guide.
Security
- Access Model — who can do what, and what is audited
- Session Policy & Logout — sessions, cookies and stored credentials
- Compliance Controls — NIS2 / ISO 27001 event coverage and evidence
- Communications — Accepted Risks