This document provides a comprehensive design review of the MetaCogna RAG application, documenting design patterns, component usage, and design generalities.
Project Overview
MetaCogna RAG is a Retrieval-Augmented Generation system built on Cloudflare Workers with a React frontend. It provides document management, vector search, knowledge graph extraction, and RAG-powered chat capabilities.
Purpose
Document ingestion and storage (R2, D1, Vectorize)
Semantic search and retrieval
Knowledge graph visualization
RAG-powered question answering
Multi-agent simulation interface
Design Philosophy
MetaCogna RAG follows the Paper UI design system with a focus on:
Functional Clarity : Interface prioritizes functionality over decoration
Visible Construction : Technical details (IDs, status, metadata) are visible
Hard Edges : Minimal border radius, hard shadows for physical depth
High Contrast : Clear visual hierarchy with Ink/Paper polarity
Color System Implementation
Current Implementation
MetaCogna RAG uses Tailwind CDN with inline configuration:
Issues
No Dark Mode : Dark mode is not implemented
Direct Color Values : Uses hex values instead of CSS custom properties
Inconsistent Usage : Some components may use direct Tailwind colors
Migration to CSS custom properties is recommended for future dark mode support.
Typography
Font Families
Serif (Playfair Display): Headings, card titles
Sans-Serif (Inter): Body text, button labels
Monospace (JetBrains Mono): Technical inputs, badges, metadata
Typography Patterns
Headings :
H1/H2: Serif font, bold, tight tracking
Card titles: Serif, bold, uppercase, tracking-wide
Body Text :
Default: Sans-serif, standard weight, generous line-height
Code/metadata: Monospace, uppercase often
Inputs :
Font: Monospace (correct per Paper UI)
Labels: Monospace, uppercase, bold, small size
Component Inventory
Core Components
PaperCard
Basic implementation without animations
Supports title and action props
Hard shadows and borders
PaperButton
Variants: primary, secondary, ghost, danger
Sizes: sm, md, lg
Active state with translate animation
PaperInput
Label and error support
Monospace font (correct)
Focus shadow instead of ring
PaperBadge
Colors: blue, green, red, ink
Monospace, uppercase
Size: 10px (too small - should be 12px)
MarkdownText
Custom component for rendering markdown
Handles bold, inline code, code blocks
Application Components
Layout : Navigation sidebar with view switching
GlobalAIModal : Quick AI assistant (Cmd/Ctrl+I)
SupervisorWidget : Real-time supervisor advice
ErrorBoundary : React error boundary
GlobalToast : Toast notifications
GraphAnalysis : Graph metrics and insights
Layout Patterns
View-Based Routing
The application uses enum-based view routing:
Main Layout Structure
Sidebar Navigation : Fixed left sidebar with view links
Main Content Area : View-specific content
Global Components : Toast, modals, AI assistant overlay
View Patterns
Landing Page :
Hero section with system status
Quick action cards
Morning briefing (AI-generated summary)
Upload View :
Tabbed interface (Upload, Documents, Statistics)
Drag-and-drop file upload
Document list with metadata
Progress tracking
Question View :
Chat interface layout
Message history
Input area with send button
Streaming response display
Knowledge Graph View :
Full-screen graph canvas
Sidebar with controls and filters
Node/edge information panels
Navigation Patterns
Icon + text labels
Active state indication
Grouped by functionality
User profile access at bottom
View Switching
Programmatic view switching via setView()
No URL-based routing (SPA with state management)
View state persists in component state
Label above input (monospace, uppercase)
Error messages below input
Hard shadows on focus
No ring/outline focus styles
Primary actions: Primary button variant
Secondary actions: Secondary or ghost variant
Destructive actions: Danger variant
Form submission: Full-width primary buttons common
Vertical stacking (flex-col)
Generous spacing between fields
Grouped related fields visually
Submit buttons at bottom
Data Visualization Patterns
Knowledge Graph
D3.js force-directed graph
PaperCard containers for controls
Monospace labels for node IDs
Color-coded node types
Progress Indicators
Pipeline stages with color coding
Percentage display
Animated progress bars
Stage-specific icons
Statistics Display
Card-based metric displays
Large numbers with labels
Status badges
Trend indicators (if applicable)
Unique Design Features
Pipeline Visualization
Four-stage ingestion pipeline with:
Color-coded stages (Blue, Purple, Indigo, Emerald)
Percentage progress (0-29%, 30-59%, 60-89%, 90-100%)
Animated diagonal stripes during processing
Morning Briefing
AI-generated daily summary:
Zero-UI approach (text-only)
PaperCard container
Generated on-demand
Hover interactions reveal:
Full metadata (author, category, tags)
Technical details (ID, status, chunk count)
Visible construction principle
Component Usage Patterns
Card Usage
Primary container for all major sections
Titles for section headers
Action buttons in headerAction slot
Nested cards for grouped content
Primary: Main actions (Upload, Submit, Save)
Secondary: Alternative actions
Ghost: Tertiary actions, less emphasis
Danger: Delete, destructive actions
Badge Usage
Status indicators (processing, indexed, error)
System status (ONLINE, OFFLINE)
Document status
Small, monospace, uppercase
Consistency Assessment
Strengths
✅ Consistent use of Paper UI colors
✅ Hard shadows throughout
✅ Minimal border radius
✅ Monospace for technical content
✅ Clear visual hierarchy
Areas for Improvement
❌ No dark mode support
❌ Badge font size too small (10px → 12px)
❌ No animations on cards (could enhance UX)
❌ Input font should remain monospace (currently correct)
❌ Missing some extended components (TextArea, Select, Modal)
Recommendations
High Priority
Add Dark Mode Support
Migrate to CSS custom properties
Update Tailwind config
Test all components in dark mode
Fix Badge Size
Change from text-[10px] to text-xs (12px)
Improve readability
Add Missing Components
PaperTextArea for multi-line inputs
PaperSelect for dropdowns
PaperModal for dialogs
Medium Priority
Add Animations
Card fade-in animations
Smooth transitions
Enhanced interactivity
Standardize Component Props
Align with baseline components
Add missing props (noPadding, etc.)
Low Priority
Enhanced Visual Feedback
Loading states
Success animations
Error states with icons
Design Generalities Summary
Overall Approach : Functional, technical, visible construction
Key Characteristics :
Technical aesthetic with visible metadata
Hard edges and shadows for depth
High contrast for clarity
Monospace for technical content
Card-based layout patterns
Strengths : Clean, functional, consistent with Paper UI principles
Weaknesses : No dark mode, limited animations, small badge text