Skip to content
vardhan23vPublic

About

Voice-first AI assistant inspired by Jarvis. Streaming chat with Groq (Llama 3.3 70B), persistent memory, voice input, customizable themes, MCP tools, and Supabase auth. Built with TanStack Start, React 19, and Tailwind CSS.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

πŸ€– Vard AI

Vard AI (Voice-Activated Responsive Director) is a personal, voice-first AI assistant inspired by the cinematic feel of Jarvis and the everyday utility of Siri. Built with TanStack Start, React 19, TypeScript, and Tailwind CSS v4, it delivers a fast, immersive chat experience with persistent memory, custom branding, streaming AI responses, and a modular MCP tool system.

Live preview: id-preview.lovable.app Published site: vard-ai.lovable.app GitHub repo: github.com/vardhan23v/Vard-AI

TanStack Start React TypeScript Tailwind CSS Groq Supabase


🧠 What is Vard AI?

Vard is designed to feel less like software and more like a companion. It combines:

  • Natural voice input β€” real-time browser microphone capture with WAV encoding and streaming transcription via the Lovable AI Gateway.
  • Streaming AI chat β€” powered by Groq (llama-3.3-70b-versatile) for fast, token-by-token responses with stop/cancel controls.
  • Persistent memory β€” remembers facts, preferences, and people across conversations.
  • Customizable brand & motion β€” switch themes, accents, logos, background styles, and route transitions.
  • Reduced-motion support β€” fully accessible animation controls with system preference detection and automated Playwright regression tests.
  • MCP tool system β€” extensible agent integrations via the Model Context Protocol with OAuth-protected tools.

πŸš€ Features

πŸŽ™οΈ Voice & Chat

  • Voice Input: Click the mic, speak naturally β€” audio is captured via the browser, encoded to WAV (16kHz mono PCM), and streamed to /api/transcribe for real-time transcription.
  • Streaming Responses: Chat endpoint at /api/chat streams Groq responses token-by-token with live progress and stop/cancel controls.
  • Escape Key Abort: Press Escape or click the stop button to cancel generation mid-stream.
  • Regenerate: Regenerate the last prompt per thread, persisted across page refresh.
  • Command Bar: Floating command bar with / shortcuts, voice toggle, and keyboard navigation (⌘K).

🎨 Theming & Branding

  • Dark/Light/System Mode: Full theme support with CSS custom properties.
  • Accent Palettes: Mint, Violet, Coral, Cyan, Amber β€” change the entire app's accent color.
  • Brand Panel: Upload and crop a custom logo, rename the app, pick accent colors, and choose background styles.
  • Background Styles: Nebula, Aurora, Mesh, Grid, Gradient, and more.
  • Motion Customization: Duration, easing, and transition presets (fade, slide, zoom, blur, lift).

🏠 Dashboard

  • Bento Grid Layout: Cinematic dashboard with ambient aurora backdrops, animated orb, and system status indicators.
  • Today's Agenda: Quick-view agenda panel with color-coded items.
  • Quick Actions: One-click actions for Draft Email, Schedule, and Analyze Data.
  • Pending Actions Counter: At-a-glance task count with animated stats.

β™Ώ Accessibility

  • Reduced Motion Toggle: Live preview of reduced vs. full motion.
  • ARIA Support: Progress indicators expose role="progressbar" and ARIA labels.
  • Focus States & Keyboard Shortcuts: Full keyboard navigation support.
  • CI Regression Tests: Automated Playwright tests for reduced-motion compliance.

πŸ”§ MCP Tool System

  • Model Context Protocol: OAuth-protected MCP server with extensible tools.
  • Built-in Tools: echo (connectivity check) and whoami (user identity).
  • Granular Consent: Per-tool OAuth consent flow via Supabase auth.

πŸ” Authentication

  • Supabase Auth: Full sign-up/login with email/password.
  • Session Management: Secure sessions with server-side auth middleware.
  • Protected Routes: All dashboard and API routes require authentication.

πŸ› οΈ Technology Stack

Layer Technology
Framework TanStack Start v1 (full-stack React)
UI React 19, TypeScript
Styling Tailwind CSS v4, CSS custom properties
Icons Lucide React
Auth Supabase Auth
AI / Chat Groq API (Llama 3.3 70B Versatile)
Voice / Transcription Lovable AI Gateway
Tools Model Context Protocol (MCP)
Testing Playwright (E2E + reduced-motion regression)
Package Manager Bun

πŸ“Š Architecture

