Modern, responsive chat interface inspired by Open WebUI. Supports OpenAI-compatible API with streaming responses, token analysis, and RAG knowledge bases. ## πŸš€ Quick Start (Docker) ```bash cp .env.example .env # Edit .env β€” set your API URL and key docker compose up --build -d # Open http://localhost ``` ## πŸ—οΈ Development ### Backend ```bash cd backend npm install npm run dev # port 3001 ``` ### Frontend ```bash cd frontend npm install npm run dev # port 5173 (with HMR) ``` ## ✨ Features | Feature | Description | |---------|-------------| | πŸ’¬ Chat | Streaming messages with markdown & LaTeX | | βš™οΈ Settings | Model, system prompt, temperature, tokens | | πŸ“Š Token Analysis | Usage stats panel (tokens/sec, context, cost) | | πŸ“ Attachments | Image upload + analysis | | πŸ“š Knowledge Bases | RAG with multiple bases, file/folder upload | | 🎨 Theme | Dark mode, accent colors | | πŸ“± Responsive | Works on mobile and desktop | ## πŸ›οΈ Architecture ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Nginx (80) │────────▢│ Backend │────────▢│ OpenAI API β”‚ β”‚ SPA + /api/* β”‚ β”‚ (Node.js) β”‚ β”‚ (or compatible)β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ sqlite db β”‚ β”‚ (chats) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ## πŸ”§ Environment Variables | Variable | Default | Description | |----------|---------|-------------| | `OPENAI_API_URL` | `https://api.openai.com/v1` | API endpoint | | `OPENAI_API_KEY` | - | Your API key | | `DEFAULT_MODEL` | `gpt-4o-mini` | Default model ID | | `JWT_SECRET` | random | JWT secret | | `NODE_ENV` | `development` | Environment | ## 🐳 Production ```bash docker compose -f docker-compose.yml up -d --build ``` Nginx serves static frontend + proxies `/api` to backend. ## πŸ“‚ Project Structure ``` β”œβ”€β”€ frontend/ # Vite + React + TypeScript + Tailwind β”‚ β”œβ”€β”€ src/components/ # Chat, UI, Layout components β”‚ β”œβ”€β”€ src/stores/ # Zustand store β”‚ β”œβ”€β”€ src/services/ # API client β”‚ └── Dockerfile β”œβ”€β”€ backend/ # Express + proxy + chat storage β”‚ β”œβ”€β”€ src/index.js # Main server β”‚ └── Dockerfile β”œβ”€β”€ nginx/ # Reverse proxy config └── docker-compose.yml # Full stack ``` ## πŸ“œ License MIT