← all repositories
swuecho/chat

A ChatGPT web clone that grew up and got a job

Team-ready AI chat with user management, rate limits, and multi-model support—forked from the famous ChatGPT-Web demo and hardened for actual production use.

570 stars Vue Chat Assistants
chat
Velocity · 7d
+0.5
★ / day
Trend
steady
star history

What it does

This is a Vue-based chat web app that wraps multiple LLM providers—OpenAI, Azure, Claude, Gemini, and Ollama—into a single interface with proper user accounts, admin roles, and rate limiting. It started as a fork of the popular ChatGPT-Web demo, then sprouted a backend with user management, conversation snapshots, and shareable static pages à la ShareGPT.

The interesting bit

The first registered user automatically becomes administrator, which is either admirably trusting or a deployment foot-gun depending on your threat model. Rate limiting is baked in (100 calls per 10 minutes by default), and there’s a full-text search index over conversation snapshots—handy for teams drowning in chat history.

Key highlights

  • Multi-model backend: OpenAI/Azure, Claude, Gemini, plus local Ollama hosts
  • Built-in rate limiting and user management (first user = admin)
  • Shareable conversation pages and snapshot directories with English full-text search
  • Prompt management with / shortcut
  • Optional auto-generated titles via gemini-2.0-flash; falls back to first 100 chars of prompt
  • Text and multimedia file uploads (model-dependent)
  • Companion Flutter mobile app in the repo

Caveats

  • Documentation and UI mix Chinese and English; some docs are Chinese-only
  • Auto-title generation requires specifically configuring gemini-2.0-flash
  • Acknowledges it was “written with the help of chatgpt”—not a flaw, but know what you’re getting

Verdict

Good fit for small teams or solo devs who want a self-hosted ChatGPT-like experience with actual access controls. Skip if you need enterprise SSO, granular permissions, or a polished English-only experience.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.