django-cfg 1.2.12__py3-none-any.whl → 1.2.14__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.
@@ -1,10 +1,10 @@
1
1
  django_cfg/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- django_cfg/__init__.py,sha256=q0YWHYPaSMp7GKwLyqOqyRIDdbD5v93lR_PGenG78Ek,1631
2
+ django_cfg/__init__.py,sha256=g_flQ-9-LV1gfDgs04khEhR0zXfBFiXDQk50mNX438M,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=IEHCO3g0yJq_zLWvtbfrcYQpV3tBUYTNUC2RWWCM7oY,2122
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
@@ -288,7 +288,7 @@ django_cfg/core/__init__.py,sha256=eVK57qFOok9kTeHoNEMQ1BplkUOaQ7NB9kP9eQK1vg0,3
288
288
  django_cfg/core/config.py,sha256=XZmW4tqHYi8zUOywpJ_8DqeFUzwwflMshZnwrpddjtw,26302
289
289
  django_cfg/core/environment.py,sha256=MAoEPqIPsLVhSANT2Bz4nnus2wmbMW0RCOQxhQfDrDc,9106
290
290
  django_cfg/core/exceptions.py,sha256=RTQEoU3PfR8lqqNNv5ayd_HY2yJLs3eioqUy8VM6AG4,10378
291
- django_cfg/core/generation.py,sha256=2lovChgsZXE1q3ut23Ji0VYpm79wOflrK-rCsKM7ulc,23051
291
+ django_cfg/core/generation.py,sha256=RDxVGheBYopFbMPYBpR6Zz4c8RIjk6-T0R5zVe9gy3A,24701
292
292
  django_cfg/core/integration.py,sha256=5kzkZSd45ij0rfrBdeNUYnDalObqvK__XpoP31xFYKo,5224
293
293
  django_cfg/core/validation.py,sha256=PhwDBTs24nuM3xqfIT3hXmN88VrhMT-Bk8Yb8FxjmPk,6590
294
294
  django_cfg/management/__init__.py,sha256=NrLAhiS59hqjy-bipOC1abNuRiNm5BpKXmjN05VzKbM,28
@@ -316,6 +316,7 @@ django_cfg/management/commands/tree.py,sha256=rBeDOouqntFZjZGI5uYLOCpInJgSzb9Fz7
316
316
  django_cfg/management/commands/validate_config.py,sha256=2V8M6ZCOfrXA-tZ8WoXRxgnb6gDE0xXymAbBzUJ4gic,6940
317
317
  django_cfg/middleware/README.md,sha256=7XukH2HREqEnNJ9KDXhAcSw6lfpZ3gvKKAqGYvSivo4,3886
318
318
  django_cfg/middleware/__init__.py,sha256=IdcooCQLd8rNt-_8PXa2qXLMBnhsvkfdfuhI9CmgABA,195
319
+ django_cfg/middleware/pagination.py,sha256=RfLka1DbmLD-zznSAqayGD08x95ikcnkzp9LT5Jj5Bs,8655
319
320
  django_cfg/middleware/public_endpoints.py,sha256=EHJKzlYwakeU3hSPBJ53FZn8Ub-jwENCVSfFDJt3kAk,6915
320
321
  django_cfg/middleware/user_activity.py,sha256=7XVSnnIVfz-Hucx-YWRODcXd3qDH8Y8E__-6zYWLxqI,6153
321
322
  django_cfg/models/__init__.py,sha256=du24ZdqKdvc3VNXjgufEz_6B6gxdHtlqVHG4PJWaOQM,419
@@ -326,7 +327,7 @@ django_cfg/models/cfg.py,sha256=P6YowmE-VOqp_L25Ijxj2hjjNhB9xtlm8G35DHWqTfk,2702
326
327
  django_cfg/models/constance.py,sha256=BqwoPvUx5vfrZT6qF2KR0prpsSM5VEYIYJUVlB50ewk,8936
327
328
  django_cfg/models/cors.py,sha256=lozVoQJVehhNL1qzOhvAkd4ZpgwAdOJ-OUX7wkJp5W4,3567
328
329
  django_cfg/models/database.py,sha256=LpcmEljjr-2pnR8UVSziUNSnucsojfh8PcgayhrWqK4,16875
329
- django_cfg/models/drf.py,sha256=ZzxYv1KjA-iYLRGZj5HUcIyO9tg2B0Gudp1aZz9QNVg,9741
330
+ django_cfg/models/drf.py,sha256=o7p1dijT9NbQIHDp_WbWJsi1Kl5n2WS0wr5iWYuxNF0,10324
330
331
  django_cfg/models/email.py,sha256=y97W9I-Mm3TyWWLCLRh_2GO0u2PBVT2olMInqOyBiq8,4843
331
332
  django_cfg/models/environment.py,sha256=jM_KPXrxQHTFOhbaJTkkZL0Yml8bAM2Q7DJ69QsedX8,9438
332
333
  django_cfg/models/jwt.py,sha256=3R_dpLmVZIcH4zdtwA4qKnuCB8RZQACrgsbbgWY2q4c,9025
