Metadata-Version: 2.4
Name: django-cfg
Version: 1.5.211
Summary: Modern Django framework with type-safe Pydantic v2 configuration, Next.js admin integration, real-time WebSockets, and 8 enterprise apps. Replace settings.py with validated models,  90% less code. Production-ready with AI agents, auto-generated TypeScript clients,  and zero-config features.
Project-URL: Homepage, https://djangocfg.com
Project-URL: Documentation, https://djangocfg.com
Project-URL: Repository, https://github.com/markolofsen/django-cfg
Project-URL: Issues, https://github.com/markolofsen/django-cfg/issues
Project-URL: Changelog, https://github.com/markolofsen/django-cfg/blob/main/CHANGELOG.md
Author-email: Django-CFG Team <info@djangocfg.com>
Maintainer-email: Django-CFG Team <info@djangocfg.com>
License: MIT
License-File: LICENSE
Keywords: ai-agents,centrifugo,configuration,django,django-environ,django-settings,enterprise-django,ide-autocomplete,modern-django,nextjs-admin,pydantic,pydantic-settings,react-admin,real-time,settings,startup-validation,type-safe-config,type-safety,typescript-generation,websocket
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Django
Classifier: Framework :: Django :: 5.2
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Systems Administration
Classifier: Typing :: Typed
Requires-Python: <3.14,>=3.12
Requires-Dist: adrf<0.2.0,>=0.1.11
Requires-Dist: beautifulsoup4<5.0,>=4.13.0
Requires-Dist: cachetools<7.0,>=5.3.0
Requires-Dist: click<9.0,>=8.2.0
Requires-Dist: cloudflare<5.0,>=4.3.0
Requires-Dist: colorlog<7.0,>=6.9.0
Requires-Dist: coolname<3.0,>=2.2.0
Requires-Dist: cryptography>=44.0.0
Requires-Dist: dj-database-url<4.0,>=3.0.0
Requires-Dist: django-admin-rangefilter<1.0,>=0.13.0
Requires-Dist: django-axes[ipware]<9.0.0,>=8.0.0
Requires-Dist: django-constance<5.0,>=4.3.0
Requires-Dist: django-cors-headers<5.0,>=4.7.0
Requires-Dist: django-extensions<5.0,>=4.1.0
Requires-Dist: django-filter<26.0,>=25.0
Requires-Dist: django-import-export<5.0,>=4.3.0
Requires-Dist: django-json-widget<3.0,>=2.0.0
Requires-Dist: django-ratelimit<5.0.0,>=4.1.0
Requires-Dist: django-redis<7.0,>=6.0.0
Requires-Dist: django-tailwind[reload]<5.0.0,>=4.2.0
Requires-Dist: django-unfold>=0.73.1
Requires-Dist: djangorestframework-simplejwt<6.0,>=5.5.0
Requires-Dist: djangorestframework-simplejwt[token-blacklist]<6.0,>=5.5.0
Requires-Dist: djangorestframework<4.0,>=3.16.0
Requires-Dist: drf-nested-routers<1.0,>=0.94.0
Requires-Dist: drf-spectacular-sidecar<2026.0,>=2025.8.0
Requires-Dist: drf-spectacular<1.0,>=0.28.0
Requires-Dist: geopy<3.0,>=2.4.0
Requires-Dist: hiredis<4.0,>=2.0.0
Requires-Dist: httpx<1.0,>=0.28.1
Requires-Dist: jinja2<4.0.0,>=3.1.6
Requires-Dist: loguru<1.0,>=0.7.0
Requires-Dist: lxml<7.0,>=6.0.0
Requires-Dist: mistune<4.0,>=3.1.4
Requires-Dist: mypy<2.0.0,>=1.18.2
Requires-Dist: ngrok>=1.5.1; python_version >= '3.12'
Requires-Dist: openai<3.0,>=1.107.0
Requires-Dist: pgvector<1.0,>=0.4.0
Requires-Dist: psutil>=7.0.0
Requires-Dist: psycopg[binary,pool]<4.0,>=3.2.0
Requires-Dist: pydantic-settings<3.0.0,>=2.11.0
Requires-Dist: pydantic<3.0,>=2.11.0
Requires-Dist: pydantic[email]<3.0,>=2.11.0
Requires-Dist: pygments<3.0,>=2.19.0
Requires-Dist: pyotp<3.0,>=2.9.0
Requires-Dist: pytelegrambotapi<5.0,>=4.28.0
Requires-Dist: python-json-logger<4.0,>=3.3.0
Requires-Dist: pywebpush<3.0,>=2.0.0
Requires-Dist: pyyaml<7.0,>=6.0
Requires-Dist: qrcode<9.0,>=8.2
Requires-Dist: questionary<3.0,>=2.1.0
Requires-Dist: redis<7.0,>=6.4.0
Requires-Dist: requests<3.0,>=2.32.0
Requires-Dist: rich<15.0,>=14.0.0
Requires-Dist: setuptools>=75.0.0; python_version >= '3.13'
Requires-Dist: tenacity<10.0.0,>=9.1.2
Requires-Dist: tiktoken<1.0,>=0.11.0
Requires-Dist: toml<0.11.0,>=0.10.2
Requires-Dist: toon-python<1.0,>=0.1.2
Requires-Dist: tzlocal<6.0,>=5.3.1
Requires-Dist: whitenoise<7.0,>=6.8.0
Provides-Extra: ai
Requires-Dist: pydantic-ai<2.0,>=1.34.0; extra == 'ai'
Provides-Extra: centrifugo
Requires-Dist: cent<6.0,>=5.0.0; extra == 'centrifugo'
Requires-Dist: websockets<15.0,>=13.0; extra == 'centrifugo'
Provides-Extra: dev
Requires-Dist: betterproto2-compiler<1.0,>=0.9.0; extra == 'dev'
Requires-Dist: black>=23.0; extra == 'dev'
Requires-Dist: build>=1.0; extra == 'dev'
Requires-Dist: django<6.0,>=5.2; extra == 'dev'
Requires-Dist: factory-boy>=3.0; extra == 'dev'
Requires-Dist: fakeredis>=2.0; extra == 'dev'
Requires-Dist: flake8>=5.0; extra == 'dev'
Requires-Dist: isort>=5.0; extra == 'dev'
Requires-Dist: mkdocs-material>=9.0; extra == 'dev'
Requires-Dist: mkdocs>=1.5; extra == 'dev'
Requires-Dist: mkdocstrings[python]>=0.24; extra == 'dev'
Requires-Dist: mypy>=1.0; extra == 'dev'
Requires-Dist: pre-commit>=3.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
Requires-Dist: pytest-django>=4.5; extra == 'dev'
Requires-Dist: pytest-mock>=3.0; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: questionary>=2.0; extra == 'dev'
Requires-Dist: redis>=5.0; extra == 'dev'
Requires-Dist: rich>=13.0; extra == 'dev'
Requires-Dist: tomlkit>=0.11; extra == 'dev'
Requires-Dist: twine>=4.0; extra == 'dev'
Provides-Extra: django52
Requires-Dist: django<6.0,>=5.2; extra == 'django52'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.0; extra == 'docs'
Requires-Dist: mkdocs>=1.5; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.24; extra == 'docs'
Requires-Dist: pymdown-extensions>=10.0; extra == 'docs'
Provides-Extra: full
Requires-Dist: aiobreaker<2.0,>=1.2.0; extra == 'full'
Requires-Dist: betterproto2[all]<1.0,>=0.9.0; extra == 'full'
Requires-Dist: black>=23.0; extra == 'full'
Requires-Dist: build>=1.0; extra == 'full'
Requires-Dist: cent<6.0,>=5.0.0; extra == 'full'
Requires-Dist: django-rq>=3.0; extra == 'full'
Requires-Dist: django<6.0,>=5.2; extra == 'full'
Requires-Dist: factory-boy>=3.0; extra == 'full'
Requires-Dist: flake8>=5.0; extra == 'full'
Requires-Dist: grpcio-health-checking<2.0,>=1.50.0; extra == 'full'
Requires-Dist: grpcio-reflection<2.0,>=1.50.0; extra == 'full'
Requires-Dist: grpcio-tools<2.0,>=1.50.0; extra == 'full'
Requires-Dist: grpcio<2.0,>=1.50.0; extra == 'full'
Requires-Dist: grpclib<1.0,>=0.4.8; extra == 'full'
Requires-Dist: hiredis>=2.0; extra == 'full'
Requires-Dist: isort>=5.0; extra == 'full'
Requires-Dist: mkdocs-material>=9.0; extra == 'full'
Requires-Dist: mkdocs>=1.5; extra == 'full'
Requires-Dist: mkdocstrings[python]>=0.24; extra == 'full'
Requires-Dist: mypy>=1.0; extra == 'full'
Requires-Dist: pre-commit>=3.0; extra == 'full'
Requires-Dist: protobuf<7.0,>=5.0; extra == 'full'
Requires-Dist: pydantic-ai<2.0,>=1.34.0; extra == 'full'
Requires-Dist: pymdown-extensions>=10.0; extra == 'full'
Requires-Dist: pytest-cov>=4.0; extra == 'full'
Requires-Dist: pytest-django>=4.5; extra == 'full'
Requires-Dist: pytest-mock>=3.0; extra == 'full'
Requires-Dist: pytest-xdist>=3.0; extra == 'full'
Requires-Dist: pytest>=7.0; extra == 'full'
Requires-Dist: questionary>=2.0; extra == 'full'
Requires-Dist: redis>=5.0; extra == 'full'
Requires-Dist: rich>=13.0; extra == 'full'
Requires-Dist: rq-scheduler>=0.13; extra == 'full'
Requires-Dist: rq>=1.0; extra == 'full'
Requires-Dist: stamina<26.0,>=25.2.0; extra == 'full'
Requires-Dist: structlog<26.0,>=24.0.0; extra == 'full'
Requires-Dist: tomlkit>=0.11; extra == 'full'
Requires-Dist: twine>=4.0; extra == 'full'
Requires-Dist: websockets<15.0,>=13.0; extra == 'full'
Provides-Extra: geo
Provides-Extra: grpc
Requires-Dist: aiobreaker<2.0,>=1.2.0; extra == 'grpc'
Requires-Dist: betterproto2[all]<1.0,>=0.9.0; extra == 'grpc'
Requires-Dist: grpcio-health-checking<2.0,>=1.50.0; extra == 'grpc'
Requires-Dist: grpcio-reflection<2.0,>=1.50.0; extra == 'grpc'
Requires-Dist: grpcio-tools<2.0,>=1.50.0; extra == 'grpc'
Requires-Dist: grpcio<2.0,>=1.50.0; extra == 'grpc'
Requires-Dist: grpclib<1.0,>=0.4.8; extra == 'grpc'
Requires-Dist: protobuf<7.0,>=5.0; extra == 'grpc'
Requires-Dist: stamina<26.0,>=25.2.0; extra == 'grpc'
Requires-Dist: structlog<26.0,>=24.0.0; extra == 'grpc'
Provides-Extra: local
Provides-Extra: rq
Requires-Dist: django-rq>=3.0; extra == 'rq'
Requires-Dist: hiredis>=2.0; extra == 'rq'
Requires-Dist: redis>=5.0; extra == 'rq'
Requires-Dist: rq-scheduler>=0.13; extra == 'rq'
Requires-Dist: rq>=1.0; extra == 'rq'
Provides-Extra: tasks
Requires-Dist: redis>=5.0; extra == 'tasks'
Provides-Extra: test
Requires-Dist: django<6.0,>=5.2; extra == 'test'
Requires-Dist: factory-boy>=3.0; extra == 'test'
Requires-Dist: fakeredis>=2.0; extra == 'test'
Requires-Dist: pytest-cov>=4.0; extra == 'test'
Requires-Dist: pytest-django>=4.5; extra == 'test'
Requires-Dist: pytest-mock>=3.0; extra == 'test'
Requires-Dist: pytest-xdist>=3.0; extra == 'test'
Requires-Dist: pytest>=7.0; extra == 'test'
Description-Content-Type: text/markdown

