feat: initial IQAI multi-model AI dashboard

- Express backend with Replicate API proxy (chat, models, account, search)
- React + Vite + Tailwind frontend with custom Midnight Violet color scheme
- @mention autocomplete to route messages to specific models
- Parallel multi-model queries with model selection in sidebar
- DuckDuckGo web search context injection
- Model manager UI (add/edit/remove Replicate models)
- Per-model system instructions per conversation
- Replicate account info display in sidebar
- Conversation history with local persistence (Zustand)
- Full Docker deployment (backend + nginx-served frontend)
- Montserrat + Poppins fonts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Malin
2026-04-16 13:12:40 +02:00
commit 71965939a1
31 changed files with 2399 additions and 0 deletions

46
docker-compose.yml Normal file
View File

@@ -0,0 +1,46 @@
version: '3.9'
services:
backend:
build:
context: .
dockerfile: Dockerfile.backend
container_name: iqai-backend
restart: unless-stopped
environment:
- REPLICATE_API_TOKEN=${REPLICATE_API_TOKEN}
- FRONTEND_URL=${FRONTEND_URL:-http://localhost}
- PORT=3001
volumes:
# Persist model config across container restarts
- iqai-models:/app/data
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:3001/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
networks:
- iqai-net
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
container_name: iqai-frontend
restart: unless-stopped
ports:
- "${FRONTEND_PORT:-80}:80"
depends_on:
backend:
condition: service_healthy
networks:
- iqai-net
volumes:
iqai-models:
driver: local
networks:
iqai-net:
driver: bridge