Skip to main content

Pages

GetThatQuick has two top-level pages, selected by App.tsx based on whether the user has completed onboarding.


Dashboard

File: pages/dashboard.tsx

The Dashboard is the main application shell. It composes the entire UI from a horizontal strip of panels and overlays.

Layout Structure

┌──────────┬──────────────┬──┬───────────────┬──┬──────────────────┬──────────┐
│ IconRail │ LeftSidebar │↔ │ ChatArea │↔ │ RightSidebar │RightIcon │
│ (56px) │ (resizable) │ │ │ │ (resizable) │ Rail │
│ │ │ │ │ │ │ (56px) │
└──────────┴──────────────┴──┴───────────────┴──┴──────────────────┴──────────┘
↕ ResizeHandle ↕ ResizeHandle

Overlays rendered on top:

  • SettingsOverlay — full modal settings panel
  • TemplateEditor — full-screen template editing modal

State

StateTypeDescription
panels{ left, right }Visibility toggles for sidebars
settingsOpenbooleanWhether the settings overlay is shown
configPanelOpenbooleanWhether the inline config panel is open
leftMode"chats" | "projects"Left sidebar view mode
leftWidth / rightWidthnumberSidebar widths (clamped 200–520px)
projectsProject[]Project tree (persisted to localStorage)
documentsDocument[]Attached documents for current session
editingTemplateIdstring | nullTemplate currently being edited
templateFilterstringSearch filter for template sidebar

Hooks Used

  • useSessions() — session CRUD, message sending, LLM streaming
  • useTemplates() — template CRUD, community sync
  • useSettings() — server-managed settings state

ResizeHandle

A subcomponent rendered between resizable panels. It listens for mousedownmousemovemouseup to let users drag-resize the left and right sidebars within the 200–520px range.


Onboarding

File: pages/onboarding.tsx

A 5-step setup wizard shown on first launch (before settings are configured).

Steps

#StepSkippableDescription
1WelcomeNoIntroduction and branding
2VoskModelYesConfigure local speech-to-text model
3LLMProviderNoSelect LLM provider (Ollama, OpenAI, etc.)
4APIKeysYesEnter API keys for remote providers
5DoneNoConfirmation and finish

UI Elements

  • Progress bar spans the top of the wizard, filled proportionally to the current step
  • Step dots indicate position within the flow, with active/completed states
  • Skip buttons appear on optional steps (Vosk, API Keys)

Completion Flow

When the user reaches step 5 and finishes:

  1. Settings are saved to the server via the API client
  2. The onComplete callback fires, which causes App.tsx to re-evaluate and switch to the Dashboard