NextChat is a production-grade, multi-provider AI chat client built as a Next.js web application with an optional Tauri desktop wrapper. It supports 15+ LLM providers (OpenAI, Anthropic, Google, Baidu, DeepSeek, etc.) through a unified API abstraction layer, and provides a rich chat interface with streaming responses, markdown rendering, code folding, image upload, TTS, real-time voice chat, and Stable Diffusion image generation. The application is designed for self-hosting (Docker, Vercel, manual) and emphasizes privacy by storing all chat data locally in IndexedDB/localStorage, with optional cloud sync via WebDAV or UpStash Redis. Architecturally, NextChat is a monolith with client-side state management using Zustand (with IndexedDB persistence), serverless API routes for proxying LLM requests, and a React component library. It includes a plugin system for OpenAPI-based function calling, MCP (Model Context Protocol) integration for external tool execution, and a prompt/mask system for reusable system instructions. The codebase is well-structured with reusable patterns like generic store factories, UI components, and streaming utilities, though it exhibits significant duplication across provider integrations and some features (e.g., Tencent, SD) appear less maintained.
GeminiProChat is a minimal web UI for interacting with Google's Gemini Pro API. It is built as a server-side rendered application using Astro with SolidJS for interactive components. The application provides a chat interface where users can send messages and receive streaming responses from the Gemini model. It supports features like system role settings, temperature control, message history persistence, password protection, and PWA capabilities. The architecture consists of Astro pages (index, password), API endpoints (auth, generate), and SolidJS components for the chat generator, message rendering with markdown and code highlighting, and a theme toggle with view transitions. External dependencies include the Google Generative AI SDK (patched to use v1beta API), markdown-it for rendering, and Zag.js for slider components. The application can be deployed on Vercel, Netlify, Railway, Zeabur, or via Docker, with environment variables for API key, base URL, password, and model name.