SaaS.Dev

Operating an App

In the design, SaaS.Studio runs every App a Startup has from one place: its Versions and Domains, the Actions people take, and the Metrics they feed.

In the design, SaaS.Studio runs every App a Startup has from one place. It shows the Versions and Domains of each App, the Actions people take in them, and the Metrics those Actions feed.

Every App in one place

The management part lists each Interface of the Startup, the Domain it answers on, and the Version it serves. Open Changes sit beside the Version they would replace.

InterfacePathLive VersionOpen Changes
APIleaseclock.com/apisha256:9f2c4e1a7b3dnone
MCP serverleaseclock.com/mcpsha256:9f2c4e1a7b3dnone
Portalleaseclock.com/dashboardsha256:9f2c4e1a7b3dnone
Adminleaseclock.com/adminsha256:9f2c4e1a7b3dnone
App per Personaleaseclock.com/appsha256:9f2c4e1a7b3dChange 14, preview at change-14.leaseclock.com

Every Interface serves the same Version, because each one derives from the same definition. Publishing Change 14 moves all five at once, and rolling back moves them back together.

Operations: one feed of Actions

The operations part is one feed of every Action across the Apps, newest first. Each row names the App, the person or Agent, the Verb and the status the Action ended in.

AtAppWhoActionStatus
09:14/appa manager at Elm Street RentalsLease.renew on lease_1done
09:15/appthe same managerLease.renew on lease_1refused: the lease is renewed
09:40/apian Agent of Harbor LettingsLease.createdone
10:02/admina member of the leaseclock.com teamLease.terminate on lease_7pending, waiting on an Approval

The feed filters by App, Customer, Persona, Verb and status. Waiting Approvals are answered from the feed, through the same Verbs as the App.

Refusals group by reason. Fourteen refused Lease.renew calls on leases already renewed point at a screen that still offers Renew there. That gap is a screen to fix, not a rule.

Analytics: Metrics from Events

The analytics part shows Metrics, each computed from Events and never typed in. A Startup reads them per App, per Persona and per Offer.

MetricComputed fromSample value for leaseclock.com
Time to valuefirst sign-in to the first Lease.created, per Persona and Offer6 minutes for manager
ActivationCustomers who reach the activation Event of their Flow41 of 58 trial Customers
Renewals recordedLease.renewed Events per week212
Refusal raterefused Actions over all Actions, per VerbLease.renew: 6%
Seats in useseats taken over seats sold, per Offer74 of 90

A Metric that moves names the Events behind it. A drop in activation opens the Flow step where Customers stall.

Admin across Apps

The admin part opens each App's Admin as the owner, from one sign-in. Every button there runs its Verb through the API, the same as in the App.

By default a Startup sees each Customer in aggregate: counts, usage, refusals and seats, never the records themselves. To see a Customer's screens, a person chooses View as, states a reason and gets a session of 30 minutes.

Each View as session leaves an entry in the Customer's own audit list at /dashboard. The entry names the person, the reason and the time, so the Customer sees every look.

What the Customer sees

A Customer of leaseclock.com sees none of SaaS.Studio. It sees what operations change: a refusal that names its reason, a screen that stops offering a Verb that refuses, and every View as entry.

Each Interface the Startup publishes carries its uptime and latency objectives, as Headless SaaS states. The Startup's status page reports them per Interface, in its own name.

Contents