Frontend Features
Component-level documentation of all 13 frontend feature modules.
The AnyaSelf frontend is organized into 13 feature modules under src/features/. Each module is a self-contained directory with its own page component and any related logic.
Feature Map
graph TB
subgraph Public["Public Routes"]
LAND["🏠 Landing<br/>landing-page.tsx"]
LOGIN["🔐 Login<br/>login-page.tsx"]
end
subgraph Core["Core Experience"]
DASH["📊 Dashboard<br/>dashboard-page.tsx"]
BOUT["🏪 Boutique<br/>boutique-page.tsx"]
WARD["👗 Wardrobe<br/>wardrobe-page.tsx"]
MISS["🤖 Missions<br/>mission-studio-page.tsx"]
end
subgraph Shopping["Shopping Flow"]
BUY["💳 BuyFlow<br/>buy-flow-page.tsx"]
REQ["📋 Requests<br/>requests-page.tsx"]
HB["🌐 Hyperbeam<br/>hyperbeam-page.tsx"]
end
subgraph AI["AI Features"]
VTO_F["🎨 VTO<br/>vto-page.tsx"]
VOICE["🎙️ Voice<br/>aura-bubble.tsx"]
end
subgraph Setup["Setup"]
ONBOARD["📝 Onboarding<br/>onboarding-page.tsx"]
SETTINGS["⚙️ Settings<br/>settings-page.tsx"]
end🏠 Landing (/landing)
The public landing page showcasing AnyaSelf's capabilities. Includes the Unsplash-powered public discover feed and an introduction to the platform.
Files: landing-page.tsx
🔐 Login (/login)
Firebase Authentication integration with Google Sign-In. Redirects authenticated users to /dashboard.
Files: login-page.tsx
📝 Onboarding (/onboarding)
Multi-step onboarding wizard for new users. Collects style preferences, body profile, and initial wardrobe seed data.
Files:
| File | Purpose |
|---|---|
onboarding-page.tsx | Full onboarding UI (40KB — the largest single component) |
onboarding-state.ts | Completion tracking (localStorage-persisted) |
onboarding-profile-store.ts | Zustand store for profile data during onboarding |
onboarding-profile-brief.ts | Profile summary for API submission |
onboarding-profile-store.test.ts | Store unit tests |
onboarding-state.test.ts | State logic tests |
📊 Dashboard (/dashboard)
The main hub after login. Shows household overview, recent missions, pending requests, and quick-action cards.
Files: dashboard-page.tsx
🏪 Boutique (/boutique)
Visual grid for browsing styled outfits, discovery-mode fashion inspiration, and outfit stands grouped by member/season/occasion.
Files: boutique-page.tsx
🤖 Missions (/missions)
The Mission Studio — the primary chat interface for interacting with the AnyaSelf AI agent. Shows conversation history, agent plan execution, embedded Hyperbeam sessions, and tool call results.
Files: mission-studio-page.tsx
👗 Wardrobe (/wardrobe)
Personal wardrobe management. CRUD for items with image uploads, outfit composition, category/season filtering, and discover feed with like/save/impression engagement.
Files: wardrobe-page.tsx
🎨 VTO (/vto)
Virtual Try-On interface. Users select a person image and a garment image, submit a VTO job, and view the blended result. Includes "The Look" panel for outfit context.
Files: vto-page.tsx
🌐 Hyperbeam (/hyperbeam)
Embedded Hyperbeam browser view. Displays the interactive cloud browser iframe with takeover controls. Users and the AI agent can both interact with external retailer websites.
Files:
| File | Purpose |
|---|---|
hyperbeam-page.tsx | Embedded browser view + controls |
| (additional support) | Session state management |
💳 BuyFlow (/buyflow)
The end-to-end purchase flow. Guides users through purchase request creation, guardian approval, cart preparation status, and final checkout confirmation.
Files: buy-flow-page.tsx
📋 Requests (/requests)
Purchase request management for guardians. Lists pending/approved/completed requests with approval/rejection actions.
Files: requests-page.tsx
⚙️ Settings (/settings)
User and household configuration. Profile editing, member management, and display preferences.
Files: settings-page.tsx
🎙️ Voice — Aura Bubble
The global Aura AI voice assistant, rendered as a floating bubble overlay on every page. Connects to Gemini Live via the API Gateway's WebSocket proxy.
Files:
| File | Purpose |
|---|---|
aura-bubble.tsx | Main bubble UI with animation states (33KB) |
gemini-live.ts | WebSocket client for Gemini Live API (26KB) |
use-gemini-live.ts | React hook wrapping the WS client |
voice-status.tsx | Status indicator with visual feedback |
voice-tools.ts | Tool calling handlers for voice (90KB — extensive tool registry) |
The Aura bubble follows the Model B voice architecture:
- Client captures speech → Gemini Live transcribes to text
- Text is sent to orchestrator mission
/chatendpoint - Response is spoken via Gemini Live TTS
- User interrupt (barge-in) stops TTS and sends new turn
Shared Libraries
Located in src/lib/:
| Module | Purpose |
|---|---|
api/ | HTTP client functions for all backend services |
env.ts | Environment config with preview mode detection |
firebase/ | Firebase SDK initialization |
missions/ | Mission state helpers and transforms |
sw/ | Service worker for offline wardrobe caching |
theme/ | Dark/light theme management |
utils/ | Shared utility functions |
wardrobe/ | Wardrobe-specific API helpers |