| .claude | ||
| .github/workflows | ||
| android | ||
| build | ||
| docs | ||
| public | ||
| scripts | ||
| server | ||
| src | ||
| tests | ||
| .dockerignore | ||
| .gitignore | ||
| babel.config.js | ||
| build-docker.sh | ||
| capacitor.config.ts | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| docker-entrypoint.sh | ||
| Dockerfile | ||
| index.html | ||
| jest.config.js | ||
| jest.server.config.js | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| README.md | ||
| tailwind.config.js | ||
| vite.config.js | ||
| vite.config.js.docker | ||
Chirp
A privacy-focused, self-hostable social platform. Discord-like functionality with full control over your data.
🐦 Why Chirp?
In an era where digital privacy is constantly under threat and our personal conversations are treated as a commodity, we believe you have a fundamental right to private communication. Chirp was born out of frustration with platforms that monitor, monetize, and censor your data without your consent.
Chirp is built on a simple idea: your data belongs to you.
- 🔒 Self-Hosted First: Chirp is designed to be run on your own server. You control the hardware, the database, and the entire ecosystem. There are no third-party servers storing your messages.
- 🚫 No Message Scanning: We will never scan your messages. The code is open source—you can verify this yourself.
- 📢 Open Source & Transparent: Trust should be earned. Chirp's entire codebase is available for you to inspect, modify, and contribute to.
✨ Features
Real-time Communication
- Servers & Channels - Create communities with text, media, forum, and collaborative channels
- Threads - Organized conversations that branch from any message
- Direct & Group Messages - Private conversations with rich features
- Real-time Updates - Instant messaging with WebSockets, presence, and typing indicators
- Friend System - Comprehensive friend management with online status and blocking
Rich Content & Media
- Enhanced Media - File attachments, GIF search, custom emojis, and stickers
- Smart Embeds - Rich link previews with embedded YouTube playback
- Interactive Polls - Live polls with real-time results
- Media Channels - Browse images, videos, and audio with thumbnails and comments
- Collaborative Workspaces - Shared notes, documents, and wiki functionality
- Events & Calendar - Server events with reminders and scheduling
Personalization & Profiles
- Dual Profile System - Global profile + per-server profiles
- Rich Customization - Avatars, banners, bios, custom sounds, and themes
- Profile Badges - Collectible status and achievement badges
- Advanced Cropping - Fine-tune your profile images with intuitive tools
- Date/Time Formatting - Personalized display preferences
Moderation & Security
- Fine-Grained Permissions - Role-based system with category and channel overrides
- Moderation Tools - Comprehensive admin logs, kick/ban functionality
- Muting Controls - Granular muting for DMs, channels, and servers
- E2EE Channels - End-to-end encryption for sensitive conversations
- Two-Factor Auth - Optional 2FA for account security
- Account Control - Full deletion options (anonymize or complete nuke)
Cross-Platform Experience
- Desktop App - Native Windows and Linux Electron app
- System Tray - Background operation with notification badges
- Auto-Updates - Seamless desktop app updates
- Rich Notifications - Clickable notifications that go directly to conversations
- VR Integration - XSOverlay support for in-VR notifications
🛠️ Tech Stack
Frontend: React 19, Vite, Tailwind CSS, Zustand, TanStack Query Backend: Node.js, Express, Socket.IO Database: PostgreSQL with Knex.js migrations Desktop: Electron with auto-updater support
🚀 Quick Start
🏗️ Architecture
Frontend: React 19 application with Vite, organized by feature components with Zustand for state management and TanStack Query for server state.
Backend: Node.js/Express server with Socket.IO for real-time communication, handling REST API endpoints and WebSocket connections.
Database: PostgreSQL with comprehensive migration system using Knex.js, supporting users, servers, channels, messages, roles, permissions, and more.
Real-time: Socket.IO handles presence, typing indicators, and instant message delivery with auto-reconnection and heartbeat system.
📚 Documentation
Complete documentation is available at docs/ with guides for:
- Getting Started - Installation and quick setup
- Self-Hosting - Production deployment and configuration
- User Guide - Features and how to use them
- Admin Guide - Server management and moderation
- Developer Guide - Architecture, API, and contributing
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ for privacy-respecting communities
