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

70
backend/data/models.json Normal file
View File

@@ -0,0 +1,70 @@
[
{
"id": "claude-opus-4",
"tag": "claude",
"displayName": "Claude Opus 4.6",
"owner": "anthropic",
"name": "claude-opus-4.6",
"type": "text",
"avatar": "🤖",
"color": "#CC785C",
"description": "Anthropic's most powerful model",
"systemPromptParam": "system_prompt",
"defaultInput": {
"max_tokens": 8192,
"max_image_resolution": 0.5
}
},
{
"id": "grok-4",
"tag": "grok",
"displayName": "Grok 4",
"owner": "xai",
"name": "grok-4",
"type": "text",
"avatar": "⚡",
"color": "#1DA1F2",
"description": "xAI's advanced reasoning model",
"systemPromptParam": null,
"defaultInput": {
"max_tokens": 2048,
"temperature": 0.1
}
},
{
"id": "gemini-3-pro",
"tag": "gemini",
"displayName": "Gemini 3.1 Pro",
"owner": "google",
"name": "gemini-3.1-pro",
"type": "text",
"avatar": "✨",
"color": "#4285F4",
"description": "Google's latest multimodal model",
"systemPromptParam": null,
"defaultInput": {
"temperature": 1,
"thinking_level": "high",
"max_output_tokens": 65535,
"top_p": 0.95,
"images": [],
"videos": []
}
},
{
"id": "deepseek-r1",
"tag": "deepseek",
"displayName": "DeepSeek R1",
"owner": "deepseek-ai",
"name": "deepseek-r1",
"type": "text",
"avatar": "🔍",
"color": "#7C3AED",
"description": "DeepSeek's advanced reasoning model",
"systemPromptParam": "system_prompt",
"defaultInput": {
"max_tokens": 8192,
"temperature": 0.7
}
}
]