A sophisticated web application that leverages artificial intelligence to provide personalized exhibition recommendations and immersive art discovery experiences.
Artemia is an innovative AI-powered platform that transforms how people discover and engage with art exhibitions. Named after the resilient brine shrimp, this application adapts to user preferences and curates personalized exhibition recommendations through intelligent conversation and interactive features.
- π€ AI Chat Curator: Intelligent conversational AI that provides personalized exhibition recommendations
- π Exhibition World Cup: Tournament-style comparison tool to discover preferences through head-to-head exhibition matchups
- πΌοΈ Interactive Gallery: Comprehensive exhibition browser with detailed information and direct booking links
- πΎ Smart Bookmarking: Save and organize favorite recommendations with advanced sharing capabilities
- π± Responsive Design: Seamless experience across desktop, tablet, and mobile devices
- π― Real-time Communication: Direct integration with backend AI services for dynamic recommendations
- React 18.3 - Modern React with hooks and functional components
- TypeScript 5.8 - Type-safe development with strict mode
- Vite 5.4 - Lightning-fast build tool and development server
- React Router 6.30 - Client-side routing and navigation
- Tailwind CSS 3.4 - Utility-first CSS framework
- shadcn/ui - High-quality accessible React components built on Radix UI
- Radix UI Primitives - Unstyled, accessible UI components
- Lucide React - Beautiful & consistent icon library
- CSS Grid & Flexbox - Modern layout techniques
- TanStack Query 5.83 - Powerful data synchronization for React
- React Hook Form 7.61 - Performant forms with easy validation
- Custom Hooks - Reusable state logic for chat, sharing, and UI interactions
- ESLint 9.32 - Code linting and formatting
- PostCSS & Autoprefixer - CSS processing and vendor prefixes
- Component Tagger - Development component identification
- TypeScript Strict Mode - Enhanced type checking
- Axios 1.11 - HTTP client for API communication
- RESTful API - Communication with FastAPI backend
- Environment Configuration - Flexible API endpoint configuration
src/
βββ components/ # Reusable UI components
β βββ ui/ # shadcn/ui base components
β βββ ChatModule/ # Chat-related components
β βββ Index/ # Page-specific components
βββ hooks/ # Custom React hooks
βββ utils/ # Utility functions
βββ types/ # TypeScript type definitions
βββ constants/ # Application constants
βββ data/ # Static data and configurations
βββ lib/ # External library configurations
βββ pages/ # Route components
βββ assets/ # Static assets
- Smart Components: Handle business logic and state management
- Presentation Components: Focus on UI rendering and user interactions
- Custom Hooks: Encapsulate reusable state logic and side effects
- Utility Functions: Pure functions for data transformation and API calls
- Local State: React useState for component-specific state
- Server State: TanStack Query for API data caching and synchronization
- Custom Hooks: Centralized logic for complex state operations
- Context API: Minimal usage for theme and global UI state
- Node.js 18+ (LTS recommended)
- npm 9+ or yarn 1.22+
- Git for version control
-
Clone the repository
git clone <your-repository-url> cd artemia-frontend
-
Install dependencies
npm install # or yarn install -
Set up environment variables
# Create environment file cp .env.example .env.local # Edit the environment variables VITE_API_BASE_URL=http://localhost:8000 # Your backend API URL
-
Start the development server
npm run dev # or yarn dev -
Open your browser
http://localhost:8080
npm run dev- Start development server with hot reloadnpm run build- Build for productionnpm run build:dev- Build for development environmentnpm run preview- Preview production build locallynpm run lint- Run ESLint for code quality checks
The heart of Artemia's intelligence - a conversational AI that:
- Understands natural language queries about art and exhibitions
- Provides contextual recommendations based on user preferences
- Maintains conversation history for better personalization
- Supports markdown rendering for rich content display
- Offers quick suggestion buttons for common queries
Technical Implementation:
- WebSocket-like real-time communication with backend
- Message persistence and state management
- Markdown rendering with syntax highlighting
- Responsive chat interface with auto-scrolling
An engaging tournament-style feature that:
- Creates head-to-head matchups between exhibitions
- Progressively narrows down choices through elimination rounds
- Learns user preferences through selection patterns
- Provides visual feedback and round progression
- Culminates in a personalized "champion" exhibition
Technical Implementation:
- Dynamic tournament bracket generation
- State management for match progression
- Smooth animations and transitions
- Responsive design for mobile interaction
A comprehensive exhibition browser featuring:
- Grid-based layout with hover effects
- Detailed exhibition information cards
- Direct links to booking platforms
- Filter and search capabilities
- Responsive image handling with fallbacks
Advanced save and share functionality:
- One-click saving of AI recommendations
- Organized storage with timestamps
- Multiple sharing options (native share API, clipboard)
- Export capabilities for external use
- Cross-platform compatibility
VITE_API_BASE_URL=http://localhost:8000
NODE_ENV=developmentVITE_API_BASE_URL=https://your-api-domain.com
NODE_ENV=productionThe project includes Docker configuration for containerized deployment:
# Development
docker-compose up -d
# Production
docker build -t artemia-frontend .
docker run -p 8080:8080 artemia-frontend- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
- Mobile Safari iOS 14+
- Chrome Mobile Android 90+
- Code Splitting: Lazy loading for route components
- Image Optimization: WebP format with fallbacks
- Bundle Analysis: Optimized chunk sizes
- Caching Strategy: Service worker for offline support
- Tree Shaking: Eliminates unused code
- Minification: Compressed assets for production
# Unit Tests
npm run test
# E2E Tests
npm run test:e2e
# Coverage Report
npm run test:coverage