The interface is protected by simple credential-based access, configurable through environment variables.
7.7 KiB
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:
- Authoritative - Professional security-focused interface that conveys control and system oversight
- Efficient - Streamlined workflows with minimal clicks from viewing containers to accessing shells
- 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
- Dark charcoal background
- 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 textoklch(0.92 0.02 195)- Ratio 7.2:1 ✓ - Primary (Deep Slate
oklch(0.25 0.02 250)): White textoklch(0.98 0 0)- Ratio 8.5:1 ✓ - Accent (Electric Cyan
oklch(0.75 0.15 195)): Dark textoklch(0.15 0.01 250)- Ratio 6.1:1 ✓ - Card (Slate Gray
oklch(0.22 0.015 250)): Light cyan textoklch(0.92 0.02 195)- Ratio 6.8:1 ✓
- Background (Dark Charcoal
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 statusButton- Primary actions (login, open shell, logout) with variant customizationInput- Credential fields with secure password maskingDialog- Full-screen terminal modal overlayBadge- Status indicators (running, healthy, error states)Separator- Visual dividers between container metadata sectionsScrollArea- Container list and terminal output scrollingAlert- 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:
PauseorStop- inactive state - Login:
LockKey- security and authentication - Logout:
SignOut- session termination - Refresh:
ArrowClockwise- data reload - Error:
Warning- alert states
- Container:
-
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