Skip to main content

Frontend Overview

This document provides an overview of the frontend architecture for the Agentic RAG Gift Recommender chat interface.

Technology Stack​

Core Principles​

1. Performance First​

Target: 60+ FPS at all times

Strategies:

  • CSS-first animations via Motion.Dev
  • Virtualized message lists for long conversations
  • Optimistic UI updates
  • Efficient re-render boundaries
  • Lazy loading for non-critical components

2. Responsive Design​

Target: Seamless experience across all devices

Breakpoints:

  • Mobile: < 640px
  • Tablet: 640px - 1024px
  • Desktop: > 1024px

Considerations:

  • Touch-friendly interactions on mobile
  • Optimized keyboard navigation on desktop
  • Adaptive layouts that maximize screen real estate

3. Streaming UX​

Target: Immediate feedback and smooth token rendering

Features:

  • Token-by-token text streaming
  • Skeleton states during loading
  • Smooth scroll-to-bottom behavior
  • Interrupt capability for ongoing responses

4. Accessibility​

Target: WCAG 2.1 AA compliance

Implementation:

  • Semantic HTML structure
  • ARIA labels and live regions
  • Keyboard navigation support
  • Focus management for modals and transitions

Architecture Overview​

Component Hierarchy​

app/
├── layout.tsx # Root layout with providers
├── page.tsx # Main chat page
├── components/
│ ├── chat/
│ │ ├── ChatContainer.tsx
│ │ ├── MessageList.tsx
│ │ ├── MessageBubble.tsx
│ │ ├── TypingIndicator.tsx
│ │ └── StreamingText.tsx
│ ├── input/
│ │ ├── ChatInput.tsx
│ │ ├── SendButton.tsx
│ │ └── SuggestionChips.tsx
│ ├── products/
│ │ ├── ProductCard.tsx
│ │ ├── ProductGrid.tsx
│ │ └── ProductCarousel.tsx
│ └── ui/
│ ├── Button.tsx
│ ├── Skeleton.tsx
│ └── Modal.tsx
├── hooks/
│ ├── useChat.ts
│ ├── useStreaming.ts
│ └── useScrollAnchor.ts
└── lib/
├── api.ts
└── utils.ts

Animation Philosophy​

All animations use Motion.Dev (not Framer Motion) for optimal performance:

Entry Animations​

  • Messages fade and slide in from bottom
  • Product cards stagger with spring physics
  • Smooth opacity transitions

Micro-interactions​

  • Button hover/press states
  • Input focus transitions
  • Loading shimmer effects

Page Transitions​

  • Layout animations for responsive changes
  • Modal enter/exit with backdrop blur
  • Skeleton-to-content morphing

Performance Metrics​

MetricTargetDescription
FPS≥60Smooth animations and scrolling
LCP<2.5sLargest Contentful Paint
FID<100msFirst Input Delay
CLS<0.1Cumulative Layout Shift
TTI<3.0sTime to Interactive

Mobile Considerations​

  • Touch gestures: Swipe-to-dismiss for product details
  • Viewport: Proper handling of virtual keyboard
  • Haptics: Subtle feedback on actions (where supported)
  • Reduced motion: Respect user preferences