django-cfg 1.2.12__py3-none-any.whl → 1.2.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- django_cfg/__init__.py +1 -1
- django_cfg/apps/urls.py +2 -2
- django_cfg-1.2.13.dist-info/METADATA +973 -0
- {django_cfg-1.2.12.dist-info → django_cfg-1.2.13.dist-info}/RECORD +7 -7
- django_cfg-1.2.12.dist-info/METADATA +0 -574
- {django_cfg-1.2.12.dist-info → django_cfg-1.2.13.dist-info}/WHEEL +0 -0
- {django_cfg-1.2.12.dist-info → django_cfg-1.2.13.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.2.12.dist-info → django_cfg-1.2.13.dist-info}/licenses/LICENSE +0 -0
@@ -1,10 +1,10 @@
|
|
1
1
|
django_cfg/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
django_cfg/__init__.py,sha256=
|
2
|
+
django_cfg/__init__.py,sha256=8MAPTQI-gX0VWLmlVC8g3gzKFKuiNOVNorWi8pgIPr0,1631
|
3
3
|
django_cfg/apps.py,sha256=k84brkeXJI7EgKZLEpTkM9YFZofKI4PzhFOn1cl9Msc,1656
|
4
4
|
django_cfg/config.py,sha256=0cuRJVEnf03WzvEqhwzLvn9Zi1805C5KG1yk27ekABA,1190
|
5
5
|
django_cfg/urls.py,sha256=bpRFjMonQuk4UCUMxx4ueBX3YDNB7HXKFwEghQ3KR3o,793
|
6
6
|
django_cfg/apps/__init__.py,sha256=JtDmEYt1OcleWM2ZaeX0LKDnRQzPOavfaXBWG4ECB5Q,26
|
7
|
-
django_cfg/apps/urls.py,sha256=
|
7
|
+
django_cfg/apps/urls.py,sha256=xdRTe1bMzF753cH5tw9peIwr21kciy13I368b_JyWk0,2118
|
8
8
|
django_cfg/apps/accounts/README.md,sha256=YkUYJ3iKMYTmm9ALK2PDnX75SDqZxgnkzNLCD5efxRs,8227
|
9
9
|
django_cfg/apps/accounts/__init__.py,sha256=osecEQhMJVP8ejhZzElNsAqA1fX-GPD3K5_yNwDk6IE,100
|
10
10
|
django_cfg/apps/accounts/apps.py,sha256=Xd4XNpY1tw3zOqk_M9L6MR6oFdfFMYrfmrmbj0uelUs,492
|
@@ -462,8 +462,8 @@ django_cfg/utils/path_resolution.py,sha256=C9As6p4Q9l3VeoVkFDRPQWGrzAWf8O8UxLVka
|
|
462
462
|
django_cfg/utils/smart_defaults.py,sha256=b6A1z7VO1NJGq0oUQXN5P97c3k_Ssgw6qUi0mK-4TlM,19786
|
463
463
|
django_cfg/utils/toolkit.py,sha256=Td8_iXNaftonF_xdZP4Y3uO65nuA_4_zditn5Q_Pfcw,23310
|
464
464
|
django_cfg/utils/version_check.py,sha256=jI4v3YMdQriUEeb_TvRl511sDghy6I75iKRDUaNpucs,4800
|
465
|
-
django_cfg-1.2.
|
466
|
-
django_cfg-1.2.
|
467
|
-
django_cfg-1.2.
|
468
|
-
django_cfg-1.2.
|
469
|
-
django_cfg-1.2.
|
465
|
+
django_cfg-1.2.13.dist-info/METADATA,sha256=hA_EqJ1AfYhL-cffQJuaZ0KmF-6IewvuELFL1ErW9Xo,36406
|
466
|
+
django_cfg-1.2.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
467
|
+
django_cfg-1.2.13.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
|
468
|
+
django_cfg-1.2.13.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
|
469
|
+
django_cfg-1.2.13.dist-info/RECORD,,
|
@@ -1,574 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.4
|
2
|
-
Name: django-cfg
|
3
|
-
Version: 1.2.12
|
4
|
-
Summary: 🚀 Next-gen Django configuration: type-safety, AI features, blazing-fast setup, and automated best practices — all in one.
|
5
|
-
Project-URL: Homepage, https://djangocfg.com
|
6
|
-
Project-URL: Documentation, https://docs.djangocfg.com
|
7
|
-
Project-URL: Repository, https://github.com/reformsai/django-cfg
|
8
|
-
Project-URL: Issues, https://github.com/reformsai/django-cfg/issues
|
9
|
-
Project-URL: Changelog, https://github.com/reformsai/django-cfg/blob/main/CHANGELOG.md
|
10
|
-
Author-email: Django-CFG Team <info@djangocfg.com>
|
11
|
-
Maintainer-email: Django-CFG Team <info@djangocfg.com>
|
12
|
-
License: MIT
|
13
|
-
License-File: LICENSE
|
14
|
-
Keywords: configuration,developer-experience,django,pydantic,settings,type-safety
|
15
|
-
Classifier: Development Status :: 4 - Beta
|
16
|
-
Classifier: Framework :: Django
|
17
|
-
Classifier: Framework :: Django :: 5.2
|
18
|
-
Classifier: Intended Audience :: Developers
|
19
|
-
Classifier: License :: OSI Approved :: MIT License
|
20
|
-
Classifier: Operating System :: OS Independent
|
21
|
-
Classifier: Programming Language :: Python
|
22
|
-
Classifier: Programming Language :: Python :: 3
|
23
|
-
Classifier: Programming Language :: Python :: 3.10
|
24
|
-
Classifier: Programming Language :: Python :: 3.11
|
25
|
-
Classifier: Programming Language :: Python :: 3.12
|
26
|
-
Classifier: Programming Language :: Python :: 3.13
|
27
|
-
Classifier: Topic :: Internet :: WWW/HTTP
|
28
|
-
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
29
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
30
|
-
Classifier: Topic :: System :: Systems Administration
|
31
|
-
Classifier: Typing :: Typed
|
32
|
-
Requires-Python: <4.0,>=3.12
|
33
|
-
Requires-Dist: beautifulsoup4<5.0,>=4.13.0
|
34
|
-
Requires-Dist: cachetools<7.0,>=5.3.0
|
35
|
-
Requires-Dist: click<9.0,>=8.2.0
|
36
|
-
Requires-Dist: colorlog<7.0,>=6.9.0
|
37
|
-
Requires-Dist: coolname<3.0,>=2.2.0
|
38
|
-
Requires-Dist: currencyconverter<1.0,>=0.18.0
|
39
|
-
Requires-Dist: dj-database-url<4.0,>=3.0.0
|
40
|
-
Requires-Dist: django-admin-rangefilter<1.0,>=0.13.0
|
41
|
-
Requires-Dist: django-constance<5.0,>=4.3.0
|
42
|
-
Requires-Dist: django-cors-headers<5.0,>=4.7.0
|
43
|
-
Requires-Dist: django-dramatiq<1.0,>=0.14.0
|
44
|
-
Requires-Dist: django-extensions<5.0,>=4.1.0
|
45
|
-
Requires-Dist: django-filter<26.0,>=25.0
|
46
|
-
Requires-Dist: django-import-export<5.0,>=4.3.0
|
47
|
-
Requires-Dist: django-json-widget<3.0,>=2.0.0
|
48
|
-
Requires-Dist: django-ratelimit<5.0.0,>=4.1.0
|
49
|
-
Requires-Dist: django-redis<7.0,>=6.0.0
|
50
|
-
Requires-Dist: django-revolution<2.0,>=1.0.43
|
51
|
-
Requires-Dist: django-unfold<1.0,>=0.64.0
|
52
|
-
Requires-Dist: djangorestframework-simplejwt<6.0,>=5.5.0
|
53
|
-
Requires-Dist: djangorestframework-simplejwt[token-blacklist]<6.0,>=5.5.0
|
54
|
-
Requires-Dist: djangorestframework<4.0,>=3.16.0
|
55
|
-
Requires-Dist: dramatiq[redis]<2.0,>=1.18.0
|
56
|
-
Requires-Dist: drf-nested-routers<1.0,>=0.94.0
|
57
|
-
Requires-Dist: drf-spectacular-sidecar<2026.0,>=2025.8.0
|
58
|
-
Requires-Dist: drf-spectacular<1.0,>=0.28.0
|
59
|
-
Requires-Dist: hiredis<4.0,>=2.0.0
|
60
|
-
Requires-Dist: loguru<1.0,>=0.7.0
|
61
|
-
Requires-Dist: lxml<7.0,>=6.0.0
|
62
|
-
Requires-Dist: ngrok>=1.5.1; python_version >= '3.12'
|
63
|
-
Requires-Dist: openai<2.0,>=1.107.0
|
64
|
-
Requires-Dist: pgvector<1.0,>=0.4.0
|
65
|
-
Requires-Dist: psycopg[binary,pool]<4.0,>=3.2.0
|
66
|
-
Requires-Dist: pydantic-ai<2.0,>=1.0.10
|
67
|
-
Requires-Dist: pydantic-yaml<2.0,>=1.6.0
|
68
|
-
Requires-Dist: pydantic<3.0,>=2.11.0
|
69
|
-
Requires-Dist: pydantic[email]<3.0,>=2.11.0
|
70
|
-
Requires-Dist: pytelegrambotapi<5.0,>=4.28.0
|
71
|
-
Requires-Dist: python-json-logger<4.0,>=3.3.0
|
72
|
-
Requires-Dist: pyyaml<7.0,>=6.0
|
73
|
-
Requires-Dist: questionary<3.0,>=2.1.0
|
74
|
-
Requires-Dist: redis<7.0,>=6.4.0
|
75
|
-
Requires-Dist: requests<3.0,>=2.32.0
|
76
|
-
Requires-Dist: rich<15.0,>=14.0.0
|
77
|
-
Requires-Dist: sendgrid<7.0,>=6.12.0
|
78
|
-
Requires-Dist: tiktoken<1.0,>=0.11.0
|
79
|
-
Requires-Dist: toml<0.11.0,>=0.10.2
|
80
|
-
Requires-Dist: twilio<10.0,>=9.8.0
|
81
|
-
Requires-Dist: whitenoise<7.0,>=6.8.0
|
82
|
-
Provides-Extra: dev
|
83
|
-
Requires-Dist: black<26.0,>=25.9; extra == 'dev'
|
84
|
-
Requires-Dist: build<2.0,>=1.3; extra == 'dev'
|
85
|
-
Requires-Dist: django<6.0,>=5.2; extra == 'dev'
|
86
|
-
Requires-Dist: factory-boy<4.0,>=3.3; extra == 'dev'
|
87
|
-
Requires-Dist: flake8<8.0,>=6.0.0; extra == 'dev'
|
88
|
-
Requires-Dist: isort<7.0,>=6.0; extra == 'dev'
|
89
|
-
Requires-Dist: mkdocs-material<10.0,>=9.6; extra == 'dev'
|
90
|
-
Requires-Dist: mkdocs<2.0,>=1.6; extra == 'dev'
|
91
|
-
Requires-Dist: mkdocstrings[python]<1.0,>=0.30; extra == 'dev'
|
92
|
-
Requires-Dist: mypy<2.0,>=1.18; extra == 'dev'
|
93
|
-
Requires-Dist: pre-commit<5.0,>=4.3; extra == 'dev'
|
94
|
-
Requires-Dist: pytest-cov<8.0,>=7.0; extra == 'dev'
|
95
|
-
Requires-Dist: pytest-django<5.0,>=4.11; extra == 'dev'
|
96
|
-
Requires-Dist: pytest-mock<4.0,>=3.15; extra == 'dev'
|
97
|
-
Requires-Dist: pytest<9.0,>=8.4; extra == 'dev'
|
98
|
-
Requires-Dist: questionary<3.0,>=2.1.0; extra == 'dev'
|
99
|
-
Requires-Dist: redis<7.0,>=6.4.0; extra == 'dev'
|
100
|
-
Requires-Dist: rich<15.0,>=13.0.0; extra == 'dev'
|
101
|
-
Requires-Dist: tomlkit<1.0,>=0.13.3; extra == 'dev'
|
102
|
-
Requires-Dist: twine<7.0,>=6.2; extra == 'dev'
|
103
|
-
Provides-Extra: django52
|
104
|
-
Requires-Dist: django<6.0,>=5.2; extra == 'django52'
|
105
|
-
Provides-Extra: docs
|
106
|
-
Requires-Dist: mkdocs-material<10.0,>=9.6; extra == 'docs'
|
107
|
-
Requires-Dist: mkdocs<2.0,>=1.6; extra == 'docs'
|
108
|
-
Requires-Dist: mkdocstrings[python]<1.0,>=0.30; extra == 'docs'
|
109
|
-
Requires-Dist: pymdown-extensions<11.0,>=10.16; extra == 'docs'
|
110
|
-
Provides-Extra: full
|
111
|
-
Requires-Dist: black<26.0,>=25.9; extra == 'full'
|
112
|
-
Requires-Dist: build<2.0,>=1.3; extra == 'full'
|
113
|
-
Requires-Dist: django<6.0,>=5.2; extra == 'full'
|
114
|
-
Requires-Dist: factory-boy<4.0,>=3.3; extra == 'full'
|
115
|
-
Requires-Dist: flake8<8.0,>=6.0.0; extra == 'full'
|
116
|
-
Requires-Dist: isort<7.0,>=6.0; extra == 'full'
|
117
|
-
Requires-Dist: mkdocs-material<10.0,>=9.6; extra == 'full'
|
118
|
-
Requires-Dist: mkdocs<2.0,>=1.6; extra == 'full'
|
119
|
-
Requires-Dist: mkdocstrings[python]<1.0,>=0.30; extra == 'full'
|
120
|
-
Requires-Dist: mypy<2.0,>=1.18; extra == 'full'
|
121
|
-
Requires-Dist: pre-commit<5.0,>=4.3; extra == 'full'
|
122
|
-
Requires-Dist: pymdown-extensions<11.0,>=10.16; extra == 'full'
|
123
|
-
Requires-Dist: pytest-cov<8.0,>=7.0; extra == 'full'
|
124
|
-
Requires-Dist: pytest-django<5.0,>=4.11; extra == 'full'
|
125
|
-
Requires-Dist: pytest-mock<4.0,>=3.15; extra == 'full'
|
126
|
-
Requires-Dist: pytest-xdist<4.0,>=3.8; extra == 'full'
|
127
|
-
Requires-Dist: pytest<9.0,>=8.4; extra == 'full'
|
128
|
-
Requires-Dist: questionary<3.0,>=2.1.0; extra == 'full'
|
129
|
-
Requires-Dist: redis<7.0,>=6.4.0; extra == 'full'
|
130
|
-
Requires-Dist: rich<15.0,>=13.0.0; extra == 'full'
|
131
|
-
Requires-Dist: tomlkit<1.0,>=0.13.3; extra == 'full'
|
132
|
-
Requires-Dist: twine<7.0,>=6.2; extra == 'full'
|
133
|
-
Provides-Extra: local
|
134
|
-
Provides-Extra: tasks
|
135
|
-
Requires-Dist: redis<7.0,>=6.4.0; extra == 'tasks'
|
136
|
-
Provides-Extra: test
|
137
|
-
Requires-Dist: django<6.0,>=5.2; extra == 'test'
|
138
|
-
Requires-Dist: factory-boy<4.0,>=3.3; extra == 'test'
|
139
|
-
Requires-Dist: pytest-cov<8.0,>=7.0; extra == 'test'
|
140
|
-
Requires-Dist: pytest-django<5.0,>=4.11; extra == 'test'
|
141
|
-
Requires-Dist: pytest-mock<4.0,>=3.15; extra == 'test'
|
142
|
-
Requires-Dist: pytest-xdist<4.0,>=3.8; extra == 'test'
|
143
|
-
Requires-Dist: pytest<9.0,>=8.4; extra == 'test'
|
144
|
-
Description-Content-Type: text/markdown
|
145
|
-
|
146
|
-
# 🚀 Django-CFG: Type-Safe Django Configuration
|
147
|
-
|
148
|
-
[](https://pypi.org/project/django-cfg/)
|
149
|
-
[](https://pypi.org/project/django-cfg/)
|
150
|
-
[](https://github.com/reformsai/django-cfg/blob/main/LICENSE)
|
151
|
-
[](https://pypi.org/project/django-cfg/)
|
152
|
-
|
153
|
-
> **Create a production-ready Django project in 30 seconds, not 30 hours.**
|
154
|
-
|
155
|
-
Production-ready Django configuration with **Pydantic v2 models**, **AI agents**, and **enterprise integrations**. Build modern Django applications with full type safety, intelligent environment detection, and seamless deployment.
|
156
|
-
|
157
|
-
🌐 **Website**: [djangocfg.com](https://djangocfg.com/)
|
158
|
-
📚 **Documentation**: [docs.djangocfg.com](https://docs.djangocfg.com/)
|
159
|
-
🐙 **GitHub**: [github.com/reformsai/django-cfg](https://github.com/reformsai/django-cfg)
|
160
|
-
|
161
|
-
## 🎯 Quick Start
|
162
|
-
|
163
|
-
### Requirements
|
164
|
-
- **Python 3.12+** - [Download here](https://www.python.org/downloads/)
|
165
|
-
|
166
|
-
### Create Your First Project
|
167
|
-
|
168
|
-
```bash
|
169
|
-
# Install Django-CFG
|
170
|
-
pip install django-cfg
|
171
|
-
|
172
|
-
# Create a complete project instantly
|
173
|
-
django-cfg create-project "My Awesome Project"
|
174
|
-
|
175
|
-
# Enter the project and run
|
176
|
-
cd my-awesome-project
|
177
|
-
python manage.py runserver
|
178
|
-
```
|
179
|
-
|
180
|
-
**🎉 That's it!** Your app is now running with:
|
181
|
-
- **🚀 Main app:** http://127.0.0.1:8000/
|
182
|
-
- **🎯 Admin panel:** http://127.0.0.1:8000/admin/
|
183
|
-
- **📚 API docs:** http://127.0.0.1:8000/api/docs/
|
184
|
-
|
185
|
-
## ✨ What You Get Out of the Box
|
186
|
-
|
187
|
-
✅ **Beautiful admin interface** with Unfold + Tailwind CSS
|
188
|
-
✅ **Complete API documentation** with Swagger/ReDoc
|
189
|
-
✅ **Multi-channel user management** with email & SMS OTP authentication
|
190
|
-
✅ **SMS & WhatsApp integration** with Twilio out of the box
|
191
|
-
✅ **Support ticket system** with chat interface
|
192
|
-
✅ **Newsletter campaigns** with email tracking
|
193
|
-
✅ **Lead management** system with CRM integration
|
194
|
-
✅ **Multi-database routing** and connection pooling
|
195
|
-
✅ **Background task processing** with production-ready Dramatiq integration
|
196
|
-
✅ **Webhook testing** with built-in ngrok integration
|
197
|
-
✅ **Type-safe configuration** with full IDE support
|
198
|
-
|
199
|
-
## 🏆 Django-CFG vs Traditional Django
|
200
|
-
|
201
|
-
| Feature | Traditional Django | Django-CFG |
|
202
|
-
|---------|-------------------|-------------|
|
203
|
-
| **📝 Configuration** | 500+ lines of settings hell | **Type-safe & organized** |
|
204
|
-
| **🔒 Type Safety** | Pray and hope | **100% validated** |
|
205
|
-
| **🎨 Admin Interface** | Ugly 2010 design | **Modern Unfold + Tailwind** |
|
206
|
-
| **📊 Dashboard** | Basic admin index | **Real-time metrics & widgets** |
|
207
|
-
| **🗄️ Multi-Database** | Manual routing nightmare | **Smart auto-routing** |
|
208
|
-
| **📚 API Docs** | Hours of manual setup | **Auto-generated OpenAPI** |
|
209
|
-
| **🎫 Support System** | Build from scratch | **Built-in tickets & chat** |
|
210
|
-
| **👤 User Management** | Basic User model | **OTP auth & profiles** |
|
211
|
-
| **🚀 Deployment** | Cross fingers | **Production-ready defaults** |
|
212
|
-
| **💡 IDE Support** | Basic syntax highlighting | **Full IntelliSense paradise** |
|
213
|
-
| **🐛 Config Errors** | Runtime surprises | **Compile-time validation** |
|
214
|
-
|
215
|
-
## 🔥 Core Features
|
216
|
-
|
217
|
-
### 🔒 Type-Safe Configuration
|
218
|
-
Full Pydantic v2 validation with IDE autocomplete and compile-time error checking.
|
219
|
-
|
220
|
-
```python
|
221
|
-
from django_cfg import DjangoConfig
|
222
|
-
from django_cfg.models import DatabaseConfig
|
223
|
-
|
224
|
-
class MyConfig(DjangoConfig):
|
225
|
-
project_name: str = "My App"
|
226
|
-
secret_key: str = "${SECRET_KEY}"
|
227
|
-
debug: bool = False
|
228
|
-
|
229
|
-
databases: dict[str, DatabaseConfig] = {
|
230
|
-
"default": DatabaseConfig(
|
231
|
-
engine="django.db.backends.postgresql",
|
232
|
-
name="${DB_NAME}",
|
233
|
-
user="${DB_USER}",
|
234
|
-
password="${DB_PASSWORD}",
|
235
|
-
)
|
236
|
-
}
|
237
|
-
|
238
|
-
config = MyConfig()
|
239
|
-
```
|
240
|
-
|
241
|
-
### 🤖 Built-in AI Agents
|
242
|
-
Enterprise-grade AI agent system with type-safe agents and workflow orchestration.
|
243
|
-
|
244
|
-
```python
|
245
|
-
from django_cfg.agents import Agent, Workflow
|
246
|
-
|
247
|
-
@Agent.register("data_processor")
|
248
|
-
class DataProcessor(Agent):
|
249
|
-
def process(self, data: dict) -> dict:
|
250
|
-
# Your AI logic here
|
251
|
-
return processed_data
|
252
|
-
|
253
|
-
# Use in workflows
|
254
|
-
workflow = Workflow([DataProcessor()])
|
255
|
-
result = workflow.run(input_data)
|
256
|
-
```
|
257
|
-
|
258
|
-
### 🌍 Smart Environment Detection
|
259
|
-
Automatic dev/staging/production detection with appropriate defaults.
|
260
|
-
|
261
|
-
```python
|
262
|
-
class MyConfig(DjangoConfig):
|
263
|
-
# Automatically detects environment and applies settings
|
264
|
-
# No manual configuration needed!
|
265
|
-
pass
|
266
|
-
```
|
267
|
-
|
268
|
-
### 🗄️ Multi-Database Support
|
269
|
-
Smart database routing with connection pooling.
|
270
|
-
|
271
|
-
```python
|
272
|
-
databases: dict[str, DatabaseConfig] = {
|
273
|
-
"default": DatabaseConfig.from_url("postgresql://..."),
|
274
|
-
"analytics": DatabaseConfig.from_url(
|
275
|
-
"postgresql://...",
|
276
|
-
apps=["analytics"], # Route analytics app here
|
277
|
-
),
|
278
|
-
}
|
279
|
-
```
|
280
|
-
|
281
|
-
### 🔄 Background Task Processing
|
282
|
-
Built-in Dramatiq integration for reliable background jobs.
|
283
|
-
|
284
|
-
```python
|
285
|
-
import dramatiq
|
286
|
-
|
287
|
-
@dramatiq.actor
|
288
|
-
def process_document(document_id: str):
|
289
|
-
# Your background task
|
290
|
-
pass
|
291
|
-
|
292
|
-
# Queue the task
|
293
|
-
process_document.send(document_id="123")
|
294
|
-
```
|
295
|
-
|
296
|
-
## 📦 Installation Methods
|
297
|
-
|
298
|
-
### Using pip (Recommended)
|
299
|
-
```bash
|
300
|
-
pip install django-cfg
|
301
|
-
```
|
302
|
-
|
303
|
-
### Using Poetry
|
304
|
-
```bash
|
305
|
-
poetry add django-cfg
|
306
|
-
```
|
307
|
-
|
308
|
-
### Using pipenv
|
309
|
-
```bash
|
310
|
-
pipenv install django-cfg
|
311
|
-
```
|
312
|
-
|
313
|
-
### Using conda
|
314
|
-
```bash
|
315
|
-
conda install -c conda-forge django-cfg
|
316
|
-
```
|
317
|
-
|
318
|
-
## 🚀 Advanced Usage
|
319
|
-
|
320
|
-
### Production Configuration
|
321
|
-
|
322
|
-
```python
|
323
|
-
from django_cfg import DjangoConfig
|
324
|
-
from django_cfg.models import *
|
325
|
-
|
326
|
-
class ProductionConfig(DjangoConfig):
|
327
|
-
project_name: str = "My Production App"
|
328
|
-
|
329
|
-
# Multi-database setup
|
330
|
-
databases: dict[str, DatabaseConfig] = {
|
331
|
-
"default": DatabaseConfig(
|
332
|
-
engine="django.db.backends.postgresql",
|
333
|
-
name="${DB_NAME}",
|
334
|
-
host="${DB_HOST}",
|
335
|
-
sslmode="require",
|
336
|
-
),
|
337
|
-
"analytics": DatabaseConfig(
|
338
|
-
routing_apps=["analytics", "reports"],
|
339
|
-
),
|
340
|
-
}
|
341
|
-
|
342
|
-
# Background tasks
|
343
|
-
tasks: TaskConfig = TaskConfig(
|
344
|
-
dramatiq=DramatiqConfig(
|
345
|
-
processes=4,
|
346
|
-
threads=8,
|
347
|
-
queues=["default", "high", "low"],
|
348
|
-
),
|
349
|
-
)
|
350
|
-
|
351
|
-
# Beautiful admin
|
352
|
-
unfold: UnfoldConfig = UnfoldConfig(
|
353
|
-
site_title="My Admin",
|
354
|
-
theme="auto",
|
355
|
-
dashboard_callback="myapp.dashboard.callback",
|
356
|
-
)
|
357
|
-
```
|
358
|
-
|
359
|
-
### Built-in Features
|
360
|
-
|
361
|
-
```python
|
362
|
-
class MyConfig(DjangoConfig):
|
363
|
-
# Enable built-in modules
|
364
|
-
enable_support: bool = True # Support ticket system
|
365
|
-
enable_accounts: bool = True # Advanced user management
|
366
|
-
enable_newsletter: bool = True # Email marketing
|
367
|
-
enable_leads: bool = True # Lead management
|
368
|
-
enable_knowbase: bool = True # AI knowledge base
|
369
|
-
enable_agents: bool = True # AI agents
|
370
|
-
```
|
371
|
-
|
372
|
-
## 🛠️ Management Commands
|
373
|
-
|
374
|
-
Django-CFG includes powerful CLI tools:
|
375
|
-
|
376
|
-
```bash
|
377
|
-
# Create new project
|
378
|
-
django-cfg create-project "My Project"
|
379
|
-
|
380
|
-
# Get system information
|
381
|
-
django-cfg info
|
382
|
-
|
383
|
-
# Enhanced Django commands
|
384
|
-
python manage.py migrator --auto # Smart migrations
|
385
|
-
python manage.py validate_config # Validate settings
|
386
|
-
python manage.py show_config # Display config
|
387
|
-
python manage.py rundramatiq # Background workers
|
388
|
-
python manage.py runserver_ngrok # Dev server with ngrok
|
389
|
-
python manage.py test_email # Test email config
|
390
|
-
python manage.py test_twilio # Test SMS/WhatsApp
|
391
|
-
```
|
392
|
-
|
393
|
-
## 🌐 Real-World Example
|
394
|
-
|
395
|
-
See how **CarAPIS** (automotive data platform) uses Django-CFG in production:
|
396
|
-
|
397
|
-
- **Multi-database architecture** for vehicle data
|
398
|
-
- **Background task processing** for tax calculations
|
399
|
-
- **SMS/WhatsApp OTP** authentication
|
400
|
-
- **API zones** for different services
|
401
|
-
- **Custom admin dashboard** with real-time metrics
|
402
|
-
|
403
|
-
[View Full CarAPIS Example →](https://docs.djangocfg.com/examples/production-config)
|
404
|
-
|
405
|
-
## 📚 Documentation
|
406
|
-
|
407
|
-
### Getting Started
|
408
|
-
- [**Installation Guide**](https://docs.djangocfg.com/getting-started/installation) - Complete setup instructions
|
409
|
-
- [**First Project**](https://docs.djangocfg.com/getting-started/first-project) - Build your first app
|
410
|
-
- [**Configuration**](https://docs.djangocfg.com/getting-started/configuration) - Core concepts
|
411
|
-
|
412
|
-
### Core Features
|
413
|
-
- [**Architecture**](https://docs.djangocfg.com/core/architecture) - System overview
|
414
|
-
- [**Environment Detection**](https://docs.djangocfg.com/core/environment-detection) - Automatic environment setup
|
415
|
-
- [**Registry System**](https://docs.djangocfg.com/core/registry) - Component registration
|
416
|
-
- [**Utilities**](https://docs.djangocfg.com/core/utilities) - Helper functions
|
417
|
-
|
418
|
-
### AI & Agents
|
419
|
-
- [**AI Agents**](https://docs.djangocfg.com/agents/introduction) - Build intelligent workflows
|
420
|
-
- [**Knowledge Base**](https://docs.djangocfg.com/knowbase/setup) - AI-powered documentation
|
421
|
-
|
422
|
-
### Integrations
|
423
|
-
- [**Integration Patterns**](https://docs.djangocfg.com/integrations/patterns) - Common patterns
|
424
|
-
- [**Dramatiq**](https://docs.djangocfg.com/integrations/dramatiq) - Background tasks
|
425
|
-
- [**Twilio**](https://docs.djangocfg.com/integrations/twilio) - SMS/WhatsApp
|
426
|
-
- [**Authentication**](https://docs.djangocfg.com/integrations/auth) - OTP auth
|
427
|
-
|
428
|
-
### Built-in Apps
|
429
|
-
- [**Accounts**](https://docs.djangocfg.com/apps/accounts) - User management
|
430
|
-
- [**Support System**](https://docs.djangocfg.com/apps/support) - Ticket system
|
431
|
-
- [**Newsletter**](https://docs.djangocfg.com/apps/newsletter) - Email marketing
|
432
|
-
|
433
|
-
### CLI Tools
|
434
|
-
- [**CLI Introduction**](https://docs.djangocfg.com/cli/introduction) - Command overview
|
435
|
-
- [**Commands Reference**](https://docs.djangocfg.com/cli/commands) - All commands
|
436
|
-
- [**Custom Commands**](https://docs.djangocfg.com/cli/custom-commands) - Build your own
|
437
|
-
|
438
|
-
### Examples & Deployment
|
439
|
-
- [**Basic Setup**](https://docs.djangocfg.com/examples/basic-setup) - Simple examples
|
440
|
-
- [**Production Config**](https://docs.djangocfg.com/examples/production-config) - Real-world setup
|
441
|
-
- [**Migration Guide**](https://docs.djangocfg.com/examples/migration-guide) - Migrate existing projects
|
442
|
-
- [**Docker Deployment**](https://docs.djangocfg.com/deployment/docker) - Container deployment
|
443
|
-
|
444
|
-
## 🔄 Migration from Existing Django
|
445
|
-
|
446
|
-
### Option 1: Fresh Start (Recommended)
|
447
|
-
```bash
|
448
|
-
# Create new Django-CFG project
|
449
|
-
django-cfg create-project "My Migrated Project"
|
450
|
-
|
451
|
-
# Copy your apps and migrate data
|
452
|
-
# See migration guide for details
|
453
|
-
```
|
454
|
-
|
455
|
-
### Option 2: Gradual Migration
|
456
|
-
```bash
|
457
|
-
# Install in existing project
|
458
|
-
pip install django-cfg
|
459
|
-
|
460
|
-
# Create config.py
|
461
|
-
# Replace settings.py content
|
462
|
-
# Migrate features gradually
|
463
|
-
```
|
464
|
-
|
465
|
-
[**Complete Migration Guide →**](https://docs.djangocfg.com/examples/migration-guide)
|
466
|
-
|
467
|
-
## ⚠️ Troubleshooting
|
468
|
-
|
469
|
-
### Python Version Error
|
470
|
-
```bash
|
471
|
-
# Install Python 3.12+
|
472
|
-
brew install python@3.12 # macOS
|
473
|
-
# OR
|
474
|
-
pyenv install 3.12.0 # Using pyenv
|
475
|
-
```
|
476
|
-
|
477
|
-
### Virtual Environment Issues
|
478
|
-
```bash
|
479
|
-
# Create virtual environment
|
480
|
-
python3.12 -m venv .venv
|
481
|
-
source .venv/bin/activate # Linux/macOS
|
482
|
-
# OR
|
483
|
-
.venv\Scripts\activate # Windows
|
484
|
-
```
|
485
|
-
|
486
|
-
### Configuration Errors
|
487
|
-
```bash
|
488
|
-
# Validate your configuration
|
489
|
-
python manage.py validate_config --strict
|
490
|
-
|
491
|
-
# Show current configuration
|
492
|
-
python manage.py show_config
|
493
|
-
```
|
494
|
-
|
495
|
-
[**Full Troubleshooting Guide →**](https://docs.djangocfg.com/getting-started/installation#troubleshooting)
|
496
|
-
|
497
|
-
## 🧪 Testing
|
498
|
-
|
499
|
-
```python
|
500
|
-
def test_configuration():
|
501
|
-
"""Test your Django-CFG configuration"""
|
502
|
-
from config import config
|
503
|
-
|
504
|
-
# Validate configuration
|
505
|
-
settings = config.get_all_settings()
|
506
|
-
assert "SECRET_KEY" in settings
|
507
|
-
assert settings["DEBUG"] is False
|
508
|
-
|
509
|
-
# Test database connections
|
510
|
-
assert "default" in settings["DATABASES"]
|
511
|
-
```
|
512
|
-
|
513
|
-
## 🤝 Contributing
|
514
|
-
|
515
|
-
We welcome contributions! Here's how to get started:
|
516
|
-
|
517
|
-
```bash
|
518
|
-
git clone https://github.com/reformsai/django-cfg.git
|
519
|
-
cd django-cfg
|
520
|
-
pip install -e ".[dev,test]"
|
521
|
-
pytest
|
522
|
-
```
|
523
|
-
|
524
|
-
### Development Commands
|
525
|
-
```bash
|
526
|
-
# Run tests
|
527
|
-
pytest
|
528
|
-
|
529
|
-
# Format code
|
530
|
-
black .
|
531
|
-
|
532
|
-
# Type checking
|
533
|
-
mypy .
|
534
|
-
|
535
|
-
# Build package
|
536
|
-
python -m build
|
537
|
-
```
|
538
|
-
|
539
|
-
## 📊 Performance
|
540
|
-
|
541
|
-
Django-CFG is designed for production:
|
542
|
-
|
543
|
-
- **Startup Time**: < 50ms additional startup time
|
544
|
-
- **Memory Usage**: < 1MB additional memory
|
545
|
-
- **Type Validation**: Cached after first load
|
546
|
-
- **Production Optimized**: Skip validation with `DJANGO_CFG_SKIP_VALIDATION=1`
|
547
|
-
|
548
|
-
## 🌟 Community
|
549
|
-
|
550
|
-
- **🌐 Website**: [djangocfg.com](https://djangocfg.com/)
|
551
|
-
- **📚 Documentation**: [docs.djangocfg.com](https://docs.djangocfg.com/)
|
552
|
-
- **🐙 GitHub**: [github.com/reformsai/django-cfg](https://github.com/reformsai/django-cfg)
|
553
|
-
- **📦 PyPI**: [pypi.org/project/django-cfg](https://pypi.org/project/django-cfg/)
|
554
|
-
- **💬 Discord**: [Join our Discord](https://discord.gg/django-cfg)
|
555
|
-
- **❓ Stack Overflow**: Tag questions with `django-cfg`
|
556
|
-
|
557
|
-
## 📄 License
|
558
|
-
|
559
|
-
MIT License - see [LICENSE](LICENSE) file for details.
|
560
|
-
|
561
|
-
## 🙏 Acknowledgments
|
562
|
-
|
563
|
-
- **Django** - The web framework for perfectionists with deadlines
|
564
|
-
- **Pydantic** - Data validation using Python type hints
|
565
|
-
- **Django Unfold** - Beautiful modern admin interface
|
566
|
-
- **Dramatiq** - Fast and reliable background task processing
|
567
|
-
|
568
|
-
---
|
569
|
-
|
570
|
-
**Made with ❤️ by the Django-CFG Team**
|
571
|
-
|
572
|
-
*Transform your Django development experience with type-safe configuration, AI agents, and enterprise integrations.*
|
573
|
-
|
574
|
-
🚀 **[Get Started Now](https://docs.djangocfg.com/getting-started/installation)** | 📚 **[View Documentation](https://docs.djangocfg.com/)** | 🌐 **[Visit Website](https://djangocfg.com/)**
|
File without changes
|
File without changes
|
File without changes
|