Owner Destinations โ The Deck, Register & Pricing
This document covers the three dedicated Malet Owner routes that replace generic /profile placeholders in the platform footer, establishing a clear onboarding โ workspace โ upgrade funnel for Malet Owners.
Workspace Taxonomy
Mallnline organizes admin-level interfaces into three workspace tiers, each mapped to a future subdomain:
| Workspace | Current Route | Future Subdomain | Persona | Scope |
|---|---|---|---|---|
| The Deck | /dashboard |
deck.mallnline.com |
Malet Owners | Your Malets, Murchases, revenue, team |
| The Studio | /dev |
studio.mallnline.com |
Developers | SDKs, webhooks, API docs |
| The Tower | /admin |
tower.mallnline.com |
Platform Admins | All users, platform-wide analytics, moderation |
NOTE
For full Tower architecture details, see Workspaces & The Tower. For the Deck โ Tower separation audit, see deck-tower-audit.md.
The Deck vs The Tower
The existing /admin route is The Tower โ platform-wide oversight tools (User Listing, Revenue Analytics, Search Config, Alert Templates, Deprecation Tracking).
The Deck is the Malet Owner's daily-driver hub. It aggregates owner-scoped data and links to existing management pages:
/dashboard
โโโ Stats Row: owned malets, products, services, blog posts
โโโ My Malets Grid: cards with Manage / Blog / View links
โโโ Quick Actions: launchers linking to /create-malet, /admin, /orgs, /settings, /owner/pricing, /support
โโโ Org Context Banner: shows org name when OrgSwitcher is active
Routes
`/owner/register` โ Onboarding Funnel
Type: Public, SSR-enabled, SEO-optimized
Auth-aware landing page with three hero states:
| State | CTA | Destination |
|---|---|---|
| Unauthenticated | "Sign In to Get Started" | /auth?redirect=/create-malet |
| Authenticated, no Malets | "Create Your Malet โ It's Free" | /create-malet |
| Existing owner | Welcome card โ "Go to The Deck" | deck.mallnline.com/dashboard |
Sections:
- Dual-path chooser: Solo Creator (Starter/Free โ
/create-malet) vs Business & Team (Pro/$29/mo โ/orgs/create?then=checkout&plan=pro) - 3-step guide: Create โ Add Products โ Start Selling
- 6 benefits cards: Analytics, Payments, Team Management, Blog Engine, uChat, Theme Designer
- "What is The Deck?" preview: Workspace overview with feature highlights
- Final CTA: Links to
/create-maletand/owner/pricing
Data: Dynamically imports $lib/queries/malet โ GET_MY_OWNED_MALETS to determine malet count for hero state branching.
`/dashboard` โ The Deck Command Center
Type: Auth-gated (ssr: false), redirects to STOREFRONT_URL/auth?redirect=/dashboard via the getAuthUrl helper in ngwenya-deck.
Org-context-aware: Dynamically imports stores/orgs โ reads $currentOrg. The client.ts auto-injects x-org-id headers, so GET_MY_OWNED_MALETS returns org-scoped Malets when an org is selected.
Data source: GET_MY_OWNED_MALETS from $lib/queries/malet (same query used by /profile).
Components:
| Component | Description |
|---|---|
| Stats row | 4 KPI cards: Total Malets, Total Products, Total Services, Blog Posts |
| Malets grid | Owned Malet cards with icon, <MallHandle>, Manage/Blog/View action buttons |
| Add card | Dashed "Create New Malet" card linking to /create-malet |
| Quick actions | 6 launcher cards (Create Malet, Analytics, Organization, Settings, Pricing, Support) |
| Org banner | Contextual banner showing org name when $currentOrg is set |
| Empty state | CTA with "Launch Your First Malet" messaging + link to /owner/register |
Quick Actions reactivity: The quickActions array uses $derived() so the Organization card dynamically updates its href and desc based on currentOrg state changes.
`/owner/pricing` โ Plan Comparison
Type: Public, SSR-enabled, SEO-optimized
Single source of truth: All plan data imported from $lib/config/plans.ts โ ALL_PLANS, formatPlanPrice(), requiresOrganization(), and PlanLimits types.
Sections:
| Section | Details |
|---|---|
| Billing toggle | Monthly/Annual switch with "Save 20%" badge |
| Plan cards | 3-column grid: Starter (Free), Pro ($29/mo, "Most Popular"), Enterprise (Contact Sales) |
| Commission rates | Per-card display: Starter 8%, Pro 5%, Enterprise 3% |
| Feature matrix | 9 rows: maxMalets, maxTeamMembers, customDomain, customRbac, samlScim, siem, prioritySupport, dedicatedManager, commission |
| Org callout | "Pro & Enterprise include an Organization" section |
| FAQ accordion | 6 questions with animated chevron toggle |
| Final CTA | "Start Building for Free" + "Learn More" links |
CTA routing logic:
function ctaHref(plan: PlanConfig): string {
if (plan.contactSales) return '/contact?subject=enterprise';
if (plan.tier === 'starter')
return authed ? '/create-malet' : '/auth?redirect=/create-malet';
return authed
? `/orgs/create?then=checkout&plan=${plan.tier}&annual=${isAnnual}`
: '/auth?redirect=/orgs/create';
}
Footer Integration
Updated SoleContent.svelte "For Business" column:
| Auth State | Visible Links |
|---|---|
| Authenticated | The Deck, Admin Dashboard, Manage Malets, New Organization, Manage Passkeys, Pricing, How It Works |
| Unauthenticated | Become a Malet Owner, Open a Malet, Sign In, Pricing, How It Works |
Key changes:
- Pricing link โ
/owner/pricing(was/for-business#pricing) - Removed dead
{:else if $isAuthenticated}branch - Added
data-testidattributes for E2E testing
File Reference
| File | Description |
|---|---|
src/routes/owner/register/+page.svelte |
Onboarding landing page |
src/routes/owner/register/+page.ts |
SSR config |
ngwenya-deck/src/routes/dashboard/+page.svelte |
The Deck command center |
ngwenya-deck/src/routes/dashboard/+page.ts |
SSR disabled (auth-gated) |
src/routes/owner/pricing/+page.svelte |
Full pricing comparison |
src/routes/owner/pricing/+page.ts |
SSR config |
src/routes/lobby/SoleContent.svelte |
Footer links (modified) |
src/lib/config/plans.ts |
Plan data source of truth |
docs/architecture/deck-tower-audit.md |
Deck vs Tower tab classification |
tests/owner-routes.test.ts |
23 unit tests |
tests/owner-routes.e2e.ts |
9 E2E test cases |
Related
- Workspaces & The Tower โ Workspace taxonomy and Tower architecture
- Onboarding & Malet Creation โ 5-step Malet creation wizard
- Subscription & Billing โ Tier enforcement and plan limits
- Organization & Malet Management โ Storefront configuration and billing
- Malet Navigation Architecture โ Customizable nav tabs and NavEditor
- Shared Query Package โ
@ngwenya/queriesworkspace package shared across Deck, Tower, and Storefront