# Planning Guide A secure container management dashboard that displays active containers and enables administrators to launch interactive shell sessions with credential-based authentication. **Experience Qualities**: 1. **Authoritative** - Professional security-focused interface that conveys control and system oversight 2. **Efficient** - Streamlined workflows with minimal clicks from viewing containers to accessing shells 3. **Technical** - Terminal-inspired aesthetics that resonate with developer and operations audiences **Complexity Level**: Light Application (multiple features with basic state) This is a focused management tool with authentication, container listing, and shell interaction—multiple coordinated features but not extensive state management beyond session auth. ## Essential Features ### Authentication Gate - **Functionality**: Username and password validation against configured credentials - **Purpose**: Protect container access from unauthorized users - **Trigger**: User loads the application without valid session - **Progression**: Login form display → Credential input → Validation → Dashboard access or error feedback - **Success criteria**: Valid credentials grant access; invalid credentials show clear error; session persists across page refreshes ### Container List View - **Functionality**: Display all active containers with key metadata (name, image, status, uptime) - **Purpose**: Provide visibility into running container infrastructure - **Trigger**: Successful authentication or app load with valid session - **Progression**: Dashboard load → Fetch container data → Render container cards → Auto-refresh every 10 seconds - **Success criteria**: All active containers visible with accurate real-time data; clear empty state when no containers exist ### Interactive Shell Access - **Functionality**: Launch terminal session within selected container - **Purpose**: Enable debugging, inspection, and administration tasks - **Trigger**: User clicks "Open Shell" action on a container card - **Progression**: Container selection → Shell modal opens → Terminal initializes → User interacts with container shell → Close to return to dashboard - **Success criteria**: Terminal displays container shell prompt; commands execute and return output; session closes cleanly ### Session Management - **Functionality**: Logout capability and session timeout handling - **Purpose**: Security and access control - **Trigger**: User clicks logout or session expires - **Progression**: Logout action → Clear session → Return to login screen - **Success criteria**: User can explicitly log out; returns to login without residual access ## Edge Case Handling - **No Active Containers**: Display friendly empty state with icon and helpful message - **Authentication Failure**: Clear error messaging without exposing security details - **Container Stops Mid-Session**: Terminal shows disconnection message, returns user to dashboard - **Network Interruption**: Loading states and retry mechanisms for data fetching - **Malformed Credentials**: Input validation and sanitization before submission ## Design Direction The design should evoke precision, technical competence, and security. Think command-line interfaces elevated to GUI form—monospace typography, high contrast, structured layouts with clear information hierarchy. The aesthetic should feel like a professional operations dashboard: serious, focused, and trustworthy. ## Color Selection A dark, terminal-inspired palette with high-contrast accents for critical actions and status indicators. - **Primary Color**: Deep slate blue `oklch(0.25 0.02 250)` - Commands authority and technical sophistication, used for primary actions - **Secondary Colors**: - Dark charcoal background `oklch(0.15 0.01 250)` - Reduces eye strain for prolonged monitoring - Slate gray surfaces `oklch(0.22 0.015 250)` - Cards and elevated elements - **Accent Color**: Electric cyan `oklch(0.75 0.15 195)` - High-visibility accent for interactive elements and status indicators - **Foreground/Background Pairings**: - Background (Dark Charcoal `oklch(0.15 0.01 250)`): Light cyan text `oklch(0.92 0.02 195)` - Ratio 7.2:1 ✓ - Primary (Deep Slate `oklch(0.25 0.02 250)`): White text `oklch(0.98 0 0)` - Ratio 8.5:1 ✓ - Accent (Electric Cyan `oklch(0.75 0.15 195)`): Dark text `oklch(0.15 0.01 250)` - Ratio 6.1:1 ✓ - Card (Slate Gray `oklch(0.22 0.015 250)`): Light cyan text `oklch(0.92 0.02 195)` - Ratio 6.8:1 ✓ ## Font Selection Typography should evoke terminal interfaces while maintaining excellent readability—monospace for technical data and code, geometric sans-serif for UI labels. - **Typographic Hierarchy**: - H1 (Page Title): JetBrains Mono Bold/32px/tight tracking (-0.02em) - H2 (Section Headers): Space Grotesk SemiBold/24px/normal tracking - H3 (Container Names): JetBrains Mono Medium/18px/normal tracking - Body (Metadata): Space Grotesk Regular/14px/relaxed leading (1.6) - Code/Terminal: JetBrains Mono Regular/14px/normal leading (1.5) - Labels: Space Grotesk Medium/12px/wide tracking (0.02em) ## Animations Animations should be crisp and purposeful, reinforcing the technical, responsive nature of the interface. - Terminal modal: Scale up from 0.95 with fade, 250ms ease-out - Container cards: Subtle hover lift (2px translate-y) with 150ms ease - Status indicators: Pulse animation for active/running state - Login form: Shake animation on authentication error - Data refresh: Subtle opacity pulse on container list update - Button interactions: Quick scale (0.98) on press, 100ms ## Component Selection - **Components**: - `Card` - Container display with metadata, modified with border-l accent for status - `Button` - Primary actions (login, open shell, logout) with variant customization - `Input` - Credential fields with secure password masking - `Dialog` - Full-screen terminal modal overlay - `Badge` - Status indicators (running, healthy, error states) - `Separator` - Visual dividers between container metadata sections - `ScrollArea` - Container list and terminal output scrolling - `Alert` - Error messages and system notifications - **Customizations**: - Terminal component: Custom component using monospace font and scrollable output area - Container card: Custom status indicator with colored left border - Auth layout: Custom centered card with gradient background overlay - **States**: - Buttons: Default slate, hover electric cyan glow, active pressed, disabled muted - Inputs: Default with subtle border, focus with cyan ring, error with red border - Cards: Default elevation-1, hover elevation-2 with cyan accent glow - Terminal: Active (connected) vs disconnected states with visual feedback - **Icon Selection**: - Container: `Package` - represents containerized applications - Shell/Terminal: `Terminal` - universal terminal symbol - Status running: `Play` - active operation - Status stopped: `Pause` or `Stop` - inactive state - Login: `LockKey` - security and authentication - Logout: `SignOut` - session termination - Refresh: `ArrowClockwise` - data reload - Error: `Warning` - alert states - **Spacing**: - Page padding: p-6 (desktop), p-4 (mobile) - Card padding: p-6 - Card gaps: gap-4 - Section spacing: space-y-6 - Button padding: px-6 py-3 - Form field spacing: space-y-4 - Container grid gap: gap-4 - **Mobile**: - Container grid: 1 column on mobile, 2 on tablet (768px+), 3 on desktop (1024px+) - Terminal modal: Full screen on mobile with close button in header - Header: Stack logo and logout button vertically on small screens - Auth form: Full width on mobile (max-w-sm) with reduced padding - Metadata: Stack container info vertically on mobile, horizontal on desktop