Skip to content

Private apps

An app is public by default: anyone with the link can open it. A private app can only be opened by the members of the team that owns it, or only by you if it belongs to your personal account. It suits internal tools, admin pages, previews and anything you don’t want to show the world yet.

Open the app and press Make private under Access. Make public undoes it.

The change takes effect within seconds, without a redeploy. It covers every address of the app: <name>.flitzy.app and its custom domains.

  1. A visitor without access is sent to the Flitzy sign-in page.
  2. They sign in with their Flitzy account. If they are in several teams, Flitzy switches to the team that owns the app by itself.
  3. Members land on the page they wanted to open. Everyone else sees “No access” and can sign in with another account.

The sign-in lasts 7 days per app. It ends earlier when the visitor is removed from the team. To sign out of one app, open https://<name>.flitzy.app/.flitzy/signout.

Requests that don’t come from a browser page (fetch from another site, curl, webhooks) get 401 instead of the sign-in page. Calls from the app’s own pages work as usual, since the browser sends the sign-in cookie along.

Every request that reaches a private app carries two headers:

Header
X-Flitzy-User The visitor’s Flitzy user id, for example u-3idbomj2.
X-Flitzy-User-Name Their name, URL-encoded (decodeURIComponent it).

Flitzy sets these itself and removes any a visitor sends, so on a private app you can trust them. A public app never gets them.

// Express
app.get('/', (req, res) => {
const name = decodeURIComponent(req.get('X-Flitzy-User-Name') || '');
res.send(`Hello ${name}`);
});
  • Who may make an app private or public: every member of the team, like deploying.
  • The activity log records each sign-in, including people who were turned away, and every change of the setting.
  • The paths /.flitzy/callback and /.flitzy/signout belong to Flitzy on a private app; your app never sees requests to them.