[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-77603":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":16,"starSnapshotCount":16,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},77603,"OpenWA","rmyndharis\u002FOpenWA","rmyndharis","Free, Open Source, Self-Hosted WhatsApp API Gateway","https:\u002F\u002Fwww.open-wa.org",null,"TypeScript",8247,1792,56,38,0,54,518,3631,419,115.76,"MIT License",false,"main",[26,27,28],"api","gateway","whatsapp","2026-06-12 04:01:21","\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Flogo\u002Fopenwa_logo.webp\" alt=\"OpenWA Logo\" width=\"200\"\u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">OpenWA\u003C\u002Fh1>\n\u003Cp align=\"center\">\n  \u003Cstrong>Open Source WhatsApp API Gateway\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#-features\">Features\u003C\u002Fa> •\n  \u003Ca href=\"#-quick-start\">Quick Start\u003C\u002Fa> •\n  \u003Ca href=\"#-documentation\">Docs\u003C\u002Fa> •\n  \u003Ca href=\"#-api-examples\">API\u003C\u002Fa> •\n  \u003Ca href=\"#-contributing\">Contributing\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fversion-0.1.6-blue.svg\" alt=\"Version\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-green.svg\" alt=\"License\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fnode-22_LTS-brightgreen.svg\" alt=\"Node\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNestJS-11.x-red.svg\" alt=\"NestJS\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocker-ready-blue.svg\" alt=\"Docker\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-5.x-3178C6.svg\" alt=\"TypeScript\"\u002F>\n\u003C\u002Fp>\n\n---\n\n## ✨ Why OpenWA?\n\n**OpenWA** is a free, open-source WhatsApp API Gateway designed for developers who need full control over their messaging infrastructure—without vendor lock-in or hidden paywalls.\n\nBuilt on a **pluggable architecture**, OpenWA lets you swap database engines (SQLite\u002FPostgreSQL), storage backends (Local\u002FS3), and cache layers (Memory\u002FRedis) without changing a single line of application code.\n\n|                               |                                                              |\n| ----------------------------- | ------------------------------------------------------------ |\n| 🔓 **100% Open Source**       | No licensing fees, no feature locks, full source code access |\n| 🏗️ **Pluggable Architecture** | Swap adapters for database, storage, and cache via config    |\n| 🖥️ **Full Dashboard**         | Modern React UI for session, webhook, and API key management |\n| 🔹 **Multi-Session Ready**    | Run multiple WhatsApp sessions concurrently on one instance  |\n| 🐳 **Docker Native**          | Production-ready with zero configuration                     |\n| 🔗 **n8n Integration**        | Community nodes for workflow automation                      |\n\n---\n\n## 🎯 Features\n\n### Core Features\n\n| Feature       | Status | Description                          |\n| ------------- | ------ | ------------------------------------ |\n| REST API      | ✅     | Full WhatsApp API via HTTP endpoints |\n| Multi-Session | ✅     | Manage multiple WhatsApp accounts    |\n| Webhooks      | ✅     | Real-time events with HMAC signature |\n| Web Dashboard | ✅     | Visual management interface          |\n| API Key Auth  | ✅     | Secure API authentication            |\n| Swagger Docs  | ✅     | Interactive API documentation        |\n\n### Messaging\n\n| Feature           | Status | Description                      |\n| ----------------- | ------ | -------------------------------- |\n| Text Messages     | ✅     | Send\u002Freceive text messages       |\n| Media Messages    | ✅     | Images, videos, documents, audio |\n| Message Reactions | ✅     | React to messages with emoji     |\n| Bulk Messaging    | ✅     | Send to multiple recipients      |\n| Message Status    | ✅     | Track delivery and read receipts |\n\n### Advanced\n\n| Feature             | Status | Description                        |\n| ------------------- | ------ | ---------------------------------- |\n| Groups API          | ✅     | Create, manage, and message groups |\n| Channels\u002FNewsletter | ✅     | WhatsApp Channels support          |\n| Labels Management   | ✅     | Organize chats with labels         |\n| Proxy Support       | ✅     | Per-session proxy configuration    |\n| Rate Limiting       | ✅     | Configurable request limits        |\n| CIDR Whitelisting   | ✅     | IP-based access control            |\n| Audit Logging       | ✅     | Track all API operations           |\n\n### Infrastructure\n\n| Feature          | Status | Description                    |\n| ---------------- | ------ | ------------------------------ |\n| SQLite           | ✅     | Zero-config embedded database  |\n| PostgreSQL       | ✅     | Production-grade database      |\n| Redis Cache      | ✅     | Optional performance caching   |\n| S3\u002FMinIO Storage | ✅     | Scalable media storage         |\n| Docker           | ✅     | One-command deployment         |\n| Health Checks    | ✅     | Kubernetes-ready probes        |\n| Data Migration   | ✅     | Export\u002Fimport between backends |\n\n---\n\n## 🚀 Quick Start\n\n### Option A: Docker (Recommended)\n\n```bash\n# Clone and start\ngit clone https:\u002F\u002Fgithub.com\u002Frmyndharis\u002FOpenWA.git\ncd OpenWA\ndocker compose -f docker-compose.dev.yml up -d\n\n# Access\n# Dashboard: http:\u002F\u002Flocalhost:2886\n# API: http:\u002F\u002Flocalhost:2785\u002Fapi\n# Swagger: http:\u002F\u002Flocalhost:2785\u002Fapi\u002Fdocs\n```\n\n### Option B: Local Development\n\n```bash\n# Clone repository\ngit clone https:\u002F\u002Fgithub.com\u002Frmyndharis\u002FOpenWA.git\ncd OpenWA\n\n# Install dependencies (includes dashboard)\nnpm install\n\n# Start API + Dashboard (config is auto-generated on first run)\nnpm run dev\n\n# Access\n# Dashboard: http:\u002F\u002Flocalhost:2886\n# API: http:\u002F\u002Flocalhost:2785\u002Fapi\n# Swagger: http:\u002F\u002Flocalhost:2785\u002Fapi\u002Fdocs\n```\n\n---\n\n## 🏭 Production Deployment\n\nFor production, use the main `docker-compose.yml` with optional services:\n\n```bash\n# Basic production (SQLite, local storage)\ndocker compose up -d\n\n# With PostgreSQL database\ndocker compose --profile postgres up -d\n\n# Full stack (PostgreSQL, Redis, Dashboard, Traefik)\ndocker compose --profile full up -d\n```\n\n| Profile          | Services              |\n| ---------------- | --------------------- |\n| `postgres`       | PostgreSQL database   |\n| `redis`          | Redis cache           |\n| `minio`          | S3-compatible storage |\n| `with-dashboard` | Web dashboard         |\n| `with-proxy`     | Traefik reverse proxy |\n| `full`           | All services above    |\n\n> **Development vs Production**\n>\n> - Development (`docker-compose.dev.yml`): SQLite, local storage, both API & Dashboard included\n> - Production (`docker-compose.yml`): Configurable database, profiles for optional services\n\n## 🔌 Ports\n\n| Service   | Port            | Description              |\n| --------- | --------------- | ------------------------ |\n| API       | `2785`          | REST API endpoints       |\n| Dashboard | `2886`          | Web management interface |\n| Swagger   | `2785\u002Fapi\u002Fdocs` | Interactive API docs     |\n\n---\n\n## 📡 API Examples\n\n### Create a Session\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:2785\u002Fapi\u002Fsessions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-API-Key: YOUR_API_KEY\" \\\n  -d '{\"name\": \"my-bot\"}'\n```\n\n### Start Session & Get QR Code\n\n```bash\n# Start the session\ncurl -X POST http:\u002F\u002Flocalhost:2785\u002Fapi\u002Fsessions\u002F{sessionId}\u002Fstart \\\n  -H \"X-API-Key: YOUR_API_KEY\"\n\n# Get QR code (scan with WhatsApp)\ncurl http:\u002F\u002Flocalhost:2785\u002Fapi\u002Fsessions\u002F{sessionId}\u002Fqr \\\n  -H \"X-API-Key: YOUR_API_KEY\"\n```\n\n### Send a Message\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:2785\u002Fapi\u002Fsessions\u002F{sessionId}\u002Fmessages\u002Fsend-text \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-API-Key: YOUR_API_KEY\" \\\n  -d '{\n    \"chatId\": \"628123456789@c.us\",\n    \"text\": \"Hello from OpenWA!\"\n  }'\n```\n\n### Setup Webhook\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:2785\u002Fapi\u002Fsessions\u002F{sessionId}\u002Fwebhooks \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-API-Key: YOUR_API_KEY\" \\\n  -d '{\n    \"url\": \"https:\u002F\u002Fyour-server.com\u002Fwebhook\",\n    \"events\": [\"message.received\", \"session.status\"],\n    \"secret\": \"your-hmac-secret\"\n  }'\n```\n\n---\n\n## 🛠 Tech Stack\n\n| Layer         | Technology              |\n| ------------- | ----------------------- |\n| **Runtime**   | Node.js 22 LTS          |\n| **Framework** | NestJS 11.x             |\n| **Language**  | TypeScript 5.x          |\n| **WA Engine** | whatsapp-web.js         |\n| **Database**  | SQLite \u002F PostgreSQL     |\n| **Cache**     | Redis (optional)        |\n| **Storage**   | Local \u002F S3 \u002F MinIO      |\n| **ORM**       | TypeORM                 |\n| **Container** | Docker + Docker Compose |\n\n---\n\n## 📁 Project Structure\n\n```\nopenwa\u002F\n├── src\u002F\n│   ├── main.ts                 # Application entry point\n│   ├── app.module.ts           # Root module\n│   ├── config\u002F                 # Configuration\n│   ├── common\u002F                 # Shared utilities\n│   │   ├── cache\u002F              # Redis caching\n│   │   └── storage\u002F            # File storage (Local\u002FS3)\n│   ├── core\u002F                   # Core systems\n│   │   ├── hooks\u002F              # Plugin hooks\n│   │   └── plugins\u002F            # Plugin system\n│   ├── engine\u002F                 # WhatsApp engine abstraction\n│   └── modules\u002F\n│       ├── session\u002F            # Session management\n│       ├── message\u002F            # Message handling\n│       ├── webhook\u002F            # Webhook management\n│       ├── group\u002F              # Groups API\n│       ├── contact\u002F            # Contacts API\n│       ├── auth\u002F               # API key authentication\n│       ├── infra\u002F              # Infrastructure management\n│       └── health\u002F             # Health checks\n├── dashboard\u002F                  # React web dashboard\n├── docs\u002F                      # Documentation\n├── docker-compose.yml\n├── Dockerfile\n└── package.json\n```\n\n---\n\n## 📚 Documentation\n\nComprehensive documentation is available in the `docs\u002F` folder:\n\n| Document                                                | Description                  |\n| ------------------------------------------------------- | ---------------------------- |\n| [Project Overview](.\u002Fdocs\u002F01-project-overview.md)       | Introduction and goals       |\n| [Requirements](.\u002Fdocs\u002F02-requirements-specification.md) | Feature specifications       |\n| [Architecture](.\u002Fdocs\u002F03-system-architecture.md)        | System design                |\n| [Security](.\u002Fdocs\u002F04-security-design.md)                | Security implementation      |\n| [Database](.\u002Fdocs\u002F05-database-design.md)                | Data models and migrations   |\n| [API Spec](.\u002Fdocs\u002F06-api-specification.md)              | Complete API reference       |\n| [Development](.\u002Fdocs\u002F08-development-guidelines.md)      | Coding standards             |\n| [Migration Guide](.\u002Fdocs\u002F14-migration-guide.md)         | Database & storage migration |\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions! Here's how to get started:\n\n1. **Fork** the repository\n2. **Create** your feature branch (`git checkout -b feature\u002Famazing-feature`)\n3. **Commit** your changes (`git commit -m 'Add amazing feature'`)\n4. **Push** to the branch (`git push origin feature\u002Famazing-feature`)\n5. **Open** a Pull Request\n\nPlease read our [Development Guidelines](.\u002Fdocs\u002F08-development-guidelines.md) for coding standards and best practices.\n\n---\n\n## 📄 License\n\nThis project is licensed under the **MIT License** – free for personal and commercial use.\n\nSee [LICENSE](.\u002FLICENSE) for details.\n\n---\n\n\u003Cdiv align=\"center\">\n\n**OpenWA** – Free, Open Source WhatsApp API Gateway\n\n[📖 Documentation](.\u002Fdocs\u002FREADME.md) · [🔌 API Docs](http:\u002F\u002Flocalhost:2785\u002Fapi\u002Fdocs) · [🐛 Report Bug](https:\u002F\u002Fgithub.com\u002Frmyndharis\u002FOpenWA\u002Fissues) · [💡 Request Feature](https:\u002F\u002Fgithub.com\u002Frmyndharis\u002FOpenWA\u002Fissues)\n\n\u003Cbr\u002F>\n\n\u003Csub>Made with ❤️ by \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frmyndharis\">Yudhi Armyndharis\u003C\u002Fa> and the OpenWA Community\u003C\u002Fsub>\n\n\u003C\u002Fdiv>\n","OpenWA 是一个免费、开源的 WhatsApp API 网关，旨在为开发者提供对其消息基础设施的完全控制。该项目采用 TypeScript 编写，并基于可插拔架构设计，允许用户通过配置轻松更换数据库引擎（如 SQLite 或 PostgreSQL）、存储后端（本地或 S3）和缓存层（内存或 Redis），而无需修改任何应用代码。它支持多会话管理，使得在一个实例上同时运行多个 WhatsApp 会话成为可能，特别适合需要构建自托管聊天服务的企业或个人使用场景。此外，OpenWA 还提供了现代化的 React UI 仪表板用于会话、Webhook 和 API 密钥管理，并且天然支持 Docker 部署，确保了生产环境下的便捷性和稳定性。",2,"2026-06-11 03:55:36","top_topic"]