@@ -406,7 +407,7 @@ django_cfg/modules/django_unfold/models/dropdown.py,sha256=bbRYl0iuzBrwgmqUMTDw9
406
407
  django_cfg/modules/django_unfold/models/navigation.py,sha256=xrP2szoe1MSiTVAfc0Hd2dS32HhCp8XHBJinF5yc_U8,2575
407
408
  django_cfg/modules/django_unfold/models/tabs.py,sha256=AHV7lmaRTjOluf9mgZvXISG5D7Re1QPdU2v-iYoCaIQ,848
408
409
  django_cfg/registry/__init__.py,sha256=q6z9hGcBdtzbVLeDeQtP-A31z-1V7myZqjlZyTs1uo0,540
409
- django_cfg/registry/core.py,sha256=lKKcqe4iDqgd42iwL8KNl6kyjtgQ6KWReJMzJ3OqfZo,2257
410
+ django_cfg/registry/core.py,sha256=FGe86oEGm66fv9ypAEIFXP_XkFog1EaE5vYggALgQ_4,2703
410
411
  django_cfg/registry/exceptions.py,sha256=b4pIakeRxhT1-ST3lbAnmAQaASRBARCoah_w6vb3VF0,399
411
412
  django_cfg/registry/modules.py,sha256=e8lCG5C-yhRgvs8El_-6Xbdrte-enZF_Xb3B4opO-Hs,1135
412
413
  django_cfg/registry/services.py,sha256=wpGSgSCUr4e9pUh5-rwN1AyPLGazK6KD-Ky4vz-elIw,1219
@@ -455,15 +456,16 @@ django_cfg/templates/admin/snippets/tabs/stats_tab.html,sha256=jIqSnp4WTo2jAzzMq
455
456
  django_cfg/templates/admin/snippets/tabs/users_tab.html,sha256=04D05VSeidn2qJnQmktVI7TNlm7tNcXYXJAsk32U5hY,2813
456
457
  django_cfg/templates/admin/snippets/zones/zones_table.html,sha256=Hg4hT61yX0um00j4HkbkANOt0ehKwYIMT-r2IzTOpVo,12358
457
458
  django_cfg/templates/emails/base_email.html,sha256=TWcvYa2IHShlF_E8jf1bWZStRO0v8G4L_GexPxvz6XQ,8836
459
+ django_cfg/templates/rest_framework/api.html,sha256=M5t75SPfZOgHDmLBNVXxyZrmCWgJKv45Ybxw8Iempj0,343
458
460
  django_cfg/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
459
- django_cfg/templatetags/django_cfg.py,sha256=BpP4Q8zguNckZomtZBqdIBnQFO2gWtaTbeqfMgo--6E,828
461
+ django_cfg/templatetags/django_cfg.py,sha256=11_3YX0jAVuOd_fVcDixAxyDMG4V7A98SPqv8Lbfpxc,1308
460
462
  django_cfg/utils/__init__.py,sha256=64wwXJuXytvwt8Ze_erSR2HmV07nGWJ6DV5wloRBvYE,435
461
463
  django_cfg/utils/path_resolution.py,sha256=C9As6p4Q9l3VeoVkFDRPQWGrzAWf8O8UxLVkaI3ToVM,13899
462
464
  django_cfg/utils/smart_defaults.py,sha256=b6A1z7VO1NJGq0oUQXN5P97c3k_Ssgw6qUi0mK-4TlM,19786
463
465
  django_cfg/utils/toolkit.py,sha256=Td8_iXNaftonF_xdZP4Y3uO65nuA_4_zditn5Q_Pfcw,23310
464
466
  django_cfg/utils/version_check.py,sha256=jI4v3YMdQriUEeb_TvRl511sDghy6I75iKRDUaNpucs,4800
465
- django_cfg-1.2.12.dist-info/METADATA,sha256=vP-qrnsXdbZiUwh3un84RKhza7xIKIgBCIyXbEN1LZw,20279
466
- django_cfg-1.2.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
467
- django_cfg-1.2.12.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
468
- django_cfg-1.2.12.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
469
- django_cfg-1.2.12.dist-info/RECORD,,
467
+ django_cfg-1.2.14.dist-info/METADATA,sha256=qvEWenNbuvgOJy4EBPRaLJXYFUfUm062ILx64DlqcCA,36406
468
+ django_cfg-1.2.14.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
469
+ django_cfg-1.2.14.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
470
+ django_cfg-1.2.14.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
471
+ django_cfg-1.2.14.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
- [![Python Version](https://img.shields.io/pypi/pyversions/django-cfg.svg)](https://pypi.org/project/django-cfg/)
149
- [![Django Version](https://img.shields.io/pypi/djversions/django-cfg.svg)](https://pypi.org/project/django-cfg/)
150
- [![License](https://img.shields.io/pypi/l/django-cfg.svg)](https://github.com/reformsai/django-cfg/blob/main/LICENSE)
151
- [![PyPI Version](https://img.shields.io/pypi/v/django-cfg.svg)](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/)**