๐ Production-ready WebSocket RPC for Django - Auto-generated clients, 100% type-safe, 5-minute setup
Project description
django-ipc: Production-Ready WebSocket RPC for Django
๐ WebSocket RPC for Django - From Zero to Production in 5 Minutes
Auto-generated clients โข 100% type-safe โข Production-ready โข Zero configuration
Part of the django-cfg ecosystem
๐ Full Documentation โข ๐ฏ Live Demo โข โก Quick Start
๐ฏ What is django-ipc?
django-ipc is a production-ready WebSocket RPC framework that brings real-time communication to Django in 5 minutes. Auto-generate TypeScript & Python clients, deploy with Redis & WebSocket, and scale to 10,000+ connections.
Why django-ipc?
Traditional Django real-time wastes 28,800 requests/day with polling. django-ipc delivers instant updates with 1 persistent connection.
- โ 5-minute setup - No complex configuration like Django Channels
- โ Auto-generated clients - TypeScript & Python generated automatically
- โ 100% type-safe - Full Pydantic v2 validation (Python โ TypeScript)
- โ Zero boilerplate - 19 files generated, 0 lines of manual code
- โ Production-ready - Horizontal scaling, load balancing, monitoring
- โ Django-CFG integration - Works standalone or with django-cfg ecosystem
๐ Why django-ipc? See comparison โ
๐ Quick Start
Installation
pip install django-ipc
1. Start WebSocket Server
# rpc_server.py
import asyncio
from django_ipc.server import WebSocketServer
from django_ipc.server.config import ServerConfig, WSServerConfig, AuthMode
config = ServerConfig(
server=WSServerConfig(
host="0.0.0.0",
port=8765,
redis_url="redis://localhost:6379/2",
auth_mode=AuthMode.NONE, # Development only!
)
)
async def main():
server = WebSocketServer(config)
await server.start()
if __name__ == "__main__":
print("๐ Starting WebSocket RPC Server...")
print("๐ก WebSocket: ws://localhost:8765")
asyncio.run(main())
2. Generate Clients (One Command!)
python -m django_ipc.codegen.cli generate-clients \
--output ./clients \
--redis-url redis://localhost:6379/2
Result: 19 production-ready files! โจ
clients/
โโโ typescript/ # 10 files - TypeScript client + configs
โ โโโ client.ts # Type-safe RPC client
โ โโโ types.ts # TypeScript interfaces
โ โโโ tsconfig.json # โ
Auto-generated
โ โโโ package.json # โ
Auto-generated (8 npm scripts!)
โ โโโ .eslintrc.json # โ
Auto-generated
โ โโโ README.md # โ
Auto-generated docs
โโโ python/ # 9 files - Python client + configs
โโโ client.py # Type-safe RPC client
โโโ models.py # Pydantic models
โโโ pyproject.toml # โ
Auto-generated
โโโ README.md # โ
Auto-generated docs
3. Send Real-Time Notifications from Django
# Django view
from django_ipc.client import RPCClient
def notify_user(request):
rpc = RPCClient(redis_url="redis://localhost:6379/2")
# Send notification - arrives INSTANTLY on frontend! โก
rpc.send_notification(
user_id=request.user.id,
message="Your order has been shipped!",
data={"order_id": 123, "tracking": "ABC123"}
)
return JsonResponse({"status": "sent"})
4. Receive Notifications on Frontend
// TypeScript client - auto-generated
import { RPCClient } from './clients/typescript';
const client = new RPCClient('ws://localhost:8765');
await client.connect();
// Listen for real-time notifications
client.on('notification', (notification) => {
console.log('๐ฌ Notification:', notification.message);
showToast(notification); // Show to user instantly!
});
๐ Full 5-minute tutorial โ
โญ Key Features
๐ค Auto-Generated Clients (Zero Manual Code)
One command generates production-ready TypeScript + Python clients:
- โ TypeScript client - 100% type-safe interfaces
- โ Python client - Full Pydantic validation
- โ Complete tooling - ESLint, Prettier, mypy, all configured
- โ Ready to deploy - package.json, pyproject.toml, README.md included
๐ Environment-Aware Configuration
Auto-detect development/staging/production environments:
# Python client
client = RPCClient.from_env() # Auto-detects DJANGO_ENV
# TypeScript client
const client = RPCClient.fromEnv(); # Auto-detects NODE_ENV
Supported environments: development, staging, production, testing
๐ก Production-Ready WebSocket Server
Built-in features for production scale:
- โ 10,000+ concurrent connections per server
- โ Horizontal scaling - Multiple WebSocket servers
- โ Load balancing - Nginx WebSocket configuration
- โ JWT authentication - Secure WebSocket connections
- โ Health checks - HTTP health endpoint
- โ Monitoring - Built-in metrics
๐ Production deployment guide โ
๐ Redis IPC Bridge
Async bridge for Django โ WebSocket communication:
- โ Type-safe messages - Pydantic v2 validation
- โ Request/response - RPC-style communication
- โ Pub/sub patterns - Notifications, broadcasts, room messaging
- โ Stream processing - Redis Streams for reliable delivery
๐ Complete Documentation
๐ Getting Started (15 minutes)
Start here if you're new to django-ipc:
- Quick Start Guide โก (5 min) - Get it working
- Why django-ipc? ๐ก (3 min) - Understand the value
- Real-Time Notifications ๐ฌ (15 min) - 4 notification patterns
๐ Integration & Production (1 hour)
Integrate into your Django project:
- Django Integration Guide ๐ (30 min) - Step-by-step setup
- Production Deployment ๐ข (45 min) - Docker + scaling
- Architecture Overview ๐๏ธ (15 min) - System design
๐ก Real-World Examples
Production-ready use cases with code:
- Use Cases & Examples ๐ (20 min) - 5 complete examples
- E-commerce order tracking (99% API reduction)
- Live chat application (<50ms latency)
- Dashboard metrics (real-time updates)
- Multiplayer game lobby
- Stock price alerts
๐ Understanding the System
Deep dives and technical details:
- How It Works ๐ (10 min) - Visual message flow
- Business Value & ROI ๐ฐ (10 min) - $68K savings calculator
๐ค Django-CFG Integration
django-ipc is part of the django-cfg ecosystem:
Standalone Usage
from django_ipc.client import RPCClient
rpc = RPCClient(redis_url="redis://localhost:6379/2")
rpc.send_notification(user_id="123", message="Hello!")
With django-cfg (Type-Safe Django Configuration)
from django_cfg import DjangoConfig
from django_cfg.modules.django_ipc import get_rpc_client
class MyConfig(DjangoConfig):
project_name: str = "My SaaS App"
# django-ipc auto-configured
# Use in Django views
rpc = get_rpc_client()
rpc.send_notification(user_id="123", message="Hello!")
๐ Learn more about django-cfg โ
๐๏ธ Architecture
โโโโโโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ Django โ โ Redis โ โ WebSocket Server โ
โ App โ โ IPC โ โ (django-ipc) โ
โโโโโโโโฌโโโโโโโ โโโโโโฌโโโโโ โโโโโโโโโโฌโโโโโโโโโโ
โ โ โ
โโโRPC Requestโโโโโโโโโถ โ
โ (XADD stream) โโโXREADGROUPโโโโโโโโโโโถ
โ โ โ
โ โ [RPC Bridge]
โ โ [Handlers]
โ โ โ
โ โ โโโโโถ Users (WebSocket)
โ โโโโResponse (LPUSH)โโโโโ
โโโRPC Responseโโโโโโโโ โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Auto-Generated Clients (TypeScript/Python) โ
โ โ โ
โ WebSocket โโโโโโโดโโโโโโโโโโ WebSocket Server โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ผ Production-Ready
259 tests, 100% pass rate โ
pytest tests/ -v
# 259 passed, 65 warnings in 0.75s
Features for production:
- โ JWT Authentication - Secure WebSocket connections
- โ Health Checks - HTTP endpoint for monitoring
- โ Horizontal Scaling - Multiple servers with load balancing
- โ Error Handling - Graceful degradation
- โ Type Safety - 100% Pydantic validation
- โ Logging - Rich console output with loguru
๐ Requirements
- Python 3.10+
- pydantic >= 2.11.0
- redis >= 6.4.0
- websockets >= 15.0
- jinja2 >= 3.1.0 (for code generation)
- rich >= 14.1.0 (for pretty output)
Optional: Django 5.0+ (for django-cfg integration)
๐ Success Metrics
After using django-ipc, you should be able to:
โ Beginner Level (After Quick Start - 5 min):
- Start django-ipc WebSocket server
- Generate TypeScript & Python clients
- Send real-time notifications from Django
- Receive instant updates on frontend
โ Intermediate Level (After Integration - 30 min):
- Integrate django-ipc into Django project
- Use Django signals for automatic notifications
- Implement 4 notification patterns (user, room, broadcast, multi-user)
- Deploy with Docker
โ Advanced Level (After Production - 1 hour):
- Deploy multiple django-ipc servers with load balancing
- Configure JWT authentication
- Set up monitoring and health checks
- Scale to 10,000+ concurrent users
๐ Comparison
django-ipc vs Traditional Real-Time Django:
| Feature | Polling (Traditional) | Django Channels | django-ipc |
|---|---|---|---|
| Setup Time | ๐ก 2 days | โ ๏ธ 3 weeks | โ 5 minutes |
| Client Code | โ ๏ธ Manual | โ ๏ธ Manual | โ Auto-generated |
| Type Safety | โ None | โ ๏ธ Partial | โ 100% Pydantic v2 |
| Requests/Day | โ 28,800 | โ 1 connection | โ 1 connection |
| Latency | โ ๏ธ 5-60s | โ <100ms | โ <50ms |
| Django Integration | โ Easy | ๐ก Complex | โ 3 lines of code |
| Scaling | โ Server load | ๐ก Complex | โ Horizontal |
| Production Ready | โ ๏ธ Manual | ๐ก Requires work | โ Out of the box |
๐ Full comparison guide โ
๐ค Community & Support
Resources
- ๐ djangocfg.com - Official website & docs
- ๐ WebSocket RPC Docs - Complete documentation
- ๐ GitHub - Source code & issues
- ๐ฌ Discussions - Community support
Links
- ๐ฏ Live Demo - See django-ipc in action
- ๐ฆ PyPI - Package repository
- ๐ django-cfg - Parent framework
๐ License
MIT License - Free for commercial use
Built with โค๏ธ for the django-cfg ecosystem
Django WebSocket RPC โข Real-Time Django โข Type-Safe IPC โข Auto-Generated Clients
django-ipc is the production-ready WebSocket RPC framework for Django. Replace polling with real-time WebSocket connections, auto-generate type-safe clients, and scale to 10,000+ users. Perfect for Django real-time notifications, live chat, dashboard updates, and any Django WebSocket use case.
Keywords: django websocket rpc, django real-time, websocket server python, django ipc, type-safe websocket, django notifications, real-time django framework, websocket auto-generate client, django redis websocket, pydantic websocket
Get Started: 5-Min Quick Start โข Full Documentation โข Live Demo
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_ipc-1.0.2.tar.gz.
File metadata
- Download URL: django_ipc-1.0.2.tar.gz
- Upload date:
- Size: 354.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b0e7446818194d7b5fabc3cb574bcc5564f168016a7aa0dcdce34e4ffd425cf
|
|
| MD5 |
4392ae204e6130bbdfdbf4f25fe24ca1
|
|
| BLAKE2b-256 |
0434b663d0fac77f16058827c36f7e66c0123be3a257f564da87092997e028b9
|
File details
Details for the file django_ipc-1.0.2-py3-none-any.whl.
File metadata
- Download URL: django_ipc-1.0.2-py3-none-any.whl
- Upload date:
- Size: 97.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc7e9c77471a3b5cbc6fe79871b5d72e2cb8108354a175e9b3806cb2c0a13578
|
|
| MD5 |
7ee41ebfed93a6606b425bb787d63510
|
|
| BLAKE2b-256 |
3754d4c0fd3a03ae3df16dd9ed2be2b684bf5340b483f40f4b3567c82a5baf31
|