$ account zulip
Zulip is a production-grade, open-source team chat application built as a Django monolith with a real-time Tornado event server. The backend uses Django ORM with PostgreSQL, RabbitMQ for async queue processing (email, push notifications, URL previews), Memcached/Redis for caching and rate limiting, and a custom typed-endpoint decorator pattern for API validation. The frontend is a mix of legacy jQuery/Handlebars and modern TypeScript with Zod schemas, Webpack bundling, and extensive UI components for chat composition, streams, topics, user groups, and settings. The system exposes a REST API (used by mobile and desktop clients), webhook ingestion for 50+ third-party services, and a full billing/support subsystem via Stripe. The architecture is a single monolithic Django application with separate Tornado process for real-time push, alongside queue workers and cron-like management commands. Key entry points include the Django WSGI server, Tornado event server, management commands (e.g., manage.py), and webhook view functions. External dependencies include PostgreSQL, RabbitMQ, Redis, Memcached, Stripe, pgroonga (full-text search), pyvips (image processing), and numerous npm packages.
Zulip Desktop is an Electron-based desktop client for the Zulip team chat platform. It wraps the Zulip web application in a native window, providing multi-organization support via tabbed webviews, desktop notifications, tray/dock integration, spellcheck, and automatic updates. The architecture follows a standard Electron pattern with a main process (app/main/index.ts) managing windows, IPC, and system integrations, and a renderer process (app/renderer/js/main.ts) handling the UI, tab management, and settings pages. Communication between processes is facilitated by a strongly typed IPC system (typed-ipc.ts) that defines all channels and ensures type safety. The application persists user preferences and server configurations via JSON files (settings.json, domain.json) with Zod schema validation, and supports enterprise deployment through a global configuration file. External dependencies include Electron, electron-builder for packaging, electron-updater for auto-updates, Sentry for error reporting, and i18next for internationalization. The codebase is well-structured with clear separation of concerns, reusable component patterns, and comprehensive build pipelines for Windows, macOS, and Linux.