Skip to content

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 Quickstartpfy dev up starts 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:

ComponentWhat it doesDocs
ManagerThe configuration API and web UI: projects, tenants, applications, environments, deployment specs, machine users, triggers, audit log. Renders the proxy configuration.Manager Guide
ProxyA 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
AutoscalerForecasts 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 librariesServer libraries for Go and Node.js/Express; a framework-agnostic browser client (@productifyfw/core) with Vue and React packages; a notifications pilet.Integration
DeploymentsThe 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 Tenant2Application row, 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