Browser (Voice/Text Input)
    β”‚
    β”œβ”€β”€ /api/chat (POST) ──────► Groq API (llama-3.3-70b-versatile)
    β”‚       Streaming SSE ──────► Token-by-token response
    β”‚
    β”œβ”€β”€ /api/transcribe (POST) ─► Lovable AI Gateway
    β”‚       Streaming SSE ──────► Real-time transcript
    β”‚
    └── /.mcp/* ───────────────► MCP Server (OAuth-protected tools)
            echo, whoami, extensible

πŸ“ Project Structure

Vard-AI/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ BrandPanel.tsx           # Logo upload, app name, accent, background
β”‚   β”‚   β”œβ”€β”€ JarvisOrb.tsx            # Cinematic animated orb avatar
β”‚   β”‚   β”œβ”€β”€ LogoCropper.tsx          # Logo crop tool
β”‚   β”‚   β”œβ”€β”€ Sidebar.tsx              # Navigation sidebar
β”‚   β”‚   β”œβ”€β”€ ThemeSwitcher.tsx        # Dark/light/system toggle
β”‚   β”‚   β”œβ”€β”€ agents/
β”‚   β”‚   β”‚   └── VisualBuilder.tsx    # Agent builder interface
β”‚   β”‚   β”œβ”€β”€ chat/
β”‚   β”‚   β”‚   β”œβ”€β”€ ChatPrompt.tsx       # Chat input with voice toggle
β”‚   β”‚   β”‚   └── ChatWindow.tsx       # Full chat interface with streaming
β”‚   β”‚   └── ui/                      # 40+ shadcn/ui components
β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   └── use-mobile.tsx           # Mobile detection hook
β”‚   β”œβ”€β”€ integrations/
β”‚   β”‚   └── supabase/                # Supabase client, auth middleware, types
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ brand.tsx                # Brand customization context
β”‚   β”‚   β”œβ”€β”€ motion.tsx               # Motion presets & reduced-motion
β”‚   β”‚   β”œβ”€β”€ theme.tsx                # Theme provider & accent palettes
β”‚   β”‚   β”œβ”€β”€ voice-input.ts           # Browser mic β†’ WAV β†’ transcription
β”‚   β”‚   β”œβ”€β”€ utils.ts                 # Shared utilities
β”‚   β”‚   β”œβ”€β”€ require-auth.server.ts   # Server-side auth guard
β”‚   β”‚   └── mcp/
β”‚   β”‚       β”œβ”€β”€ index.ts             # MCP server definition
β”‚   β”‚       └── tools/
β”‚   β”‚           β”œβ”€β”€ echo.ts          # Connectivity check tool
β”‚   β”‚           └── whoami.ts        # User identity tool
β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”œβ”€β”€ __root.tsx               # Root layout with providers
β”‚   β”‚   β”œβ”€β”€ index.tsx                # Landing page (hero, features, orb)
β”‚   β”‚   β”œβ”€β”€ login.tsx                # Auth entry point
β”‚   β”‚   β”œβ”€β”€ dashboard.tsx            # Dashboard layout
β”‚   β”‚   β”œβ”€β”€ dashboard.index.tsx      # Dashboard home (bento grid)
β”‚   β”‚   β”œβ”€β”€ dashboard.chat.tsx       # AI chat interface
β”‚   β”‚   β”œβ”€β”€ dashboard.agents.tsx     # Agent builder
β”‚   β”‚   β”œβ”€β”€ memory.tsx               # Persistent memory management
β”‚   β”‚   β”œβ”€β”€ automations.tsx          # Recurring routines & triggers
β”‚   β”‚   β”œβ”€β”€ integrations.tsx         # Connected services & MCP tools
β”‚   β”‚   β”œβ”€β”€ personality.tsx          # Assistant personality settings
β”‚   β”‚   β”œβ”€β”€ history.tsx              # Conversation history
β”‚   β”‚   β”œβ”€β”€ analytics.tsx            # Usage analytics
β”‚   β”‚   β”œβ”€β”€ documents.tsx            # Document library
β”‚   β”‚   β”œβ”€β”€ voice.tsx                # Voice & avatar settings
β”‚   β”‚   β”œβ”€β”€ shortcuts.tsx            # Keyboard shortcuts
β”‚   β”‚   β”œβ”€β”€ settings.tsx             # App settings, theme, motion, brand
β”‚   β”‚   β”œβ”€β”€ about.tsx                # About Vard AI
β”‚   β”‚   β”œβ”€β”€ library.tsx              # Content library
β”‚   β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”‚   β”œβ”€β”€ chat.ts              # Groq streaming chat endpoint
β”‚   β”‚   β”‚   └── transcribe.ts        # Voice transcription endpoint
β”‚   β”‚   └── [.mcp]/                  # MCP OAuth & tool endpoints
β”‚   β”œβ”€β”€ server.ts                    # Server entry configuration
β”‚   β”œβ”€β”€ start.ts                     # Start instance with auth middleware
β”‚   └── styles.css                   # Global theme variables & animations
β”œβ”€β”€ supabase/                        # Supabase configuration
β”œβ”€β”€ tests/                           # Playwright E2E & regression tests
β”œβ”€β”€ .github/workflows/               # CI (reduced-motion regression)
β”œβ”€β”€ package.json
β”œβ”€β”€ vite.config.ts
└── tsconfig.json

πŸ—ΊοΈ Available Routes

Route Description
/ Landing page with hero, animated orb, and feature cards
/login Authentication entry point
/dashboard Main dashboard with bento-grid layout
/dashboard/chat AI chat interface with streaming responses
/dashboard/agents Agent builder
/memory Persistent memory management
/automations Recurring routines and triggers
/integrations Connected services and MCP tools
/personality Assistant personality settings
/history Conversation history
/analytics Usage analytics
/documents Document library
/voice Voice and avatar settings
/shortcuts Keyboard shortcuts
/settings App settings, theme, motion, brand
/about About Vard AI
/library Content library

βš™οΈ Getting Started

Prerequisites

  • Node.js (v18+) β€” recommended via nvm
  • A package manager: npm, yarn, pnpm, or bun
  • Supabase project (for auth)
  • Groq API key (get one free)

Installation

  1. Clone the repository

    git clone https://github.com/vardhan23v/Vard-AI.git
    cd Vard-AI
  2. Install dependencies

    npm install
    # or: bun install
  3. Configure environment variables

    Create a .env file in the project root:

    VITE_SUPABASE_URL=your_supabase_url
    VITE_SUPABASE_PUBLISHABLE_KEY=your_supabase_anon_key
    VITE_SUPABASE_PROJECT_ID=your_supabase_project_id
    GROQ_API_KEY=your_groq_api_key
    LOVABLE_API_KEY=your_lovable_api_key

    Backend secrets (GROQ_API_KEY, LOVABLE_API_KEY) are read server-side only via process.env in server functions and API routes.

  4. Run the development server

    npm run dev
    # or: bun run dev
  5. Open in Browser

    Navigate to http://localhost:8080 to meet Vard!


🎀 Voice & Chat Flow

  1. User clicks the mic button β†’ browser captures audio via getUserMedia
  2. Raw PCM chunks are collected, downsampled to 16kHz mono, and encoded as a WAV blob
  3. WAV is POSTed to /api/transcribe with Supabase auth token
  4. Lovable AI Gateway transcribes the audio and streams the result back via SSE
  5. Transcript appears in the command bar β€” user can edit or send
  6. Chat messages are POSTed to /api/chat β†’ Groq streams llama-3.3-70b-versatile responses token-by-token
  7. User can stop generation with Escape key or stop button

🎨 Customization

Open the Brand Panel in Settings to customize:

  • Logo: Upload + crop your own logo
  • App Name: Rename the assistant
  • Accent Color: Choose from Mint, Violet, Coral, Cyan, Amber
  • Background Style: Nebula, Aurora, Mesh, Grid, Gradient, and more
  • Route Transitions: Fade, slide, zoom, blur, lift
  • Motion Intensity: Duration, easing, and reduced-motion preference

β™Ώ Accessibility

Vard AI is built with accessibility in mind:

  • Respects prefers-reduced-motion system preference
  • Progress indicators expose role="progressbar" and ARIA labels
  • Focus states and keyboard shortcuts are supported throughout
  • Reduced-motion regression tests run in CI via Playwright
  • All animations (spinner, shimmer, toast, modal, route transitions) respect the reduced-motion setting

🀝 Contributing

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.

πŸ“„ License

This project is licensed under the MIT License.


Built with ❀️ by Sree Vardhan V

About

Voice-first AI assistant inspired by Jarvis. Streaming chat with Groq (Llama 3.3 70B), persistent memory, voice input, customizable themes, MCP tools, and Supabase auth. Built with TanStack Start, React 19, and Tailwind CSS.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages