init-app 0.2.5__tar.gz → 1.2.0__tar.gz

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.
Files changed (166) hide show
  1. {init_app-0.2.5 → init_app-1.2.0}/MANIFEST.in +9 -5
  2. init_app-1.2.0/PKG-INFO +163 -0
  3. init_app-1.2.0/README.md +130 -0
  4. init_app-1.2.0/create_app/__init__.py +55 -0
  5. init_app-1.2.0/create_app/common/static/scripts/script.js.tpl +45 -0
  6. init_app-1.2.0/create_app/constants.py +152 -0
  7. init_app-1.2.0/create_app/engine/cli.py +219 -0
  8. init_app-1.2.0/create_app/engine/prompts.py +113 -0
  9. init_app-0.2.5/create_app/ui/loader.py → init_app-1.2.0/create_app/engine/ui/spinner.py +1 -1
  10. init_app-1.2.0/create_app/engine/ui/ui_config.py +44 -0
  11. init_app-1.2.0/create_app/engine/ui/user_interface.py +259 -0
  12. init_app-1.2.0/create_app/framework/bundler.py +194 -0
  13. init_app-1.2.0/create_app/initializer/controller.py +228 -0
  14. init_app-1.2.0/create_app/initializer/generator.py +157 -0
  15. init_app-1.2.0/create_app/logger.py +25 -0
  16. init_app-1.2.0/create_app/rules/auto_rules.py +89 -0
  17. init_app-1.2.0/create_app/rules/django_rules.py +65 -0
  18. init_app-1.2.0/create_app/rules/global_rules.py +51 -0
  19. init_app-1.2.0/create_app/rules/others_rules.py +82 -0
  20. init_app-1.2.0/create_app/rules/production_rules.py +104 -0
  21. init_app-1.2.0/create_app/rules/standard_rules.py +60 -0
  22. init_app-1.2.0/docs/COMMAND_LINE.md +133 -0
  23. init_app-1.2.0/docs/prerequisite.py +55 -0
  24. init_app-1.2.0/docs/requirements.txt +7 -0
  25. init_app-1.2.0/init_app.egg-info/PKG-INFO +163 -0
  26. init_app-1.2.0/init_app.egg-info/SOURCES.txt +50 -0
  27. init_app-1.2.0/init_app.egg-info/entry_points.txt +2 -0
  28. {init_app-0.2.5 → init_app-1.2.0}/init_app.egg-info/requires.txt +1 -0
  29. {init_app-0.2.5 → init_app-1.2.0}/init_app.egg-info/top_level.txt +2 -0
  30. {init_app-0.2.5 → init_app-1.2.0}/pyproject.toml +27 -6
  31. init_app-1.2.0/scripts/build.py +19 -0
  32. init_app-1.2.0/scripts/build.sh +13 -0
  33. init_app-1.2.0/scripts/bump_version.py +34 -0
  34. init_app-1.2.0/scripts/bump_version.sh +16 -0
  35. init_app-1.2.0/scripts/clean.py +21 -0
  36. init_app-1.2.0/scripts/clean.sh +14 -0
  37. init_app-1.2.0/scripts/dev_setup.py +20 -0
  38. init_app-1.2.0/scripts/dev_setup.sh +12 -0
  39. init_app-1.2.0/scripts/release.py +20 -0
  40. init_app-1.2.0/scripts/release.sh +14 -0
  41. {init_app-0.2.5 → init_app-1.2.0}/setup.py +18 -7
  42. init_app-1.2.0/tests/test_full_matrix.py +87 -0
  43. init_app-1.2.0/tests/test_logic.py +41 -0
  44. init_app-0.2.5/PKG-INFO +0 -240
  45. init_app-0.2.5/README.md +0 -208
  46. init_app-0.2.5/create_app/__init__.py +0 -21
  47. init_app-0.2.5/create_app/cli/engine.py +0 -239
  48. init_app-0.2.5/create_app/constants.py +0 -62
  49. init_app-0.2.5/create_app/generator/database.py +0 -23
  50. init_app-0.2.5/create_app/generator/engine.py +0 -63
  51. init_app-0.2.5/create_app/generator/generator.py +0 -193
  52. init_app-0.2.5/create_app/generator/prerequisites.py +0 -77
  53. init_app-0.2.5/create_app/generator/renderer.py +0 -62
  54. init_app-0.2.5/create_app/generator/venv.py +0 -83
  55. init_app-0.2.5/create_app/templates/bottle/minimal/entry.py.tpl +0 -26
  56. init_app-0.2.5/create_app/templates/bottle/minimal/requirements.txt +0 -2
  57. init_app-0.2.5/create_app/templates/bottle/minimal/structure.py +0 -60
  58. init_app-0.2.5/create_app/templates/bottle/production/entry.py.tpl +0 -44
  59. init_app-0.2.5/create_app/templates/bottle/production/requirements.txt +0 -2
  60. init_app-0.2.5/create_app/templates/bottle/production/structure.py +0 -174
  61. init_app-0.2.5/create_app/templates/common/.env.tpl +0 -11
  62. init_app-0.2.5/create_app/templates/common/README.md.tpl +0 -69
  63. init_app-0.2.5/create_app/templates/common/__init__.py.tpl +0 -0
  64. init_app-0.2.5/create_app/templates/common/gitignore.tpl +0 -27
  65. init_app-0.2.5/create_app/templates/common/requirements.txt.tpl +0 -1
  66. init_app-0.2.5/create_app/templates/common/static/script.js +0 -39
  67. init_app-0.2.5/create_app/templates/common/static/style.css +0 -420
  68. init_app-0.2.5/create_app/templates/common/template/bottle/index.tpl +0 -90
  69. init_app-0.2.5/create_app/templates/common/template/django/base.html +0 -48
  70. init_app-0.2.5/create_app/templates/common/template/django/index.html +0 -54
  71. init_app-0.2.5/create_app/templates/common/template/flask/base.html +0 -51
  72. init_app-0.2.5/create_app/templates/common/template/flask/index.html +0 -48
  73. init_app-0.2.5/create_app/templates/common/template/pyramid/base.jinja2 +0 -42
  74. init_app-0.2.5/create_app/templates/common/template/pyramid/index.jinja2 +0 -53
  75. init_app-0.2.5/create_app/templates/common/template/tornado/index.html +0 -90
  76. init_app-0.2.5/create_app/templates/common/venv.txt.tpl +0 -4
  77. init_app-0.2.5/create_app/templates/common/work.txt.tpl +0 -11
  78. init_app-0.2.5/create_app/templates/django/__init__.py +0 -0
  79. init_app-0.2.5/create_app/templates/django/drf/__init__.py +0 -0
  80. init_app-0.2.5/create_app/templates/django/drf/apps.py.tpl +0 -4
  81. init_app-0.2.5/create_app/templates/django/drf/requirements.txt +0 -9
  82. init_app-0.2.5/create_app/templates/django/drf/rf.py.tpl +0 -22
  83. init_app-0.2.5/create_app/templates/django/drf/secret.tpl +0 -3
  84. init_app-0.2.5/create_app/templates/django/drf/structure.py +0 -157
  85. init_app-0.2.5/create_app/templates/django/drf/urls.tpl +0 -11
  86. init_app-0.2.5/create_app/templates/django/minimal/__init__.py +0 -0
  87. init_app-0.2.5/create_app/templates/django/minimal/requirements.txt +0 -2
  88. init_app-0.2.5/create_app/templates/django/minimal/structure.py +0 -145
  89. init_app-0.2.5/create_app/templates/falcon/minimal/__init__.py +0 -0
  90. init_app-0.2.5/create_app/templates/falcon/minimal/entry.py.tpl +0 -46
  91. init_app-0.2.5/create_app/templates/falcon/minimal/requirements.txt +0 -2
  92. init_app-0.2.5/create_app/templates/falcon/minimal/structure.py +0 -60
  93. init_app-0.2.5/create_app/templates/falcon/production/__init__.py +0 -0
  94. init_app-0.2.5/create_app/templates/falcon/production/entry.py.tpl +0 -23
  95. init_app-0.2.5/create_app/templates/falcon/production/requirements.txt +0 -2
  96. init_app-0.2.5/create_app/templates/falcon/production/structure.py +0 -153
  97. init_app-0.2.5/create_app/templates/fastapi/minimal/__init__.py +0 -0
  98. init_app-0.2.5/create_app/templates/fastapi/minimal/entry.py.tpl +0 -36
  99. init_app-0.2.5/create_app/templates/fastapi/minimal/requirements.txt +0 -2
  100. init_app-0.2.5/create_app/templates/fastapi/minimal/structure.py +0 -52
  101. init_app-0.2.5/create_app/templates/fastapi/production/__init__.py +0 -0
  102. init_app-0.2.5/create_app/templates/fastapi/production/entry.py.tpl +0 -30
  103. init_app-0.2.5/create_app/templates/fastapi/production/requirements.txt +0 -2
  104. init_app-0.2.5/create_app/templates/fastapi/production/structure.py +0 -176
  105. init_app-0.2.5/create_app/templates/flask/minimal/__init__.py +0 -0
  106. init_app-0.2.5/create_app/templates/flask/minimal/entry.py.tpl +0 -45
  107. init_app-0.2.5/create_app/templates/flask/minimal/requirements.txt +0 -2
  108. init_app-0.2.5/create_app/templates/flask/minimal/structure.py +0 -64
  109. init_app-0.2.5/create_app/templates/flask/production/__init__.py +0 -0
  110. init_app-0.2.5/create_app/templates/flask/production/entry.py.tpl +0 -29
  111. init_app-0.2.5/create_app/templates/flask/production/requirements.txt +0 -4
  112. init_app-0.2.5/create_app/templates/flask/production/structure.py +0 -166
  113. init_app-0.2.5/create_app/templates/pyramid/__init__.py +0 -0
  114. init_app-0.2.5/create_app/templates/pyramid/minimal/__init__.py +0 -0
  115. init_app-0.2.5/create_app/templates/pyramid/minimal/entry.py.tpl +0 -50
  116. init_app-0.2.5/create_app/templates/pyramid/minimal/requirements.txt +0 -16
  117. init_app-0.2.5/create_app/templates/pyramid/minimal/structure.py +0 -60
  118. init_app-0.2.5/create_app/templates/pyramid/production/__init__.py +0 -0
  119. init_app-0.2.5/create_app/templates/pyramid/production/entry.py.tpl +0 -30
  120. init_app-0.2.5/create_app/templates/pyramid/production/requirements.txt +0 -16
  121. init_app-0.2.5/create_app/templates/pyramid/production/structure.py +0 -169
  122. init_app-0.2.5/create_app/templates/python/cli/__init__.py +0 -0
  123. init_app-0.2.5/create_app/templates/python/cli/main.py.tpl +0 -4
  124. init_app-0.2.5/create_app/templates/python/cli/structure.py +0 -56
  125. init_app-0.2.5/create_app/templates/python/library/__init__.py +0 -0
  126. init_app-0.2.5/create_app/templates/python/library/structure.py +0 -85
  127. init_app-0.2.5/create_app/templates/python/minimal/__init__.py +0 -0
  128. init_app-0.2.5/create_app/templates/python/minimal/structure.py +0 -36
  129. init_app-0.2.5/create_app/templates/python/mllabs/__init__.py +0 -0
  130. init_app-0.2.5/create_app/templates/python/mllabs/structure.py +0 -108
  131. init_app-0.2.5/create_app/templates/sanic/minimal/__init__.py +0 -0
  132. init_app-0.2.5/create_app/templates/sanic/minimal/entry.py.tpl +0 -27
  133. init_app-0.2.5/create_app/templates/sanic/minimal/requirements.txt +0 -2
  134. init_app-0.2.5/create_app/templates/sanic/minimal/structure.py +0 -60
  135. init_app-0.2.5/create_app/templates/sanic/production/__init__.py +0 -0
  136. init_app-0.2.5/create_app/templates/sanic/production/entry.py.tpl +0 -26
  137. init_app-0.2.5/create_app/templates/sanic/production/requirements.txt +0 -2
  138. init_app-0.2.5/create_app/templates/sanic/production/structure.py +0 -161
  139. init_app-0.2.5/create_app/templates/tornado/__init__.py +0 -0
  140. init_app-0.2.5/create_app/templates/tornado/minimal/__init__.py +0 -0
  141. init_app-0.2.5/create_app/templates/tornado/minimal/entry.py.tpl +0 -45
  142. init_app-0.2.5/create_app/templates/tornado/minimal/requirements.txt +0 -2
  143. init_app-0.2.5/create_app/templates/tornado/minimal/structure.py +0 -70
  144. init_app-0.2.5/create_app/templates/tornado/production/__init__.py +0 -0
  145. init_app-0.2.5/create_app/templates/tornado/production/entry.py.tpl +0 -23
  146. init_app-0.2.5/create_app/templates/tornado/production/requirements.txt +0 -2
  147. init_app-0.2.5/create_app/templates/tornado/production/structure.py +0 -144
  148. init_app-0.2.5/create_app/ui/__init__.py +0 -0
  149. init_app-0.2.5/create_app/ui/interface.py +0 -72
  150. init_app-0.2.5/create_app/ui/logger.py +0 -47
  151. init_app-0.2.5/create_app/ui/prompts.py +0 -39
  152. init_app-0.2.5/init_app.egg-info/PKG-INFO +0 -240
  153. init_app-0.2.5/init_app.egg-info/SOURCES.txt +0 -127
  154. init_app-0.2.5/init_app.egg-info/entry_points.txt +0 -2
  155. init_app-0.2.5/tests/__init__.py +0 -0
  156. init_app-0.2.5/tests/test_full_matrix.py +0 -83
  157. init_app-0.2.5/tests/test_logic.py +0 -39
  158. {init_app-0.2.5 → init_app-1.2.0}/LICENSE +0 -0
  159. {init_app-0.2.5/create_app/cli → init_app-1.2.0/create_app/engine}/__init__.py +0 -0
  160. {init_app-0.2.5/create_app/generator → init_app-1.2.0/create_app/engine/ui}/__init__.py +0 -0
  161. {init_app-0.2.5/create_app/templates → init_app-1.2.0/create_app/framework}/__init__.py +0 -0
  162. {init_app-0.2.5/create_app/templates/bottle → init_app-1.2.0/create_app/initializer}/__init__.py +0 -0
  163. {init_app-0.2.5/create_app/templates/bottle/minimal → init_app-1.2.0/create_app/rules}/__init__.py +0 -0
  164. {init_app-0.2.5 → init_app-1.2.0}/init_app.egg-info/dependency_links.txt +0 -0
  165. {init_app-0.2.5 → init_app-1.2.0}/setup.cfg +0 -0
  166. {init_app-0.2.5/create_app/templates/bottle/production → init_app-1.2.0/tests}/__init__.py +0 -0
@@ -4,18 +4,22 @@ include README.md
4
4
  include setup.py
5
5
  include pyproject.toml
6
6
 
7
- # Include ALL files inside these directories (Templates & Static)
7
+ # GRAFT ensures the entire folder and all sub-folders are included
8
+ graft docs
9
+ graft scripts
10
+ graft tests
11
+
12
+ # Include ALL files inside the core library (Templates & Static)
8
13
  recursive-include create_app/templates *
9
14
  recursive-include create_app/static *
10
15
 
11
16
  # Specifically ensure common templates and assets are grabbed
12
17
  recursive-include create_app/templates/common *
13
- recursive-include create_app/templates/common/static *
14
- recursive-include create_app/templates/common/template *
15
18
 
16
- # Exclude all Python cache and compiled files
19
+ # Exclude all Python cache and junk files
17
20
  global-exclude __pycache__
18
21
  global-exclude *.py[cod]
19
22
  global-exclude *.so
20
23
  global-exclude .DS_Store
21
- global-exclude .env
24
+ global-exclude .env
25
+ global-exclude *.log
@@ -0,0 +1,163 @@
1
+ Metadata-Version: 2.4
2
+ Name: init-app
3
+ Version: 1.2.0
4
+ Summary: Interactive Python CLI for scaffolding backend projects (Flask, Django, FastAPI, etc.)
5
+ Author-email: TechQuanta <techquanta.community@gmail.com>, Ashmeet Singh <ashmeetsingh0123@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/TechQuanta/init-app
8
+ Project-URL: Documentation, https://github.com/TechQuanta/init-app#readme
9
+ Project-URL: Source, https://github.com/TechQuanta/init-app
10
+ Project-URL: Tracker, https://github.com/TechQuanta/init-app/issues
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
19
+ Classifier: Topic :: Software Development :: Build Tools
20
+ Requires-Python: >=3.10
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: colorama>=0.4.6
24
+ Requires-Dist: pyfiglet>=1.0.4
25
+ Requires-Dist: readchar>=4.2.1
26
+ Requires-Dist: python-dotenv>=1.2.1
27
+ Requires-Dist: jinja2>=3.1.0
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
30
+ Requires-Dist: black>=24.0.0; extra == "dev"
31
+ Requires-Dist: isort>=6.0.0; extra == "dev"
32
+ Dynamic: license-file
33
+
34
+ # 🌌 [init-app](https://github.com/TechQuanta/init-app)
35
+
36
+ This is the "Source of Truth" document for your engine. I’ve designed this `COMMANDLINE.md` to look professional, high-tech, and crystal clear, exposing every feature from the **Architect** logic to the **Infrastructure Forge**.
37
+
38
+ ---
39
+ <div align="center" >
40
+ <img width="750" height="350" alt="image" src="https://github.com/user-attachments/assets/7b78c8eb-c14d-4f97-aa2c-f3677b845132" />
41
+ </div>
42
+ <img width="500" height="221" alt="image" src="https://github.com/user-attachments/assets/a5977fc8-78c8-4226-902a-4511a7eb1fe2" /> <img width="500" height="221" alt="image" src="https://github.com/user-attachments/assets/cab5ba61-62e5-4407-ae42-2fd5dfc06b31" />
43
+
44
+ <img width="571" height="517" alt="image" src="https://github.com/user-attachments/assets/dc9a31af-6e72-4396-89bd-cd22940a49fe" /> <img width="400" height="236" alt="image" src="https://github.com/user-attachments/assets/6b7a6992-4172-4178-aa7d-961d2180181c" /> <img width="252" height="236" alt="image" src="https://github.com/user-attachments/assets/71d28576-42c7-4f3f-8c53-1599d8105e75" /> <img width="252" height="236" alt="image" src="https://github.com/user-attachments/assets/99fb4345-2e1d-4594-b7f6-96360542b260" /> <img width="252" height="236" alt="image" src="https://github.com/user-attachments/assets/4a1d5a74-fe58-4a92-b632-bed4fd3e3f2c" /> <img width="252" height="236" alt="image" src="https://github.com/user-attachments/assets/bef658ad-b15f-4a4a-9813-7040aae3015f" /> <img width="252" height="236" alt="image" src="https://github.com/user-attachments/assets/fa9e6caf-c76c-4cba-ae50-cc3cdd949365" />
45
+
46
+
47
+
48
+
49
+
50
+
51
+ **Version:** `1.2.0`
52
+
53
+ **Engineer:** `Ashmeet Singh`
54
+
55
+ This document outlines the full capabilities of the Project Engine. The engine supports two primary flows: **Interactive UI** (Menu-driven) and **Headless CLI** (Flag-driven).
56
+
57
+ ---
58
+
59
+ ## 🕹️ 1. Build Strategies
60
+
61
+ The engine behaves differently based on the `-t` (type) flag:
62
+
63
+ | Strategy | Behavior |
64
+ | --- | --- |
65
+ | `auto_config` | **Zero-Config.** Uses smart defaults for the chosen framework. Best for rapid prototyping. |
66
+ | `standard` | **The Balanced Build.** Generates common folder structures (routes, models, schemas). |
67
+ | `production` | **Enterprise Ready.** Includes full infrastructure suites (Docker, K8s) and strict folder separation. |
68
+ | `custom` | **Total Control.** Enables manual folder selection and individual `__init__.py` configuration. |
69
+
70
+ ---
71
+
72
+ ## 🛠️ 2. CLI Flag Reference
73
+
74
+ Use these flags to bypass menus and automate your workflow.
75
+
76
+ ### Core Identity
77
+
78
+ * `name`: The name of your project folder.
79
+ * `-f, --framework`: `fastapi`, `flask`, `django`, `others`.
80
+ * `-s, --server`: Specify the runner (e.g., `uvicorn`, `gunicorn`, `hypercorn`).
81
+ * `-t, --type`: The build strategy (`auto_config`, `standard`, `production`, `custom`).
82
+
83
+ ### Architecture & Packages (Custom Mode)
84
+
85
+ * `--folders`: Manually define every directory to be created.
86
+ * `--packages`: Define which of those folders should be Python packages (adds `__init__.py`).
87
+
88
+ ### Data & Environment
89
+
90
+ * `--db`: Set the database engine (`sqlite`, `postgres`, `mysql`, `mongodb`).
91
+ * `--venv`: Enable virtual environment creation (`y` or `n`).
92
+
93
+ ### Infrastructure Forge
94
+
95
+ * `--docker`: `dockerfile`, `docker-compose`, `.dockerignore`.
96
+ * `--github`: `main.yml`, `ci.yml`, `cd.yml`.
97
+ * `--k8s`: `deployment.yml`, `service.yml`, `ingress.yml`.
98
+ * `--jenkins`: `Jenkinsfile`.
99
+
100
+ ---
101
+
102
+ ## 🚀 3. Usage Examples
103
+
104
+ ### A. The "Speed Demon" (Auto-Config)
105
+
106
+ Builds a FastAPI project with SQLite and a VENV instantly.
107
+
108
+ ```bash
109
+ init-app quick_api -f fastapi -t auto_config --venv y
110
+
111
+ ```
112
+
113
+ ### B. The "Full Stack Pro" (Production)
114
+
115
+ Builds a Django + Postgres app with Docker and GitHub Actions.
116
+
117
+ ```bash
118
+ init-app pro_backend -f django -t production --db postgres --docker dockerfile docker-compose --github main.yml
119
+
120
+ ```
121
+
122
+ ### C. The "Architect" (Deep Customization)
123
+
124
+ The most powerful command. Manually define folders and only make `src` and `app` Python packages.
125
+
126
+ ```bash
127
+ init-app bespoke_engine -f fastapi -t custom \
128
+ --folders src app docs tests logs \
129
+ --packages src app \
130
+ --db mongodb --venv y
131
+
132
+ ```
133
+
134
+ ---
135
+
136
+ ## 🧠 4. Internal Logic & Features
137
+
138
+ ### 🐍 Selective Package Initialization
139
+
140
+ Unlike standard generators that put `__init__.py` everywhere, this engine uses an `init_strategy` map. It only converts a folder into a Python package if explicitly told to or if the framework requires it.
141
+
142
+ ### 💉 Snippet Injection (Django)
143
+
144
+ When building Django, the engine performs "surgical" regex injections:
145
+
146
+ * **Settings Patching**: Automatically adds your App to `INSTALLED_APPS`.
147
+ * **Security Injection**: Moves `SECRET_KEY` to environment variable logic.
148
+ * **DRF Integration**: If DRF is detected, it injects the `REST_FRAMEWORK` configuration block automatically.
149
+
150
+ ### 🛡️ UI Folder Guard
151
+
152
+ The engine contains a security layer that prevents any template rendering from writing into the `ui/` directory, protecting the engine's core interface assets during a project build.
153
+
154
+ ---
155
+
156
+ ## 🏗️ 5. Directory Structure Example (Production)
157
+
158
+ <img width="500" height="552" alt="image" src="https://github.com/user-attachments/assets/75f44825-f486-40df-9100-015be74d9877" />
159
+
160
+ <img width="400" height="452" alt="image" src="https://github.com/user-attachments/assets/7dfda372-7ecf-4b3b-9d88-765c4ddc04c7" />
161
+
162
+
163
+ # **Contributors are welcome to this to enhance the optimisation of this repository**
@@ -0,0 +1,130 @@
1
+ # 🌌 [init-app](https://github.com/TechQuanta/init-app)
2
+
3
+ This is the "Source of Truth" document for your engine. I’ve designed this `COMMANDLINE.md` to look professional, high-tech, and crystal clear, exposing every feature from the **Architect** logic to the **Infrastructure Forge**.
4
+
5
+ ---
6
+ <div align="center" >
7
+ <img width="750" height="350" alt="image" src="https://github.com/user-attachments/assets/7b78c8eb-c14d-4f97-aa2c-f3677b845132" />
8
+ </div>
9
+ <img width="500" height="221" alt="image" src="https://github.com/user-attachments/assets/a5977fc8-78c8-4226-902a-4511a7eb1fe2" /> <img width="500" height="221" alt="image" src="https://github.com/user-attachments/assets/cab5ba61-62e5-4407-ae42-2fd5dfc06b31" />
10
+
11
+ <img width="571" height="517" alt="image" src="https://github.com/user-attachments/assets/dc9a31af-6e72-4396-89bd-cd22940a49fe" /> <img width="400" height="236" alt="image" src="https://github.com/user-attachments/assets/6b7a6992-4172-4178-aa7d-961d2180181c" /> <img width="252" height="236" alt="image" src="https://github.com/user-attachments/assets/71d28576-42c7-4f3f-8c53-1599d8105e75" /> <img width="252" height="236" alt="image" src="https://github.com/user-attachments/assets/99fb4345-2e1d-4594-b7f6-96360542b260" /> <img width="252" height="236" alt="image" src="https://github.com/user-attachments/assets/4a1d5a74-fe58-4a92-b632-bed4fd3e3f2c" /> <img width="252" height="236" alt="image" src="https://github.com/user-attachments/assets/bef658ad-b15f-4a4a-9813-7040aae3015f" /> <img width="252" height="236" alt="image" src="https://github.com/user-attachments/assets/fa9e6caf-c76c-4cba-ae50-cc3cdd949365" />
12
+
13
+
14
+
15
+
16
+
17
+
18
+ **Version:** `1.2.0`
19
+
20
+ **Engineer:** `Ashmeet Singh`
21
+
22
+ This document outlines the full capabilities of the Project Engine. The engine supports two primary flows: **Interactive UI** (Menu-driven) and **Headless CLI** (Flag-driven).
23
+
24
+ ---
25
+
26
+ ## 🕹️ 1. Build Strategies
27
+
28
+ The engine behaves differently based on the `-t` (type) flag:
29
+
30
+ | Strategy | Behavior |
31
+ | --- | --- |
32
+ | `auto_config` | **Zero-Config.** Uses smart defaults for the chosen framework. Best for rapid prototyping. |
33
+ | `standard` | **The Balanced Build.** Generates common folder structures (routes, models, schemas). |
34
+ | `production` | **Enterprise Ready.** Includes full infrastructure suites (Docker, K8s) and strict folder separation. |
35
+ | `custom` | **Total Control.** Enables manual folder selection and individual `__init__.py` configuration. |
36
+
37
+ ---
38
+
39
+ ## 🛠️ 2. CLI Flag Reference
40
+
41
+ Use these flags to bypass menus and automate your workflow.
42
+
43
+ ### Core Identity
44
+
45
+ * `name`: The name of your project folder.
46
+ * `-f, --framework`: `fastapi`, `flask`, `django`, `others`.
47
+ * `-s, --server`: Specify the runner (e.g., `uvicorn`, `gunicorn`, `hypercorn`).
48
+ * `-t, --type`: The build strategy (`auto_config`, `standard`, `production`, `custom`).
49
+
50
+ ### Architecture & Packages (Custom Mode)
51
+
52
+ * `--folders`: Manually define every directory to be created.
53
+ * `--packages`: Define which of those folders should be Python packages (adds `__init__.py`).
54
+
55
+ ### Data & Environment
56
+
57
+ * `--db`: Set the database engine (`sqlite`, `postgres`, `mysql`, `mongodb`).
58
+ * `--venv`: Enable virtual environment creation (`y` or `n`).
59
+
60
+ ### Infrastructure Forge
61
+
62
+ * `--docker`: `dockerfile`, `docker-compose`, `.dockerignore`.
63
+ * `--github`: `main.yml`, `ci.yml`, `cd.yml`.
64
+ * `--k8s`: `deployment.yml`, `service.yml`, `ingress.yml`.
65
+ * `--jenkins`: `Jenkinsfile`.
66
+
67
+ ---
68
+
69
+ ## 🚀 3. Usage Examples
70
+
71
+ ### A. The "Speed Demon" (Auto-Config)
72
+
73
+ Builds a FastAPI project with SQLite and a VENV instantly.
74
+
75
+ ```bash
76
+ init-app quick_api -f fastapi -t auto_config --venv y
77
+
78
+ ```
79
+
80
+ ### B. The "Full Stack Pro" (Production)
81
+
82
+ Builds a Django + Postgres app with Docker and GitHub Actions.
83
+
84
+ ```bash
85
+ init-app pro_backend -f django -t production --db postgres --docker dockerfile docker-compose --github main.yml
86
+
87
+ ```
88
+
89
+ ### C. The "Architect" (Deep Customization)
90
+
91
+ The most powerful command. Manually define folders and only make `src` and `app` Python packages.
92
+
93
+ ```bash
94
+ init-app bespoke_engine -f fastapi -t custom \
95
+ --folders src app docs tests logs \
96
+ --packages src app \
97
+ --db mongodb --venv y
98
+
99
+ ```
100
+
101
+ ---
102
+
103
+ ## 🧠 4. Internal Logic & Features
104
+
105
+ ### 🐍 Selective Package Initialization
106
+
107
+ Unlike standard generators that put `__init__.py` everywhere, this engine uses an `init_strategy` map. It only converts a folder into a Python package if explicitly told to or if the framework requires it.
108
+
109
+ ### 💉 Snippet Injection (Django)
110
+
111
+ When building Django, the engine performs "surgical" regex injections:
112
+
113
+ * **Settings Patching**: Automatically adds your App to `INSTALLED_APPS`.
114
+ * **Security Injection**: Moves `SECRET_KEY` to environment variable logic.
115
+ * **DRF Integration**: If DRF is detected, it injects the `REST_FRAMEWORK` configuration block automatically.
116
+
117
+ ### 🛡️ UI Folder Guard
118
+
119
+ The engine contains a security layer that prevents any template rendering from writing into the `ui/` directory, protecting the engine's core interface assets during a project build.
120
+
121
+ ---
122
+
123
+ ## 🏗️ 5. Directory Structure Example (Production)
124
+
125
+ <img width="500" height="552" alt="image" src="https://github.com/user-attachments/assets/75f44825-f486-40df-9100-015be74d9877" />
126
+
127
+ <img width="400" height="452" alt="image" src="https://github.com/user-attachments/assets/7dfda372-7ecf-4b3b-9d88-765c4ddc04c7" />
128
+
129
+
130
+ # **Contributors are welcome to this to enhance the optimisation of this repository**
@@ -0,0 +1,55 @@
1
+ # create_app/__init__.py
2
+
3
+ from create_app.constants import (
4
+ __version__,
5
+ APP_NAME,
6
+ APP_TAGLINE,
7
+ FRAMEWORKS,
8
+ OTHERS_PROJECT_TYPES,
9
+ PROJECT_MODES,
10
+ DESCRIPTIONS,
11
+ DB_ENGINES,
12
+ DB_STRUCTURE,
13
+ ORM_MAPPING,
14
+ SERVER_OPTIONS,
15
+ FRAMEWORK_SERVER_MAPPING,
16
+ DEFAULT_PORTS,
17
+ JENKINS_SUITE,
18
+ DOCKER_SUITE,
19
+ K8S_FILES,
20
+ GITHUB_SUITE,
21
+ RAG_LAYERS,
22
+ DATA_LAYERS,
23
+ ALL_CUSTOM_FOLDERS,
24
+ GLOBAL_DEFAULTS,
25
+ COMMUNITY_CORE,
26
+ PACKAGE_FILES,
27
+ UI_MAPPING,
28
+ )
29
+
30
+ __all__ = [
31
+ "__version__",
32
+ "APP_NAME",
33
+ "APP_TAGLINE",
34
+ "FRAMEWORKS",
35
+ "OTHERS_PROJECT_TYPES",
36
+ "PROJECT_MODES",
37
+ "DESCRIPTIONS",
38
+ "DB_ENGINES",
39
+ "DB_STRUCTURE",
40
+ "ORM_MAPPING",
41
+ "SERVER_OPTIONS",
42
+ "FRAMEWORK_SERVER_MAPPING",
43
+ "DEFAULT_PORTS",
44
+ "JENKINS_SUITE",
45
+ "DOCKER_SUITE",
46
+ "K8S_FILES",
47
+ "GITHUB_SUITE",
48
+ "RAG_LAYERS",
49
+ "DATA_LAYERS",
50
+ "ALL_CUSTOM_FOLDERS",
51
+ "GLOBAL_DEFAULTS",
52
+ "COMMUNITY_CORE",
53
+ "PACKAGE_FILES",
54
+ "UI_MAPPING",
55
+ ]
@@ -0,0 +1,45 @@
1
+ /**
2
+ * 🚀 {{ project_name | capitalize }} Interaction System
3
+ * Generated by {{ APP_NAME }}
4
+ */
5
+
6
+ console.log("🚀 {{ project_name }} UI Engine loaded");
7
+
8
+ document.addEventListener('DOMContentLoaded', () => {
9
+ // 1. Initial Page Load Animation
10
+ document.body.classList.add("loaded");
11
+
12
+ // 2. Theme Orchestration
13
+ const themeToggle = document.getElementById('theme-toggle');
14
+ const storageKey = '{{ project_name | lower }}-theme';
15
+
16
+ if (themeToggle) {
17
+ themeToggle.addEventListener('click', () => {
18
+ // Get current state from the <html> attribute
19
+ const currentTheme = document.documentElement.getAttribute('data-theme');
20
+
21
+ // Toggle logic
22
+ const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
23
+
24
+ // Apply to DOM
25
+ document.documentElement.setAttribute('data-theme', newTheme);
26
+
27
+ // Persist preference
28
+ localStorage.setItem(storageKey, newTheme);
29
+
30
+ // Log with Framework-specific style
31
+ const accentColor = getComputedStyle(document.body).getPropertyValue('--accent').trim();
32
+ console.log(
33
+ `%c {{ project_name | upper }} %c ${newTheme.toUpperCase()} MODE `,
34
+ `background: ${accentColor}; color: #fff; font-weight: bold; border-radius: 3px 0 0 3px;`,
35
+ `background: #222; color: ${accentColor}; font-weight: bold; border-radius: 0 3px 3px 0;`
36
+ );
37
+ });
38
+ }
39
+
40
+ // 3. Handle Framework Specific Tooltips or Effects
41
+ const framework = "{{ framework }}";
42
+ if (framework === 'fastapi') {
43
+ console.log("⚡ Async Engine: FastAPI detected");
44
+ }
45
+ });
@@ -0,0 +1,152 @@
1
+ """
2
+ UNIFIED ARCHITECTURAL CONSTANTS (v0.6.1)
3
+ Project: init-app Engine
4
+ Focus: Base, RAG AI, Data Engineering, and Enterprise DevOps.
5
+ Standardization: Atomic Base-IDs for High-Performance Routing.
6
+ """
7
+
8
+ __version__ = "1.2.0"
9
+
10
+ # --- 1. BRANDING & IDENTITY ---
11
+ APP_NAME = "init-app"
12
+ APP_TAGLINE = "High-Performance System & Native Extension Generator"
13
+
14
+ # --- 2. CORE ENGINE BLUEPRINTS (Base Slugs) ---
15
+ FRAMEWORKS = [
16
+ "fastapi", "flask", "django", "bottle",
17
+ "sanic", "falcon", "tornado", "pyramid", "others"
18
+ ]
19
+
20
+ OTHERS_PROJECT_TYPES = [
21
+ "base",
22
+ "hp_cli",
23
+ "data_pipeline",
24
+ "dbt_analytics",
25
+ "mlops_core",
26
+ "rag_ai"
27
+ ]
28
+
29
+ PROJECT_MODES = ["standard", "production", "auto_config", "custom"]
30
+
31
+ # --- 3. INTELLIGENT DESCRIPTIONS (Mapping Base to Display) ---
32
+ DESCRIPTIONS = {
33
+ # Base Slugs : Display Description
34
+ "fastapi": "High-performance Async API with OpenAPI support.",
35
+ "flask": "Flexible and lightweight WSGI micro-framework.",
36
+ "django": "Feature-rich 'batteries-included' web framework.",
37
+ "bottle": "Ultra-lightweight single-file WSGI micro-framework.",
38
+ "sanic": "Next-gen Async Python web server & framework.",
39
+ "falcon": "Minimalist ASGI/WSGI framework for high-performance APIs.",
40
+ "tornado": "Asynchronous networking library and web framework.",
41
+ "pyramid": "Small, fast, down-to-earth Python web framework.",
42
+ "others": "Specialized Python system and data engineering engines.",
43
+
44
+ # Specialized Base Engines
45
+ "base": "Python Base Project",
46
+ "rag_ai": "LLM-powered Retrieval Augmented Generation engine.",
47
+ "mlops_core": "Machine Learning lifecycle and model serving core.",
48
+ "hp_cli": "Optimized Command Line Interface with Click/Typer.",
49
+ "data_pipeline": "Workflow orchestration for complex data task graphs.",
50
+ "dbt_analytics": "Data transformation and documentation for SQL warehouses.",
51
+
52
+ # Architectural Base Modes
53
+ "standard": "Clean architecture with basic configuration layers.",
54
+ "production": "Enterprise-ready setup with Docker, K8s, and Jenkins folders.",
55
+ "auto_config": "One-click deployment using optimized system defaults.",
56
+ "custom": "Full manual control over architectural components.",
57
+
58
+ # Data & Storage
59
+ "postgresql": "Robust, production-grade relational database.",
60
+ "sqlite": "Portable, serverless file-based database.",
61
+ "mongodb": "NoSQL document store for flexible data schemas."
62
+ }
63
+
64
+ # --- 4. DATA NEXUS & ORM SUITE ---
65
+ DB_ENGINES = ["postgresql", "mysql", "sqlite", "mongodb", "none"]
66
+
67
+ DB_STRUCTURE = [
68
+ "db/migrations", "db/seeds", "db/schemas", "db/scripts"
69
+ ]
70
+
71
+ ORM_MAPPING = {
72
+ "fastapi": ["sqlalchemy", "tortoise_orm", "beanie"],
73
+ "flask": ["flask_sqlalchemy", "mongoengine"],
74
+ "django": ["django_orm"],
75
+ "others": ["sqlalchemy", "peewee", "na"]
76
+ }
77
+
78
+ # --- 5. RUNTIME & SERVER ORCHESTRATION ---
79
+ SERVER_OPTIONS = ["uvicorn", "gunicorn", "waitress", "gevent", "wsgiref", "na"]
80
+
81
+ FRAMEWORK_SERVER_MAPPING = {
82
+ "fastapi": ["uvicorn", "gunicorn"],
83
+ "flask": ["gunicorn", "waitress", "gevent", "wsgiref", "na"],
84
+ "django": ["gunicorn", "waitress", "wsgiref"],
85
+ "bottle": ["waitress", "gevent", "wsgiref", "na"],
86
+ "sanic": ["na"],
87
+ "falcon": ["gunicorn", "waitress", "wsgiref"],
88
+ "tornado": ["na"],
89
+ "pyramid": ["waitress", "gunicorn", "wsgiref"],
90
+ "others": ["na"]
91
+ }
92
+
93
+ DEFAULT_PORTS = {
94
+ "fastapi": "8000", "flask": "5000", "django": "8000",
95
+ "bottle": "8080", "sanic": "8000", "falcon": "8000",
96
+ "tornado": "8888", "pyramid": "6543", "others": "na"
97
+ }
98
+
99
+ # --- 6. DEVOPS & CI/CD SUITES ---
100
+ JENKINS_SUITE = [
101
+ "jenkins/Jenkinsfile",
102
+ "jenkins/pipelines/build.groovy",
103
+ "jenkins/pipelines/deploy.groovy",
104
+ "jenkins/scripts/notify.sh"
105
+ ]
106
+
107
+ DOCKER_SUITE = [
108
+ "docker/Dockerfile",
109
+ "docker/docker-compose.yml",
110
+ "docker/docker-compose.prod.yml",
111
+ "docker/.dockerignore",
112
+ "docker/DOCKER.md"
113
+ ]
114
+
115
+ K8S_FILES = [
116
+ "k8s/deployment.yml", "k8s/service.yml", "k8s/ingress.yml",
117
+ "k8s/hpa.yml", "k8s/pvc.yml", "k8s/configmap.yml", "k8s/secret.yml"
118
+ ]
119
+
120
+ GITHUB_SUITE = [
121
+ ".github/workflows/ci.yml", ".github/workflows/security.yml",
122
+ ".github/ISSUE_TEMPLATE/bug_report.md", ".github/ISSUE_TEMPLATE/feature_request.md",
123
+ ".github/PULL_REQUEST_TEMPLATE.md"
124
+ ]
125
+
126
+ # --- 7. ARCHITECTURAL LAYERS ---
127
+ RAG_LAYERS = ["vectordb", "embeddings", "knowledge", "prompts", "retrievers", "chains"]
128
+ DATA_LAYERS = ["dags", "transformers", "staging", "analysis", "artifacts"]
129
+
130
+ ALL_CUSTOM_FOLDERS = [
131
+ "config", "routes", "services", "models", "schemas", "middleware", "utils",
132
+ "templates", "static", "assets", "logs", "tests", "docs", "scripts",
133
+ "src", "include", "k8s", ".github", "db", "docker", "jenkins"
134
+ ] + RAG_LAYERS + DATA_LAYERS
135
+
136
+ # --- 8. SYSTEM DEFAULTS & ASSETS ---
137
+ GLOBAL_DEFAULTS = [
138
+ ".env.example", "Makefile", "README.md", ".gitignore", ".editorconfig", "alembic.ini"
139
+ ]
140
+
141
+ COMMUNITY_CORE = [
142
+ "CONTRIBUTING.md", "CODE_OF_CONDUCT.md", "SECURITY.md", "CHANGELOG.md"
143
+ ]
144
+
145
+ PACKAGE_FILES = [
146
+ "MANIFEST.in", "setup.py", "pyproject.toml", "requirements.txt", "package.json"
147
+ ]
148
+
149
+ UI_MAPPING = {
150
+ "bottle": "views", "flask": "templates", "fastapi": "templates",
151
+ "django": "templates", "others": "assets"
152
+ }