#Complete user journey
This page shows the journey through the whole product. Step-by-step flows for each task are on End-to-end user flows.
#New user
Register (name, email, password ≥ 8, Turnstile)Verify email (link valid 24 h)Login2FA / IP check if enabledNo organization yetCreate first organizationPlan / subscription stepDashboard (empty state: connect first server)
| Step | What happens | Status |
|---|---|---|
| Register | Account created inactive. Optional referral/affiliate/invitation code and onboarding answers are saved | V8 requirement 2.1 |
| Verify email | Link valid 24 h, can be resent. Login is refused with a specific "not verified" message until done | V8 requirement 2.2–2.3 |
| Login | Returns token + user + organizations. Login is recorded in login history | V8 requirement 2.3 |
| Organization | Not auto-created. Login returns an empty list and the user creates the first one (V7 flow). The first organization becomes the user's main organization | V8 requirement "Not in this phase" · V7 only main flag |
| Plan | In V7 a new user gets a Free or trial subscription (Newbie/Free need no payment, trial days come from settings). Whether V8 asks for a plan at sign-up, at the first server, or never is not decided | V7 only · Open question |
| Subscription | V7 subscription is per user, linked to the main organization | V7 only · Conflict with "organization → subscription" |
| Dashboard | Empty state with "Connect your first server" (and "Create a server" if a provider is connected) | Demo UI only concept |
#Existing user
Login2FA / IP approvalOrganizations list returnedRestore last-used organization (or main)Load its subscription + usageDashboard
- The current organization is a frontend choice, remembered per user (see Organizations). The backend checks membership on every organization-scoped request.
- An existing V7 user logs in with the same email and password and keeps 2FA, IP whitelist and Google/GitHub login after migration. V8 requirement "Existing users". How servers and subscriptions come across is unresolved: see V7 migration.
#Inside the product
DashboardServersServer Details (apps, databases, system users, services)ProvidersBlueprintsMembersRolesBillingAudit Log
Dashboard
Subscription + usageServer status (live, per server)SpendRecent activity
Servers
Organization servers (Central)Health + version (OSS /health)Live facts (OSS)
Providers
Connected provider accounts (Central)Regions / sizes (provider API via Central)
Blueprints
Saved blueprints (Central)Run on a WordPress site (OSS add-on)
Members & Roles
Members, invitations, roles, permission catalog (Central)
Billing
Plans, subscription, wallet, transactions, invoices (Central + gateway)
Audit Log
Central audit entries (Central)Optional: server activity (OSS)
#Where each journey can stop
| Situation | What the user sees | Detail |
|---|---|---|
| Email not verified | Login refused with "verify your account" + resend | Authentication |
| Unknown IP with whitelist on | Login blocked, approval link emailed | Authentication |
| No organization | Create-organization screen. Nothing else is reachable | Organizations |
| Subscription expired | Server actions blocked ("subscription has expired, please renew"). In V7 only server delete still works | Subscriptions |
| Plan limit reached | Add-server / create-VPS blocked with an upgrade call to action | Plans |
| Permission missing | Menu item hidden or disabled. Direct URL shows a 403 state | Roles & permissions |
| Server offline | Server Details shows "unreachable" with retry. The rest of Central keeps working | Servers |