# Design Guidelines ## Product Goal Build a modern TeamSpeak 3 client for everyday users that feels clean, fast, minimal, and voice-first. The app should stay familiar to existing TeamSpeak users while adopting an Apple-style interface inspired by Finder, FaceTime, Apple Music, and System Settings. The first version is a personal voice client, not a server administration tool. ## MVP Focus The first version should prioritize: - connecting to TeamSpeak 3 servers - bookmarks and recent servers - browsing and joining channels - voice chat with push-to-talk and voice activation - microphone mute and deafen - input/output device selection - global and per-user volume controls - speaking, muted, deafened, and away indicators - basic server, channel, and private chat - identity management - hotkeys - notifications - light and dark mode The first version should explicitly exclude: - server management - permissions and group editors - ban tools and logs - file transfer - plugin support - whisper system - advanced moderation flows - overlays ## Core Design Principles ### Voice First The UI should make the user's voice state obvious at all times. Users should always be able to quickly understand: - whether they are connected - which channel they are in - whether the microphone is live or muted - whether output is deafened - whether push-to-talk or voice activation is active - whether audio devices are correctly selected ### Simple by Default Default surfaces should stay compact and calm. Prefer: - clean navigation - compact controls - context menus - popovers - focused settings categories - progressive disclosure for advanced options Avoid: - dense admin-style toolbars - technical tables in primary flows - large clusters of small icons - exposing advanced TeamSpeak administration features in the core UI ### Apple-Style UI The interface should use: - soft backgrounds - rounded cards and buttons - subtle shadows - thin dividers - spacious padding - calm accent colors - strong typography hierarchy - minimal visual noise The app should feel lightweight and polished rather than industrial or admin-heavy. ## Visual System ### Colors Light mode: - Background: `#F5F5F7` - Surface: `#FFFFFF` - Elevated Surface: `#FBFBFD` - Primary Accent: `#007AFF` - Text Primary: `#1D1D1F` - Text Secondary: `#6E6E73` - Border: `#D2D2D7` - Success: `#34C759` - Warning: `#FF9500` - Danger: `#FF3B30` - Muted: `#8E8E93` Dark mode: - Background: `#000000` - Surface: `#1C1C1E` - Elevated Surface: `#2C2C2E` - Primary Accent: `#0A84FF` - Text Primary: `#F5F5F7` - Text Secondary: `#AEAEB2` - Border: `#38383A` - Success: `#30D158` - Warning: `#FF9F0A` - Danger: `#FF453A` - Muted: `#8E8E93` ### Typography - Large Title: 32px, weight 700 - Title: 24px, weight 600 - Section Title: 17px, weight 600 - Body: 15px, weight 400 - Small: 13px, weight 400 - Caption: 11px, weight 500 Preferred family order: - SF Pro Display - SF Pro Text - Inter - system UI fallback ### Spacing And Sizing - Tiny: 4px - Small: 8px - Medium: 12px - Large: 16px - XL: 24px - XXL: 32px Recommended component sizes: - Sidebar width: 220px - Channel row height: 36px - User row height: 34px - Card radius: 16px - Button radius: 12px - Popover radius: 18px - Main content padding: 20px ## App Structure The main information architecture should be: - Home - Servers - Bookmarks - Recent Servers - Active Server - Identities - Settings Settings should be organized into: - General - Audio - Capture - Playback - Hotkeys - Notifications - Appearance - Chat - Identities - Advanced ## Main Layout Use a two-column structure: - left sidebar for navigation, bookmarks, and recent servers - main content area for home, active server, identities, and settings ### Sidebar The sidebar should expose: - Home - Bookmarks - Recent Servers - Identities - Settings Server state indicators should be simple and readable: - connected - disconnected - connecting - error ### Active Server View The active server view should emphasize: - server name and connection state - channel tree - users inside channels - current channel - chat access - compact persistent voice status The layout should avoid looking like a legacy server management client. ## Persistent Voice Status Voice controls must always be accessible, but they do not need to live in a large bottom bar. Use a compact voice capsule near the bottom of the active server view. The capsule should show: - connection state - current channel - microphone state - talk mode - optional latency or quick device status Selecting the capsule can open a lightweight popover with: - microphone device - output device - talk mode - volume - mute mic - deafen - disconnect ## Home Screen The home screen should help the user return to voice quickly. Primary content: - continue last server - favorite servers - recent servers - current audio device - current voice mode ## Connection Flow The connect flow should support: - server address - nickname - password - default identity - reconnect - disconnect - connection status - ping and packet loss - clear error states Advanced connection options should stay behind a collapsed or secondary section. Errors should use human-readable copy such as: - unable to connect to server - wrong server password - server is full - connection lost ## Bookmarks Bookmarks should support: - add - edit - delete - reorder - favorite servers - recent servers - default nickname per bookmark - default identity per bookmark - optional stored password - optional default channel The bookmark UI should be lightweight and optimized for quick connect. ## Channel Browser The channel browser should support: - nested channel tree - expand and collapse - current channel highlighting - join on selection - user counts - locked, passworded, and full states - channel and user search The first version should not expose channel creation or editing flows. ## User Presence Each user row should show, when available: - nickname - speaking state - muted state - deafened state - away state - idle state - local mute state - server group badge User actions for the first version: - view basic info - adjust per-user volume - mute locally - send private message - copy unique ID Do not expose moderation actions in the primary first-version UI. ## Voice Features Required voice modes: - push-to-talk - voice activation - optional continuous transmission Required controls: - mute microphone - deafen - select input device - select output device - adjust output volume - adjust microphone gain - test microphone - test speakers - show microphone level - show activation threshold - adjust per-user volume Default mode should be push-to-talk. ## Chat The first version should support: - server chat - channel chat - private messages Chat should include: - timestamps - sender nickname - basic formatting - copy message - clear local conversation - unread indicators - open links Do not include threads, reactions, attachments, or rich embeds. ## Identities Identity handling is part of the first version. Support: - create - rename - delete - import - export - choose default identity - assign identity per bookmark - show unique ID - show security level when available ## Hotkeys And Notifications Hotkeys should cover: - push-to-talk - mute microphone - deafen - toggle away - volume up and down - open settings - open search or command palette - disconnect The client should detect conflicts and support reset. Notifications should cover: - connected and disconnected - connection lost - current-channel join and leave events - private messages - mute and unmute state changes - errors ## Appearance Appearance options should include: - light mode - dark mode - follow system - compact mode - comfortable mode - avatar visibility - group badge visibility - font size adjustments ## Search And Command Palette The app should include a simple command/search interface, opened by `Cmd+K` on macOS and `Ctrl+K` elsewhere. Search targets: - bookmarks - recent servers - channels - users - settings Common actions: - join channel - search user - mute microphone - deafen - open audio settings - connect to server ## Accessibility The client should support: - full keyboard navigation - screen reader labels - high contrast mode - reduce motion mode - large text mode - color-blind-safe indicators - visible focus states - text labels for important icons Voice status must never rely on color alone. ## Performance The app should remain responsive on large servers. Design and implementation should aim for: - 500+ visible users - deep channel trees - smooth scrolling - lazy rendering for large trees - fast search - low idle CPU and memory use - UI and audio work staying decoupled - reconnect without freezing the UI ## Platform Notes ### macOS Prefer macOS-style patterns such as: - sidebar navigation - system light and dark mode - native-feeling shortcuts - menu bar integration where useful ### Windows Keep the visual style Apple-inspired, but respect Windows expectations such as: - notifications - tray support - device switching - game-friendly push-to-talk behavior ### Linux Support: - PipeWire - PulseAudio - desktop theme integration where practical - global hotkeys where possible ## Implementation Priorities ### Must Have - server connection - bookmarks and recents - channel tree - voice chat - push-to-talk and voice activation - mute and deafen - device selection - speaking indicators - chat and private messages - identity import and export - light and dark mode ### Should Have - auto reconnect - notification profiles - hotkey editor - microphone test - speaker test - level meter - search - compact mode - command palette ### Later - temporary channel creation - basic moderation actions - overlay - server management - permissions - whisper - file transfer - plugin or theme extensions ## Final Standard Every UI decision for the first version should reinforce one promise: > A clean, modern, Apple-style TeamSpeak 3 client for joining servers, talking with people, and managing your own voice experience.