← all repositories
FranciscoMoretti/chat-js

A chat app starter kit that actually finishes the job

ChatJS is a batteries-included, multi-provider AI chat foundation you can clone and customize instead of rebuilding auth, streaming, and model routing from scratch.

1.2k stars TypeScript Chat AssistantsApp Builders
chat-js
Velocity · 7d
+2.7
★ / day
Trend
steady
star history

What it does

ChatJS is a Next.js monorepo that packages up everything you need to ship an AI chat interface: 120+ models via Vercel AI Gateway, GitHub/Google/anonymous auth, file attachments, branching conversations, shareable links, web search, image generation, code execution, and even MCP support. It also spits out desktop apps via Electron. A CLI scaffolds your own instance and generates the required config and env vars.

The interesting bit

The “resumable streams” feature uses Redis to let a generation survive a page refresh—simple, but exactly the kind of detail you forget to build until users complain. The stack is aggressively modern (App Router, RSC, tRPC, Drizzle, Better Auth) without being exotic; it’s basically the Vercel ecosystem’s greatest hits assembled into a working app.

Key highlights

  • One API key reaches Claude, GPT, Gemini, and Grok through Vercel AI Gateway
  • Branching conversations: fork threads to explore alternate paths
  • Desktop packaging via Electron (macOS, Windows, Linux)
  • Langfuse observability and Pino structured logging wired in
  • Changesets-driven releases; CLI publishes to npm, desktop installers to GitHub Releases

Caveats

  • Heavy Vercel dependency: AI Gateway, Blob, Analytics—migration elsewhere would be work
  • Redis required for the resumable streams feature; not optional if you want that behavior
  • The README doesn’t specify test coverage or quantify “production-ready” with metrics

Verdict

Grab this if you’re building a chat product and want to ship this week, not next quarter. Skip it if you need a lightweight drop-in component or aren’t prepared to run PostgreSQL and Redis.

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