<div align="center">

<img src="https://raw.githubusercontent.com/markolofsen/django-cfg/refs/heads/main/static/logo.png" alt="Django-CFG Logo" width="200" />

# Django-CFG

[![PyPI](https://img.shields.io/pypi/v/django-cfg.svg?style=flat-square&logo=pypi)](https://pypi.org/project/django-cfg/)
[![Python](https://img.shields.io/badge/python-3.12+-blue.svg?style=flat-square&logo=python)](https://www.python.org/)
[![Django](https://img.shields.io/badge/django-5.2+-green.svg?style=flat-square&logo=django)](https://www.djangoproject.com/)
[![License](https://img.shields.io/badge/license-MIT-yellow.svg?style=flat-square)](LICENSE)
[![Downloads](https://img.shields.io/pypi/dm/django-cfg.svg?style=flat-square)](https://pypi.org/project/django-cfg/)

**The Modern Django Framework for Enterprise Applications**

Type-safe configuration • Next.js Admin • Real-time WebSockets • gRPC Streaming • AI-Native Docs • 8 Production Apps

[Get Started](https://djangocfg.com/docs/getting-started/intro) • [Live Demo](https://djangocfg.com/demo) • [Documentation](https://djangocfg.com/docs) • [MCP Server](https://djangocfg.com/mcp)

</div>

---

## What is Django-CFG?

**Django-CFG** is a next-generation Django framework that replaces `settings.py` with **type-safe Pydantic v2 models**. Catch configuration errors at startup, get full IDE autocomplete, and ship production-ready features in **30 seconds** instead of weeks.

### Why Django-CFG?

- ✅ **Type-safe config** - Pydantic v2 validation catches errors before deployment
- ✅ **90% less code** - Replace 200+ line settings.py with 30 lines
- ✅ **Built-in Next.js admin** - Modern React admin interface out of the box
- ✅ **Real-time WebSockets** - Centrifugo integration included
- ✅ **gRPC streaming** - Bidirectional streaming with WebSocket bridge
- ✅ **AI-native docs** - First Django framework with MCP server for AI assistants
- ✅ **8 enterprise apps** - Save 18+ months of development

---

## Quick Start

### One-Line Install

```bash
# macOS / Linux
curl -L https://djangocfg.com/install.sh | sh

# Windows (PowerShell)
powershell -c "iwr https://djangocfg.com/install.ps1 | iex"
```

### Manual Install

```bash
pip install 'django-cfg[full]'
django-cfg create-project my_app
cd my_app/projects/django
poetry run python manage.py runserver
```

**What you get instantly:**
- 🎨 Django Admin → `http://127.0.0.1:8000/admin/`
- ⚛️ Next.js Dashboard → Modern React interface
- 📡 Real-time WebSockets → Live updates
- 🐳 Docker Ready → Production configs
- 🖥️ Electron App → Desktop template

[→ Full Installation Guide](https://djangocfg.com/docs/getting-started/installation)

---

## Configuration Example

**Before: settings.py**
```python
# 200+ lines of untyped configuration
DEBUG = os.getenv('DEBUG', 'False') == 'True'  # ❌ Bug waiting to happen
DATABASE_PORT = os.getenv('DB_PORT', '5432')   # ❌ Still a string!
```

**After: Django-CFG**
```python
from django_cfg import DjangoConfig, DatabaseConfig

class MyConfig(DjangoConfig):
    project_name: str = "My App"
    debug: bool = False  # ✅ Type-safe

    databases: dict[str, DatabaseConfig] = {
        "default": DatabaseConfig(
            name="${DB_NAME}",  # ✅ Validated at startup
            port=5432,          # ✅ Correct type
        )
    }
```

**Full IDE autocomplete** • **Startup validation** • **Zero runtime errors**

---

## Features

### 🔒 Type-Safe Configuration
Pydantic v2 models replace error-prone `settings.py` - catch bugs before deployment.

### ⚛️ Next.js Admin
Only Django framework with built-in Next.js integration - modern admin UI out of the box.

### 📡 Real-Time WebSockets
Production-ready Centrifugo integration - live updates, notifications, presence tracking.

### 🌐 gRPC Microservices
Bidirectional streaming with automatic WebSocket bridge - perfect for real-time architectures.

### 🤖 AI-Native Documentation
First Django framework with MCP server - AI assistants can access docs instantly.

### 📦 8 Enterprise Apps
User auth • Support tickets • Newsletter • CRM • AI agents • Knowledge base • Payments • Multi-site

**Time saved: 18+ months of development**

[→ See All Features](https://djangocfg.com/docs)

---

## What's Included

**Backend:**
- Django 5.2+ with type-safe config
- PostgreSQL, Redis, Centrifugo
- gRPC server with streaming
- 8 production-ready apps
- AI agent framework
- REST API with auto TypeScript generation

**Frontend:**
- Next.js 16 admin interface
- React 19 + TypeScript
- Tailwind CSS 4
- Real-time WebSocket client
- PWA support

**DevOps:**
- Docker Compose setup
- Traefik reverse proxy
- Production-ready configs
- Cloudflare integration

**AI Features:**
- MCP server for AI assistants
- Pydantic AI integration
- Vector DB (ChromaDB)
- RAG support

---

## Documentation

- **[Getting Started](https://djangocfg.com/docs/getting-started/intro)** - Quick setup guide
- **[Configuration](https://djangocfg.com/docs/getting-started/configuration)** - Type-safe config
- **[Next.js Admin](https://djangocfg.com/docs/features/integrations/nextjs-admin)** - Modern admin UI
- **[Real-Time](https://djangocfg.com/docs/features/integrations/centrifugo)** - WebSockets setup
- **[gRPC](https://djangocfg.com/docs/features/integrations/grpc)** - Microservices
- **[AI Agents](https://djangocfg.com/docs/ai-agents/introduction)** - Automation
- **[Built-in Apps](https://djangocfg.com/docs/features/built-in-apps/overview)** - 8 enterprise apps

---

## Community

- 🌐 **[djangocfg.com](https://djangocfg.com/)** - Official website
- 🎯 **[Live Demo](https://djangocfg.com/demo)** - See it in action
- 🐙 **[GitHub](https://github.com/markolofsen/django-cfg)** - Source code
- 💬 **[Discussions](https://github.com/markolofsen/django-cfg/discussions)** - Get help
- 📦 **[PyPI](https://pypi.org/project/django-cfg/)** - Package repository

---

## License

MIT License - Free for commercial use

---

<div align="center">

**Django-CFG** - Modern Django framework with type-safe configuration, AI-native docs, Next.js admin, gRPC streaming, real-time WebSockets, and 8 production-ready apps.

Made with ❤️ for the Django community

[Get Started](https://djangocfg.com/docs) • [Live Demo](https://djangocfg.com/demo) • [GitHub](https://github.com/markolofsen/django-cfg)

</div>
