Use Case 019: Unified Application Launch Dashboard
Overview
| Property | Value |
|---|---|
| Use Case ID | UC-019 |
| Use Case Name | Unified Application Launch Dashboard |
| Module | User Experience - Application Portal |
| Priority | High |
| Status | Implemented |
| Version | 1.0 |
| Last Updated | February 23, 2026 |
Description
This use case describes the unified application launch dashboard that serves as a single sign-on portal for all Riptide applications. After authenticating with Application Manager, users see a personalized dashboard displaying all applications they have access to, their assigned roles, team memberships, trial status (if applicable), and quick access links. The dashboard provides one-click application launching with automatic session propagation, eliminating the need for repeated authentication across the application ecosystem.
Actors
| Actor | Description | Role |
|---|---|---|
| ApplicationUser | End user accessing the application ecosystem | Primary |
| TrialUser | Trial user with time-limited access | Primary |
| System | Application Manager platform | Supporting |
| Riptide Application | Target application being launched | Supporting |
| Administrator | Admin customizing dashboard experience (optional) | Secondary |
Preconditions
- User has authenticated with Application Manager (password or SSO)
- Active session exists with valid session token
- User has at least one application access grant
- Applications are registered and active in Application Manager
- Application health checks passing (applications are accessible)
Postconditions
Success Postconditions
- Dashboard displayed with user's accessible applications
- Role badges and access status shown for each application
- Trial countdown displayed (if user is TrialUser)
- Team membership information shown
- Application launched with session automatically propagated
- Dashboard access logged in audit trail
- Application launch event recorded
Failure Postconditions
- Session expired error shown if session invalid
- No applications shown if user has no access grants
- Unavailable applications marked as offline
- Trial expired users shown expired state with contact info
Triggers
- User completes authentication (UC-002)
- User navigates to Application Manager root URL after login
- User clicks "Dashboard" in navigation menu
- User redirected to dashboard after invitation acceptance (UC-017)
- User clicks "Launch" button on specific application
- User refreshes dashboard to see updated trial status
Basic Flow (Happy Path)
Alternative Flows
Alt-1: Trial User Near Expiration
Trigger: TrialUser dashboard access with < 7 days remaining
Flow:
- User accesses dashboard
- System calculates days remaining on trial
- Days remaining < 7
- Dashboard displays prominent warning banner:
- "Your trial expires in 3 days"
- "Contact us to extend your trial or upgrade"
- Contact button linking to sales/support
- Warning color-coded: Yellow (7-3 days), Orange (2-1 days), Red (< 1 day)
- Rest of dashboard functions normally
Alt-2: Trial User Expired
Trigger: TrialUser dashboard access after trial expiration
Flow:
- User accesses dashboard
- System detects trial expired
- Dashboard shows limited view:
- "Your trial has expired"
- Trial duration and expiration date shown
- Access to applications disabled (Launch buttons greyed out)
- Grace period information displayed (if applicable)
- Contact administrator link
- Logout button available
- No application launching allowed
Alt-3: Application Offline/Unhealthy
Trigger: Dashboard loads but one or more applications are offline
Flow:
- User accesses dashboard
- System fetches application health statuses
- Application health check failed or last check > 10 minutes ago
- Application tile shows "Offline" badge
- Launch button disabled for offline applications
- Hover tooltip: "Application is currently unavailable"
- Administrator notified of offline status
- User can still launch healthy applications
Alt-4: No Application Access
Trigger: User has valid session but no application grants
Flow:
- User accesses dashboard
- Application access query returns empty result
- Dashboard displays empty state:
- "No applications available"
- "Contact your administrator to request access"
- List of team memberships (if any)
- User profile information still accessible
- For TrialUsers: Contact sales/support option
Alt-5: Session Expired During Dashboard Use
Trigger: User session expires while browsing dashboard
Flow:
- User dashboard loaded successfully
- User idle for > 8 hours (session timeout)
- User clicks "Launch" on application
- API returns 401 Unauthorized (session expired)
- Web shows session expired modal
- User redirected to login page with returnUrl=/dashboard
- After re-authentication, user returns to dashboard
Business Rules
Dashboard Access Rules
- BR-019-01: All authenticated users can access dashboard
- BR-019-02: Dashboard only shows applications user has explicit access grants for
- BR-019-03: Expired TrialUsers see limited dashboard (no launching)
- BR-019-04: Team memberships displayed if user belongs to teams
Application Display Rules
- BR-019-05: Applications sorted alphabetically by default
- BR-019-06: User can customize application order (saved in preferences)
- BR-019-07: Application icons fetched from application registration
- BR-019-08: Offline applications shown but Launch button disabled
- BR-019-09: Applications display assigned role badges for that user
Trial Status Display Rules
- BR-019-10: Trial countdown shown for TrialUsers only
- BR-019-11: Warning banners shown when < 7 days remaining
- BR-019-12: Grace period info displayed if trial in grace period
- BR-019-13: Trial expiration timestamp shown in user's local timezone
Session Propagation Rules
- BR-019-14: Application launches use short-lived propagation tokens (5 min expiry)
- BR-019-15: Propagation tokens include user capabilities for target application
- BR-019-16: Each application launch logged in audit trail
- BR-019-17: Application validates propagation token before granting access
Data Requirements
Dashboard Data Structure
interface DashboardData {
user: {
userId: string;
email: string;
fullName: string;
userType: 'Trial' | 'Application' | 'Admin';
roles: Role[];
profileImageUrl?: string;
};
trial?: {
expiresAt: string; // ISO 8601
daysRemaining: number;
gracePeriodDays: number;
isExpired: boolean;
isInGracePeriod: boolean;
};
applications: Application[];
teams: Team[];
notifications: Notification[];
}
interface Application {
id: string;
name: string;
description: string;
iconUrl: string;
launchUrl: string;
healthStatus: 'Healthy' | 'Degraded' | 'Offline' | 'Unknown';
lastHealthCheck: string;
userRoles: string[]; // Roles for this specific app
tags: string[];
}
interface Team {
teamId: string;
teamName: string;
memberCount: number;
role: string;
joinedAt: string;
}
interface Notification {
id: string;
type: 'Info' | 'Warning' | 'Error';
message: string;
actionLabel?: string;
actionUrl?: string;
createdAt: string;
}
User Interface
Dashboard Layout
┌─────────────────────────────────────────────────────────────┐
│ [Logo] Application Manager [Notifications] [User]│
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────┐│
│ │ ⚠️ Your trial expires in 3 days [Contact Us] ││
│ └──────────────────────────────────────────────────────────┘│
│ │
│ Welcome back, Jane Smith │
│ Trial Account • Developer │
│ │
│ My Applications [⚙️ Customize] │
│ │
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
│ │ 📊 │ │ ⚙️ │ │ 🔧 │ │
│ │ Workflow │ │ Configuration │ │ Fee Manager │ │
│ │ Designer │ │ Manager │ │ │ │
│ │ │ │ │ │ │ │
│ │ [Developer] │ │ [Admin] │ │ [Viewer] │ │
│ │ │ │ │ │ │ │
│ │ [Launch] ✓ │ │ [Launch] ✓ │ │ [Launch] ✓ │ │
│ └───────────────┘ └───────────────┘ └───────────────┘ │
│ │
│ My Teams │
│ │
│ • Acme Corp Development Team (Developer) - 12 members │
│ • Platform Engineering (Viewer) - 8 members │
│ │
│ Recent Activity │
│ │
│ • Launched Workflow Designer - 2 hours ago │
│ • Updated configuration in Config Manager - 1 day ago │
│ • Joined Platform Engineering team - 3 days ago │
│ │
└─────────────────────────────────────────────────────────────┘
Application Tile States
Healthy Application:
┌───────────────┐
│ 📊 │
│ Workflow │
│ Designer │
│ │
│ [Developer] │
│ │
│ [Launch] ✓ │
└───────────────┘
Offline Application:
┌───────────────┐
│ ⚠️ Offline │
│ Fee Manager │
│ (unavailable) │
│ │
│ [Viewer] │
│ │
│ [Launch] 🔒 │
└───────────────┘
Expired Trial - Blocked Access:
┌───────────────┐
│ 🔒 │
│ Workflow │
│ Designer │
│ Trial Expired │
│ │
│ │
│ Access Locked │
└───────────────┘
API Endpoints
Get Dashboard Data
Endpoint: GET /api/v1/dashboard
Headers:
Authorization: Bearer {sessionToken}
Response: 200 OK
{
"user": {
"userId": "123e4567-e89b-12d3-a456-426614174000",
"email": "jane@example.com",
"fullName": "Jane Smith",
"userType": "Trial",
"roles": [
{"id": "role-1", "name": "Developer"},
{"id": "role-2", "name": "Viewer"}
]
},
"trial": {
"expiresAt": "2026-03-15T23:59:59Z",
"daysRemaining": 3,
"gracePeriodDays": 7,
"isExpired": false,
"isInGracePeriod": false
},
"applications": [
{
"id": "app-1",
"name": "Workflow Designer",
"description": "Design and orchestrate business workflows",
"iconUrl": "/icons/workflow-designer.svg",
"launchUrl": "https://workflow.example.com",
"healthStatus": "Healthy",
"lastHealthCheck": "2026-02-23T10:25:00Z",
"userRoles": ["Developer"],
"tags": ["workflow", "automation"]
},
{
"id": "app-2",
"name": "Configuration Manager",
"description": "Centralized configuration management",
"iconUrl": "/icons/config-manager.svg",
"launchUrl": "https://config.example.com",
"healthStatus": "Healthy",
"lastHealthCheck": "2026-02-23T10:26:00Z",
"userRoles": ["Admin"],
"tags": ["configuration", "devops"]
}
],
"teams": [
{
"teamId": "team-1",
"teamName": "Acme Corp Development Team",
"memberCount": 12,
"role": "Developer",
"joinedAt": "2026-01-15T10:00:00Z"
}
],
"notifications": [
{
"id": "notif-1",
"type": "Warning",
"message": "Your trial expires in 3 days",
"actionLabel": "Contact Us",
"actionUrl": "/contact-sales",
"createdAt": "2026-02-23T00:00:00Z"
}
]
}
Launch Application (Session Propagation)
Endpoint: POST /api/v1/applications/{applicationId}/launch
Headers:
Authorization: Bearer {sessionToken}
Response: 200 OK
{
"launchUrl": "https://app.example.com/auth/sso?token=eyJhbGciOiJIUzI1NiIs...",
"propagationToken": "eyJhbGciOiJIUzI1NiIs...",
"expiresIn": 300,
"application": {
"id": "app-1",
"name": "Workflow Designer",
"url": "https://workflow.example.com"
}
}
Customize Dashboard Preferences
Endpoint: PATCH /api/v1/dashboard/preferences
Request Body:
{
"applicationOrder": ["app-2", "app-1", "app-3"],
"theme": "dark",
"compactView": false
}
Response: 200 OK
Performance Requirements
- PR-019-01: Dashboard data loaded within 1.5 seconds
- PR-019-02: Application health checks cached for 5 minutes
- PR-019-03: Session propagation token generated within 200ms
- PR-019-04: Dashboard refreshes (user-initiated) complete within 800ms
- PR-019-05: Dashboard supports 1000+ concurrent active sessions
Security Considerations
Session Management
- Session token validated on every dashboard API call
- Expired sessions immediately redirect to login
- Session token never exposed in URLs
- Short-lived propagation tokens (5 min expiry) for app launches
Access Control
- Application visibility strictly enforced by user access grants
- Role badges reflect actual user permissions per application
- Tenant isolation enforced in all queries
- No cross-tenant data leakage
Audit & Compliance
- Dashboard access logged (timestamp, user ID, session ID)
- Application launches logged with target application
- Failed access attempts logged and alerted
- Trial status changes logged
Testing Scenarios
Test Case TC-019-01: Successful Dashboard Load
Preconditions:
- User authenticated with valid session
- User has access to 2 applications
Steps:
- User navigates to /dashboard
- System validates session
- System fetches user data, apps, teams
- Dashboard rendered with all data
Expected Results:
- Dashboard displays within 1.5 seconds
- 2 applications shown with correct roles
- Trial countdown shown (if TrialUser)
- Teams listed correctly
Test Case TC-019-02: Application Launch
Steps:
- User on dashboard clicks "Launch" on application
- System validates access
- System generates propagation token
- Application opened in new tab
- Application validates token
Expected Results:
- Propagation token generated
- Application opens successfully
- User authenticated in application
- Launch event logged
Test Case TC-019-03: Trial Expiration Warning
Preconditions:
- TrialUser with 3 days remaining
Steps:
- User accesses dashboard
- System calculates days remaining
Expected Results:
- Warning banner displayed: "Your trial expires in 3 days"
- Banner color-coded orange
- Contact button available
- Applications still launchable
Test Case TC-019-04: Expired Trial Access Block
Preconditions:
- TrialUser with expired trial
Steps:
- User accesses dashboard
- System detects trial expired
Expected Results:
- Limited dashboard view shown
- Message: "Your trial has expired"
- Application Launch buttons disabled
- Contact administrator link shown
Monitoring and Analytics
Metrics
- dashboard.views: Dashboard page views (daily, weekly)
- dashboard.load.duration: Dashboard load time (p50, p95, p99)
- application.launches: Application launch count (per app, per user)
- trial.warnings.shown: Trial expiration warnings displayed
- session.propagation.duration: Session propagation latency
Alerts
- Dashboard load performance degradation: p95 > 3 seconds
- High application launch failures: > 5% failures in 1 hour
- Offline applications: Health checks failing > 3 consecutive times
Dashboards (Admin Analytics)
- Daily active users viewing dashboard
- Most launched applications
- Application health status trends
- Trial expiration funnel (warnings → expirations)
Related Use Cases
- UC-002: Trial User Login and Session Management - Session creation before dashboard
- UC-003: Application Access Validation - Access checking for visibility
- UC-004: Trial Expiration and Auto-Cleanup - Trial status display
- UC-013: Application Registration and Management - Applications shown on dashboard
- UC-017: Team Member Invitation - Team membership display
- UC-010: Activity Logging - Dashboard and launch event logging
Notes and Assumptions
Assumptions
- Users expect single sign-on experience across all applications
- Applications support token-based session propagation
- Application health checks are reliable
- Users prefer visual dashboard over CLI
Implementation Notes
- Consider caching dashboard data for 1 minute to reduce DB load
- Use WebSocket for real-time trial countdown updates
- Implement lazy loading for application icons
- Support customizable dashboard layouts (grid vs list)
Future Enhancements
- Personalized application recommendations
- Usage analytics per application
- Favorite applications pinning
- Quick search across all applications
- Mobile-responsive dashboard design
- Dark mode theme support
Revision History
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | 2026-02-23 | System | Initial use case documentation |