Skip to content

v0.0.5

Choose a tag to compare

@frankdierolf frankdierolf released this 27 Sep 16:52
· 9 commits to main since this release

Nuxt 4 migration with unified architecture and toast notifications.

πŸš€ Architecture Evolution

From React to Nuxt 4

  • Complete migration from React + Express to Nuxt 4
  • Unified full-stack application under single framework
  • Simplified deployment and development workflow
  • Previous React implementation preserved in trials/

🎨 UI Enhancements

Nuxt UI Integration

  • Modern component library replacing React components
  • Professional design with consistent styling
  • Dark mode support out of the box
  • Responsive layout with semantic HTML structure

Interface Components

  • Clean VoiceChat component with session management
  • Status indicators for connection state
  • Text input alongside voice interaction
  • Navigation with links to deck and changelog

πŸ”§ Technical Implementation

Composables Architecture

  • useRealtimeChat: WebRTC session management
  • useRealtimeTools: Function calling implementation
  • Clean separation of concerns
  • TypeScript for type safety

Server API Routes

  • /api/session: SDP exchange for WebRTC
  • /api/token: Ephemeral token generation
  • Runtime config for API key management
  • Error handling with proper HTTP status codes

🎯 Function Calling

Toast Notifications

  • ChatGPT can trigger toast notifications
  • Support for success, error, warning, info types
  • Custom titles, descriptions, and icons
  • Bidirectional communication via data channel

πŸ“¦ Developer Experience

Simplified Stack

  • Single pnpm dev for full-stack development
  • Nuxt DevTools for debugging
  • Hot module replacement
  • TypeScript throughout

πŸ”„ Migration Path

The journey from React to Nuxt:

  1. Started with OpenAI's React template
  2. Identified need for simpler architecture
  3. Migrated to Nuxt 4 for unified experience
  4. Added Nuxt UI for professional components
  5. Implemented toast notifications as proof of concept

Next step: Integrate ethers.js for Web3 capabilities