dev-scaffolder 0.0.1__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.
Files changed (575) hide show
  1. constants/__init__.py +0 -0
  2. constants/backend/__init__.py +0 -0
  3. constants/backend/python/__init__.py +0 -0
  4. constants/backend/python/base.py +16 -0
  5. dev_scaffolder-0.0.1.dist-info/METADATA +230 -0
  6. dev_scaffolder-0.0.1.dist-info/RECORD +575 -0
  7. dev_scaffolder-0.0.1.dist-info/WHEEL +5 -0
  8. dev_scaffolder-0.0.1.dist-info/entry_points.txt +2 -0
  9. dev_scaffolder-0.0.1.dist-info/licenses/LICENSE +19 -0
  10. dev_scaffolder-0.0.1.dist-info/top_level.txt +7 -0
  11. executors/__init__.py +0 -0
  12. executors/backend/__init__.py +0 -0
  13. executors/backend/c/__init__.py +0 -0
  14. executors/backend/c/minimal/__init__.py +0 -0
  15. executors/backend/c/minimal/basic.py +10 -0
  16. executors/backend/c/minimal/cmake.py +10 -0
  17. executors/backend/c/minimal/docker.py +10 -0
  18. executors/backend/cpp/__init__.py +0 -0
  19. executors/backend/cpp/crow/__init__.py +0 -0
  20. executors/backend/cpp/crow/docker.py +10 -0
  21. executors/backend/cpp/crow/official.py +10 -0
  22. executors/backend/cpp/crow/rest_api.py +10 -0
  23. executors/backend/cpp/crow/ssl.py +10 -0
  24. executors/backend/csharp/__init__.py +0 -0
  25. executors/backend/csharp/entity_framework_core/__init__.py +0 -0
  26. executors/backend/csharp/entity_framework_core/code_first.py +10 -0
  27. executors/backend/csharp/entity_framework_core/database_first.py +10 -0
  28. executors/backend/csharp/entity_framework_core/docker.py +10 -0
  29. executors/backend/csharp/entity_framework_core/migrations.py +10 -0
  30. executors/backend/csharp/entity_framework_core/official.py +10 -0
  31. executors/backend/go/__init__.py +0 -0
  32. executors/backend/go/echo/__init__.py +0 -0
  33. executors/backend/go/echo/docker.py +10 -0
  34. executors/backend/go/echo/gorm.py +11 -0
  35. executors/backend/go/echo/jwt_auth.py +10 -0
  36. executors/backend/go/echo/official.py +10 -0
  37. executors/backend/go/echo/rest_api.py +10 -0
  38. executors/backend/go/echo/testing.py +10 -0
  39. executors/backend/go/gin/__init__.py +0 -0
  40. executors/backend/go/gin/docker.py +10 -0
  41. executors/backend/go/gin/gorm.py +11 -0
  42. executors/backend/go/gin/jwt_auth.py +10 -0
  43. executors/backend/go/gin/official.py +10 -0
  44. executors/backend/go/gin/rest_api.py +10 -0
  45. executors/backend/go/gin/testing.py +10 -0
  46. executors/backend/java/__init__.py +0 -0
  47. executors/backend/java/micronaut/__init__.py +0 -0
  48. executors/backend/java/micronaut/data_jpa.py +10 -0
  49. executors/backend/java/micronaut/docker.py +10 -0
  50. executors/backend/java/micronaut/jwt_auth.py +10 -0
  51. executors/backend/java/micronaut/official.py +10 -0
  52. executors/backend/java/micronaut/rest_api.py +10 -0
  53. executors/backend/java/micronaut/testing.py +10 -0
  54. executors/backend/java/quarkus/__init__.py +0 -0
  55. executors/backend/java/quarkus/docker.py +10 -0
  56. executors/backend/java/quarkus/hibernate_panache.py +11 -0
  57. executors/backend/java/quarkus/jwt_auth.py +10 -0
  58. executors/backend/java/quarkus/official.py +10 -0
  59. executors/backend/java/quarkus/rest_api.py +10 -0
  60. executors/backend/java/quarkus/testing.py +10 -0
  61. executors/backend/java/spring_boot/__init__.py +0 -0
  62. executors/backend/java/spring_boot/docker.py +10 -0
  63. executors/backend/java/spring_boot/graphql.py +10 -0
  64. executors/backend/java/spring_boot/jpa.py +11 -0
  65. executors/backend/java/spring_boot/jwt_auth.py +10 -0
  66. executors/backend/java/spring_boot/official.py +10 -0
  67. executors/backend/java/spring_boot/rest_api.py +10 -0
  68. executors/backend/java/spring_boot/testing.py +10 -0
  69. executors/backend/java/spring_boot/websockets.py +10 -0
  70. executors/backend/javascript/__init__.py +0 -0
  71. executors/backend/javascript/fastify/__init__.py +0 -0
  72. executors/backend/javascript/fastify/docker.py +10 -0
  73. executors/backend/javascript/fastify/jwt_auth.py +10 -0
  74. executors/backend/javascript/fastify/official.py +10 -0
  75. executors/backend/javascript/fastify/prisma.py +10 -0
  76. executors/backend/javascript/fastify/rest_api.py +10 -0
  77. executors/backend/javascript/fastify/testing.py +10 -0
  78. executors/backend/javascript/nestjs/__init__.py +0 -0
  79. executors/backend/javascript/nestjs/docker.py +10 -0
  80. executors/backend/javascript/nestjs/graphql.py +10 -0
  81. executors/backend/javascript/nestjs/jwt_auth.py +10 -0
  82. executors/backend/javascript/nestjs/official.py +10 -0
  83. executors/backend/javascript/nestjs/rest_api.py +10 -0
  84. executors/backend/javascript/nestjs/testing.py +10 -0
  85. executors/backend/javascript/nestjs/typeorm.py +10 -0
  86. executors/backend/javascript/nestjs/websockets.py +10 -0
  87. executors/backend/python/__init__.py +0 -0
  88. executors/backend/python/django/__init__.py +0 -0
  89. executors/backend/python/django/background_tasks_celery.py +11 -0
  90. executors/backend/python/django/ci_cd_github_actions.py +10 -0
  91. executors/backend/python/django/custom_auth.py +57 -0
  92. executors/backend/python/django/docker.py +57 -0
  93. executors/backend/python/django/environment_config.py +10 -0
  94. executors/backend/python/django/logging_and_monitoring.py +10 -0
  95. executors/backend/python/django/official.py +214 -0
  96. executors/backend/python/django/official_configure_app.py +270 -0
  97. executors/backend/python/django/postgresql.py +58 -0
  98. executors/backend/python/django/rest_framework.py +57 -0
  99. executors/backend/python/django/static_files.py +10 -0
  100. executors/backend/python/django/testing_pytest.py +10 -0
  101. executors/backend/python/django/websockets_channels.py +10 -0
  102. executors/backend/python/fastapi/__init__.py +0 -0
  103. executors/backend/python/fastapi/celery.py +11 -0
  104. executors/backend/python/fastapi/docker.py +11 -0
  105. executors/backend/python/fastapi/jwt_auth.py +11 -0
  106. executors/backend/python/fastapi/official.py +10 -0
  107. executors/backend/python/fastapi/pytest.py +10 -0
  108. executors/backend/python/fastapi/sqlalchemy.py +11 -0
  109. executors/backend/python/fastapi/tortoise_orm.py +11 -0
  110. executors/backend/python/fastapi/websockets.py +10 -0
  111. executors/backend/python/htmx/__init__.py +0 -0
  112. executors/backend/python/htmx/alpine_js.py +10 -0
  113. executors/backend/python/htmx/auth.py +10 -0
  114. executors/backend/python/htmx/docker.py +11 -0
  115. executors/backend/python/htmx/form_validation.py +10 -0
  116. executors/backend/python/htmx/official.py +10 -0
  117. executors/backend/python/htmx/tailwind_css.py +10 -0
  118. executors/backend/python/htmx/websockets.py +10 -0
  119. executors/backend/rust/__init__.py +0 -0
  120. executors/backend/rust/actix/__init__.py +0 -0
  121. executors/backend/rust/actix/docker.py +10 -0
  122. executors/backend/rust/actix/jwt_auth.py +10 -0
  123. executors/backend/rust/actix/official.py +10 -0
  124. executors/backend/rust/actix/rest_api.py +10 -0
  125. executors/backend/rust/actix/sqlx.py +10 -0
  126. executors/backend/rust/actix/testing.py +10 -0
  127. executors/backend/rust/rocket/__init__.py +0 -0
  128. executors/backend/rust/rocket/diesel.py +10 -0
  129. executors/backend/rust/rocket/docker.py +10 -0
  130. executors/backend/rust/rocket/official.py +10 -0
  131. executors/backend/rust/rocket/rest_api.py +10 -0
  132. executors/backend/rust/rocket/testing.py +10 -0
  133. executors/base.py +200 -0
  134. executors/frontend/__init__.py +0 -0
  135. executors/frontend/dart/__init__.py +0 -0
  136. executors/frontend/dart/flutter/__init__.py +0 -0
  137. executors/frontend/dart/flutter/bloc.py +10 -0
  138. executors/frontend/dart/flutter/firebase.py +10 -0
  139. executors/frontend/dart/flutter/navigation.py +10 -0
  140. executors/frontend/dart/flutter/official.py +10 -0
  141. executors/frontend/dart/flutter/provider.py +10 -0
  142. executors/frontend/dart/flutter/testing.py +10 -0
  143. executors/frontend/javascript/__init__.py +0 -0
  144. executors/frontend/javascript/angular/__init__.py +0 -0
  145. executors/frontend/javascript/angular/official.py +10 -0
  146. executors/frontend/javascript/angular/routing.py +10 -0
  147. executors/frontend/javascript/angular/services.py +10 -0
  148. executors/frontend/javascript/angular/tailwind_css.py +10 -0
  149. executors/frontend/javascript/angular/testing.py +10 -0
  150. executors/frontend/javascript/react/__init__.py +0 -0
  151. executors/frontend/javascript/react/official.py +10 -0
  152. executors/frontend/javascript/react/react_router.py +10 -0
  153. executors/frontend/javascript/react/redux_toolkit.py +10 -0
  154. executors/frontend/javascript/react/tailwind_css.py +10 -0
  155. executors/frontend/javascript/react/testing.py +10 -0
  156. executors/frontend/javascript/svelte/__init__.py +0 -0
  157. executors/frontend/javascript/svelte/official.py +10 -0
  158. executors/frontend/javascript/svelte/tailwind_css.py +10 -0
  159. executors/frontend/javascript/svelte/testing.py +10 -0
  160. executors/frontend/javascript/svelte/vite.py +10 -0
  161. executors/frontend/javascript/vanilla_js/__init__.py +0 -0
  162. executors/frontend/javascript/vanilla_js/basic.py +10 -0
  163. executors/frontend/javascript/vanilla_js/testing.py +10 -0
  164. executors/frontend/javascript/vanilla_js/vite.py +10 -0
  165. executors/frontend/javascript/vanilla_js/webpack.py +10 -0
  166. executors/frontend/javascript/vue/__init__.py +0 -0
  167. executors/frontend/javascript/vue/official.py +10 -0
  168. executors/frontend/javascript/vue/pinia.py +10 -0
  169. executors/frontend/javascript/vue/tailwind_css.py +10 -0
  170. executors/frontend/javascript/vue/testing.py +10 -0
  171. executors/frontend/javascript/vue/vue_router.py +10 -0
  172. executors/frontend/kotlin/__init__.py +0 -0
  173. executors/frontend/kotlin/android/__init__.py +0 -0
  174. executors/frontend/kotlin/android/hilt.py +10 -0
  175. executors/frontend/kotlin/android/mvvm.py +10 -0
  176. executors/frontend/kotlin/android/navigation.py +10 -0
  177. executors/frontend/kotlin/android/official.py +10 -0
  178. executors/frontend/kotlin/android/room_db.py +10 -0
  179. executors/frontend/kotlin/android/testing.py +10 -0
  180. executors/frontend/kotlin/compose/__init__.py +0 -0
  181. executors/frontend/kotlin/compose/navigation.py +10 -0
  182. executors/frontend/kotlin/compose/official.py +10 -0
  183. executors/frontend/kotlin/compose/room_db.py +10 -0
  184. executors/frontend/kotlin/compose/testing.py +10 -0
  185. executors/frontend/kotlin/compose/viewmodel.py +10 -0
  186. executors/frontend/swift/__init__.py +0 -0
  187. executors/frontend/swift/swiftui/__init__.py +0 -0
  188. executors/frontend/swift/swiftui/core_data.py +10 -0
  189. executors/frontend/swift/swiftui/mvvm.py +10 -0
  190. executors/frontend/swift/swiftui/navigation.py +10 -0
  191. executors/frontend/swift/swiftui/official.py +10 -0
  192. executors/frontend/swift/swiftui/testing.py +10 -0
  193. executors/frontend/swift/uikit/__init__.py +0 -0
  194. executors/frontend/swift/uikit/core_data.py +10 -0
  195. executors/frontend/swift/uikit/mvvm.py +10 -0
  196. executors/frontend/swift/uikit/official.py +10 -0
  197. executors/frontend/swift/uikit/storyboard.py +10 -0
  198. executors/frontend/swift/uikit/testing.py +10 -0
  199. executors/frontend/typescript/__init__.py +0 -0
  200. executors/frontend/typescript/angular/__init__.py +0 -0
  201. executors/frontend/typescript/angular/ngrx.py +10 -0
  202. executors/frontend/typescript/angular/official.py +10 -0
  203. executors/frontend/typescript/angular/routing.py +10 -0
  204. executors/frontend/typescript/angular/tailwind_css.py +10 -0
  205. executors/frontend/typescript/angular/testing.py +10 -0
  206. executors/frontend/typescript/react/__init__.py +0 -0
  207. executors/frontend/typescript/react/official.py +10 -0
  208. executors/frontend/typescript/react/react_router.py +10 -0
  209. executors/frontend/typescript/react/redux_toolkit.py +10 -0
  210. executors/frontend/typescript/react/tailwind_css.py +10 -0
  211. executors/frontend/typescript/react/testing.py +10 -0
  212. executors/frontend/typescript/svelte/__init__.py +0 -0
  213. executors/frontend/typescript/svelte/official.py +10 -0
  214. executors/frontend/typescript/svelte/sveltekit.py +10 -0
  215. executors/frontend/typescript/svelte/tailwind_css.py +10 -0
  216. executors/frontend/typescript/svelte/testing.py +10 -0
  217. executors/frontend/typescript/vanilla_ts/__init__.py +0 -0
  218. executors/frontend/typescript/vanilla_ts/basic.py +10 -0
  219. executors/frontend/typescript/vanilla_ts/testing.py +10 -0
  220. executors/frontend/typescript/vanilla_ts/vite.py +10 -0
  221. executors/frontend/typescript/vanilla_ts/webpack.py +10 -0
  222. executors/frontend/typescript/vue/__init__.py +0 -0
  223. executors/frontend/typescript/vue/official.py +10 -0
  224. executors/frontend/typescript/vue/pinia.py +10 -0
  225. executors/frontend/typescript/vue/tailwind_css.py +10 -0
  226. executors/frontend/typescript/vue/testing.py +10 -0
  227. executors/frontend/typescript/vue/vue_router.py +10 -0
  228. executors/fullstack/__init__.py +0 -0
  229. executors/fullstack/django_react/__init__.py +0 -0
  230. executors/fullstack/django_react/docker.py +10 -0
  231. executors/fullstack/django_react/jwt_auth.py +10 -0
  232. executors/fullstack/django_react/official.py +10 -0
  233. executors/fullstack/django_react/rest_framework.py +10 -0
  234. executors/fullstack/django_react/vite.py +10 -0
  235. executors/fullstack/mern_stack/__init__.py +0 -0
  236. executors/fullstack/mern_stack/docker.py +10 -0
  237. executors/fullstack/mern_stack/jwt_auth.py +10 -0
  238. executors/fullstack/mern_stack/official.py +10 -0
  239. executors/fullstack/mern_stack/testing.py +10 -0
  240. executors/fullstack/mern_stack/typescript.py +10 -0
  241. executors/ssr/__init__.py +0 -0
  242. executors/ssr/astro/__init__.py +0 -0
  243. executors/ssr/astro/docker.py +10 -0
  244. executors/ssr/astro/official.py +10 -0
  245. executors/ssr/astro/react_integration.py +10 -0
  246. executors/ssr/astro/tailwind_css.py +10 -0
  247. executors/ssr/astro/testing.py +10 -0
  248. executors/ssr/astro/vue_integration.py +10 -0
  249. executors/ssr/remix/__init__.py +0 -0
  250. executors/ssr/remix/docker.py +10 -0
  251. executors/ssr/remix/official.py +10 -0
  252. executors/ssr/remix/prisma.py +10 -0
  253. executors/ssr/remix/tailwind_css.py +10 -0
  254. executors/ssr/remix/testing.py +10 -0
  255. executors/ssr/sveltekit/__init__.py +0 -0
  256. executors/ssr/sveltekit/docker.py +10 -0
  257. executors/ssr/sveltekit/official.py +10 -0
  258. executors/ssr/sveltekit/prisma.py +10 -0
  259. executors/ssr/sveltekit/tailwind_css.py +10 -0
  260. executors/ssr/sveltekit/testing.py +10 -0
  261. processors/__init__.py +0 -0
  262. processors/get_inquirer.py +32 -0
  263. processors/handle_answers.py +86 -0
  264. processors/load_questions.py +68 -0
  265. questions/__init__.py +0 -0
  266. questions/backend/__init__.py +0 -0
  267. questions/backend/base.json +25 -0
  268. questions/backend/c/__init__.py +0 -0
  269. questions/backend/c/base.json +11 -0
  270. questions/backend/c/minimal/__init__.py +0 -0
  271. questions/backend/c/minimal/base.json +1 -0
  272. questions/backend/c/minimal/basic.json +9 -0
  273. questions/backend/c/minimal/cmake.json +9 -0
  274. questions/backend/c/minimal/docker.json +9 -0
  275. questions/backend/cpp/__init__.py +0 -0
  276. questions/backend/cpp/base.json +11 -0
  277. questions/backend/cpp/crow/__init__.py +0 -0
  278. questions/backend/cpp/crow/base.json +1 -0
  279. questions/backend/cpp/crow/docker.json +9 -0
  280. questions/backend/cpp/crow/official.json +9 -0
  281. questions/backend/cpp/crow/rest_api.json +9 -0
  282. questions/backend/cpp/crow/ssl.json +9 -0
  283. questions/backend/csharp/__init__.py +0 -0
  284. questions/backend/csharp/base.json +13 -0
  285. questions/backend/csharp/entity_framework_core/__init__.py +0 -0
  286. questions/backend/csharp/entity_framework_core/base.json +7 -0
  287. questions/backend/csharp/entity_framework_core/code_first.json +9 -0
  288. questions/backend/csharp/entity_framework_core/database_first.json +9 -0
  289. questions/backend/csharp/entity_framework_core/docker.json +9 -0
  290. questions/backend/csharp/entity_framework_core/migrations.json +9 -0
  291. questions/backend/csharp/entity_framework_core/official.json +9 -0
  292. questions/backend/go/__init__.py +0 -0
  293. questions/backend/go/base.json +13 -0
  294. questions/backend/go/echo/__init__.py +0 -0
  295. questions/backend/go/echo/base.json +1 -0
  296. questions/backend/go/echo/docker.json +9 -0
  297. questions/backend/go/echo/gorm.json +9 -0
  298. questions/backend/go/echo/jwt_auth.json +9 -0
  299. questions/backend/go/echo/official.json +9 -0
  300. questions/backend/go/echo/rest_api.json +9 -0
  301. questions/backend/go/echo/testing.json +9 -0
  302. questions/backend/go/gin/__init__.py +0 -0
  303. questions/backend/go/gin/base.json +1 -0
  304. questions/backend/go/gin/docker.json +9 -0
  305. questions/backend/go/gin/gorm.json +9 -0
  306. questions/backend/go/gin/jwt_auth.json +9 -0
  307. questions/backend/go/gin/official.json +9 -0
  308. questions/backend/go/gin/rest_api.json +9 -0
  309. questions/backend/go/gin/testing.json +9 -0
  310. questions/backend/java/__init__.py +0 -0
  311. questions/backend/java/base.json +15 -0
  312. questions/backend/java/micronaut/__init__.py +0 -0
  313. questions/backend/java/micronaut/base.json +7 -0
  314. questions/backend/java/micronaut/data_jpa.json +9 -0
  315. questions/backend/java/micronaut/docker.json +9 -0
  316. questions/backend/java/micronaut/jwt_auth.json +9 -0
  317. questions/backend/java/micronaut/official.json +9 -0
  318. questions/backend/java/micronaut/rest_api.json +9 -0
  319. questions/backend/java/micronaut/testing.json +9 -0
  320. questions/backend/java/quarkus/__init__.py +0 -0
  321. questions/backend/java/quarkus/base.json +1 -0
  322. questions/backend/java/quarkus/docker.json +9 -0
  323. questions/backend/java/quarkus/hibernate_panache.json +9 -0
  324. questions/backend/java/quarkus/jwt_auth.json +9 -0
  325. questions/backend/java/quarkus/official.json +9 -0
  326. questions/backend/java/quarkus/rest_api.json +9 -0
  327. questions/backend/java/quarkus/testing.json +9 -0
  328. questions/backend/java/spring_boot/__init__.py +0 -0
  329. questions/backend/java/spring_boot/base.json +1 -0
  330. questions/backend/java/spring_boot/docker.json +9 -0
  331. questions/backend/java/spring_boot/graphql.json +9 -0
  332. questions/backend/java/spring_boot/jpa.json +9 -0
  333. questions/backend/java/spring_boot/jwt_auth.json +9 -0
  334. questions/backend/java/spring_boot/official.json +9 -0
  335. questions/backend/java/spring_boot/rest_api.json +9 -0
  336. questions/backend/java/spring_boot/testing.json +9 -0
  337. questions/backend/java/spring_boot/websockets.json +9 -0
  338. questions/backend/javascript/__init__.py +0 -0
  339. questions/backend/javascript/base.json +15 -0
  340. questions/backend/javascript/fastify/__init__.py +0 -0
  341. questions/backend/javascript/fastify/base.json +7 -0
  342. questions/backend/javascript/fastify/docker.json +9 -0
  343. questions/backend/javascript/fastify/jwt_auth.json +9 -0
  344. questions/backend/javascript/fastify/official.json +9 -0
  345. questions/backend/javascript/fastify/prisma.json +9 -0
  346. questions/backend/javascript/fastify/rest_api.json +9 -0
  347. questions/backend/javascript/fastify/testing.json +9 -0
  348. questions/backend/javascript/nestjs/__init__.py +0 -0
  349. questions/backend/javascript/nestjs/base.json +7 -0
  350. questions/backend/javascript/nestjs/docker.json +9 -0
  351. questions/backend/javascript/nestjs/graphql.json +9 -0
  352. questions/backend/javascript/nestjs/jwt_auth.json +9 -0
  353. questions/backend/javascript/nestjs/official.json +9 -0
  354. questions/backend/javascript/nestjs/rest_api.json +9 -0
  355. questions/backend/javascript/nestjs/testing.json +9 -0
  356. questions/backend/javascript/nestjs/typeorm.json +9 -0
  357. questions/backend/javascript/nestjs/websockets.json +9 -0
  358. questions/backend/python/__init__.py +0 -0
  359. questions/backend/python/base.json +15 -0
  360. questions/backend/python/django/__init__.py +0 -0
  361. questions/backend/python/django/background_tasks_celery.json +10 -0
  362. questions/backend/python/django/base.json +21 -0
  363. questions/backend/python/django/ci_cd_github_actions.json +9 -0
  364. questions/backend/python/django/custom_auth.json +26 -0
  365. questions/backend/python/django/docker.json +26 -0
  366. questions/backend/python/django/environment_config.json +9 -0
  367. questions/backend/python/django/logging_and_monitoring.json +9 -0
  368. questions/backend/python/django/official.json +26 -0
  369. questions/backend/python/django/official_configure_app.json +26 -0
  370. questions/backend/python/django/postgresql.json +14 -0
  371. questions/backend/python/django/rest_framework.json +26 -0
  372. questions/backend/python/django/static_files.json +9 -0
  373. questions/backend/python/django/testing_pytest.json +9 -0
  374. questions/backend/python/django/websockets_channels.json +9 -0
  375. questions/backend/python/fastapi/__init__.py +0 -0
  376. questions/backend/python/fastapi/base.json +16 -0
  377. questions/backend/python/fastapi/celery.json +20 -0
  378. questions/backend/python/fastapi/docker.json +20 -0
  379. questions/backend/python/fastapi/jwt_auth.json +20 -0
  380. questions/backend/python/fastapi/official.json +14 -0
  381. questions/backend/python/fastapi/pytest.json +14 -0
  382. questions/backend/python/fastapi/sqlalchemy.json +20 -0
  383. questions/backend/python/fastapi/tortoise_orm.json +20 -0
  384. questions/backend/python/fastapi/websockets.json +14 -0
  385. questions/backend/python/htmx/__init__.py +0 -0
  386. questions/backend/python/htmx/alpine_js.json +14 -0
  387. questions/backend/python/htmx/auth.json +14 -0
  388. questions/backend/python/htmx/base.json +15 -0
  389. questions/backend/python/htmx/docker.json +20 -0
  390. questions/backend/python/htmx/form_validation.json +14 -0
  391. questions/backend/python/htmx/official.json +14 -0
  392. questions/backend/python/htmx/tailwind_css.json +14 -0
  393. questions/backend/python/htmx/websockets.json +14 -0
  394. questions/backend/rust/__init__.py +0 -0
  395. questions/backend/rust/actix/__init__.py +0 -0
  396. questions/backend/rust/actix/base.json +7 -0
  397. questions/backend/rust/actix/docker.json +9 -0
  398. questions/backend/rust/actix/jwt_auth.json +9 -0
  399. questions/backend/rust/actix/official.json +9 -0
  400. questions/backend/rust/actix/rest_api.json +9 -0
  401. questions/backend/rust/actix/sqlx.json +9 -0
  402. questions/backend/rust/actix/testing.json +9 -0
  403. questions/backend/rust/base.json +13 -0
  404. questions/backend/rust/rocket/__init__.py +0 -0
  405. questions/backend/rust/rocket/base.json +7 -0
  406. questions/backend/rust/rocket/diesel.json +9 -0
  407. questions/backend/rust/rocket/docker.json +9 -0
  408. questions/backend/rust/rocket/official.json +9 -0
  409. questions/backend/rust/rocket/rest_api.json +9 -0
  410. questions/backend/rust/rocket/testing.json +9 -0
  411. questions/base.json +20 -0
  412. questions/frontend/__init__.py +0 -0
  413. questions/frontend/base.json +19 -0
  414. questions/frontend/dart/__init__.py +0 -0
  415. questions/frontend/dart/base.json +11 -0
  416. questions/frontend/dart/flutter/__init__.py +0 -0
  417. questions/frontend/dart/flutter/base.json +1 -0
  418. questions/frontend/dart/flutter/bloc.json +9 -0
  419. questions/frontend/dart/flutter/firebase.json +9 -0
  420. questions/frontend/dart/flutter/navigation.json +9 -0
  421. questions/frontend/dart/flutter/official.json +9 -0
  422. questions/frontend/dart/flutter/provider.json +9 -0
  423. questions/frontend/dart/flutter/testing.json +9 -0
  424. questions/frontend/javascript/__init__.py +0 -0
  425. questions/frontend/javascript/angular/__init__.py +0 -0
  426. questions/frontend/javascript/angular/base.json +1 -0
  427. questions/frontend/javascript/angular/official.json +9 -0
  428. questions/frontend/javascript/angular/routing.json +9 -0
  429. questions/frontend/javascript/angular/services.json +9 -0
  430. questions/frontend/javascript/angular/tailwind_css.json +9 -0
  431. questions/frontend/javascript/angular/testing.json +9 -0
  432. questions/frontend/javascript/base.json +19 -0
  433. questions/frontend/javascript/react/__init__.py +0 -0
  434. questions/frontend/javascript/react/base.json +1 -0
  435. questions/frontend/javascript/react/official.json +9 -0
  436. questions/frontend/javascript/react/react_router.json +9 -0
  437. questions/frontend/javascript/react/redux_toolkit.json +9 -0
  438. questions/frontend/javascript/react/tailwind_css.json +9 -0
  439. questions/frontend/javascript/react/testing.json +9 -0
  440. questions/frontend/javascript/svelte/__init__.py +0 -0
  441. questions/frontend/javascript/svelte/base.json +1 -0
  442. questions/frontend/javascript/svelte/official.json +9 -0
  443. questions/frontend/javascript/svelte/tailwind_css.json +9 -0
  444. questions/frontend/javascript/svelte/testing.json +9 -0
  445. questions/frontend/javascript/svelte/vite.json +9 -0
  446. questions/frontend/javascript/vanilla_js/__init__.py +0 -0
  447. questions/frontend/javascript/vanilla_js/base.json +12 -0
  448. questions/frontend/javascript/vanilla_js/basic.json +14 -0
  449. questions/frontend/javascript/vanilla_js/testing.json +14 -0
  450. questions/frontend/javascript/vanilla_js/vite.json +14 -0
  451. questions/frontend/javascript/vanilla_js/webpack.json +14 -0
  452. questions/frontend/javascript/vue/__init__.py +0 -0
  453. questions/frontend/javascript/vue/base.json +1 -0
  454. questions/frontend/javascript/vue/official.json +9 -0
  455. questions/frontend/javascript/vue/pinia.json +9 -0
  456. questions/frontend/javascript/vue/tailwind_css.json +9 -0
  457. questions/frontend/javascript/vue/testing.json +9 -0
  458. questions/frontend/javascript/vue/vue_router.json +9 -0
  459. questions/frontend/kotlin/__init__.py +0 -0
  460. questions/frontend/kotlin/android/__init__.py +0 -0
  461. questions/frontend/kotlin/android/base.json +1 -0
  462. questions/frontend/kotlin/android/hilt.json +9 -0
  463. questions/frontend/kotlin/android/mvvm.json +9 -0
  464. questions/frontend/kotlin/android/navigation.json +9 -0
  465. questions/frontend/kotlin/android/official.json +9 -0
  466. questions/frontend/kotlin/android/room_db.json +9 -0
  467. questions/frontend/kotlin/android/testing.json +9 -0
  468. questions/frontend/kotlin/base.json +13 -0
  469. questions/frontend/kotlin/compose/__init__.py +0 -0
  470. questions/frontend/kotlin/compose/base.json +1 -0
  471. questions/frontend/kotlin/compose/navigation.json +9 -0
  472. questions/frontend/kotlin/compose/official.json +9 -0
  473. questions/frontend/kotlin/compose/room_db.json +9 -0
  474. questions/frontend/kotlin/compose/testing.json +9 -0
  475. questions/frontend/kotlin/compose/viewmodel.json +9 -0
  476. questions/frontend/swift/__init__.py +0 -0
  477. questions/frontend/swift/base.json +13 -0
  478. questions/frontend/swift/swiftui/__init__.py +0 -0
  479. questions/frontend/swift/swiftui/base.json +1 -0
  480. questions/frontend/swift/swiftui/core_data.json +9 -0
  481. questions/frontend/swift/swiftui/mvvm.json +9 -0
  482. questions/frontend/swift/swiftui/navigation.json +9 -0
  483. questions/frontend/swift/swiftui/official.json +9 -0
  484. questions/frontend/swift/swiftui/testing.json +9 -0
  485. questions/frontend/swift/uikit/__init__.py +0 -0
  486. questions/frontend/swift/uikit/base.json +1 -0
  487. questions/frontend/swift/uikit/core_data.json +9 -0
  488. questions/frontend/swift/uikit/mvvm.json +9 -0
  489. questions/frontend/swift/uikit/official.json +9 -0
  490. questions/frontend/swift/uikit/storyboard.json +9 -0
  491. questions/frontend/swift/uikit/testing.json +9 -0
  492. questions/frontend/typescript/__init__.py +0 -0
  493. questions/frontend/typescript/angular/__init__.py +0 -0
  494. questions/frontend/typescript/angular/base.json +1 -0
  495. questions/frontend/typescript/angular/ngrx.json +9 -0
  496. questions/frontend/typescript/angular/official.json +9 -0
  497. questions/frontend/typescript/angular/routing.json +9 -0
  498. questions/frontend/typescript/angular/tailwind_css.json +9 -0
  499. questions/frontend/typescript/angular/testing.json +9 -0
  500. questions/frontend/typescript/base.json +19 -0
  501. questions/frontend/typescript/react/__init__.py +0 -0
  502. questions/frontend/typescript/react/base.json +1 -0
  503. questions/frontend/typescript/react/official.json +9 -0
  504. questions/frontend/typescript/react/react_router.json +9 -0
  505. questions/frontend/typescript/react/redux_toolkit.json +9 -0
  506. questions/frontend/typescript/react/tailwind_css.json +9 -0
  507. questions/frontend/typescript/react/testing.json +9 -0
  508. questions/frontend/typescript/svelte/__init__.py +0 -0
  509. questions/frontend/typescript/svelte/base.json +1 -0
  510. questions/frontend/typescript/svelte/official.json +9 -0
  511. questions/frontend/typescript/svelte/sveltekit.json +9 -0
  512. questions/frontend/typescript/svelte/tailwind_css.json +9 -0
  513. questions/frontend/typescript/svelte/testing.json +9 -0
  514. questions/frontend/typescript/vanilla_ts/__init__.py +0 -0
  515. questions/frontend/typescript/vanilla_ts/base.json +12 -0
  516. questions/frontend/typescript/vanilla_ts/basic.json +14 -0
  517. questions/frontend/typescript/vanilla_ts/testing.json +14 -0
  518. questions/frontend/typescript/vanilla_ts/vite.json +14 -0
  519. questions/frontend/typescript/vanilla_ts/webpack.json +14 -0
  520. questions/frontend/typescript/vue/__init__.py +0 -0
  521. questions/frontend/typescript/vue/base.json +1 -0
  522. questions/frontend/typescript/vue/official.json +9 -0
  523. questions/frontend/typescript/vue/pinia.json +9 -0
  524. questions/frontend/typescript/vue/tailwind_css.json +9 -0
  525. questions/frontend/typescript/vue/testing.json +9 -0
  526. questions/frontend/typescript/vue/vue_router.json +9 -0
  527. questions/fullstack/__init__.py +0 -0
  528. questions/fullstack/base.json +15 -0
  529. questions/fullstack/django_react/__init__.py +0 -0
  530. questions/fullstack/django_react/base.json +1 -0
  531. questions/fullstack/django_react/docker.json +9 -0
  532. questions/fullstack/django_react/jwt_auth.json +9 -0
  533. questions/fullstack/django_react/official.json +9 -0
  534. questions/fullstack/django_react/rest_framework.json +9 -0
  535. questions/fullstack/django_react/vite.json +9 -0
  536. questions/fullstack/mern_stack/__init__.py +0 -0
  537. questions/fullstack/mern_stack/base.json +1 -0
  538. questions/fullstack/mern_stack/docker.json +9 -0
  539. questions/fullstack/mern_stack/jwt_auth.json +9 -0
  540. questions/fullstack/mern_stack/official.json +9 -0
  541. questions/fullstack/mern_stack/testing.json +9 -0
  542. questions/fullstack/mern_stack/typescript.json +9 -0
  543. questions/ssr/__init__.py +0 -0
  544. questions/ssr/astro/__init__.py +0 -0
  545. questions/ssr/astro/base.json +1 -0
  546. questions/ssr/astro/docker.json +9 -0
  547. questions/ssr/astro/official.json +9 -0
  548. questions/ssr/astro/react_integration.json +9 -0
  549. questions/ssr/astro/tailwind_css.json +9 -0
  550. questions/ssr/astro/testing.json +9 -0
  551. questions/ssr/astro/vue_integration.json +9 -0
  552. questions/ssr/base.json +19 -0
  553. questions/ssr/remix/__init__.py +0 -0
  554. questions/ssr/remix/base.json +1 -0
  555. questions/ssr/remix/docker.json +9 -0
  556. questions/ssr/remix/official.json +9 -0
  557. questions/ssr/remix/prisma.json +9 -0
  558. questions/ssr/remix/tailwind_css.json +9 -0
  559. questions/ssr/remix/testing.json +9 -0
  560. questions/ssr/sveltekit/__init__.py +0 -0
  561. questions/ssr/sveltekit/base.json +1 -0
  562. questions/ssr/sveltekit/docker.json +9 -0
  563. questions/ssr/sveltekit/official.json +9 -0
  564. questions/ssr/sveltekit/prisma.json +9 -0
  565. questions/ssr/sveltekit/tailwind_css.json +9 -0
  566. questions/ssr/sveltekit/testing.json +9 -0
  567. scripts/__init__.py +0 -0
  568. scripts/scaffolder/__init__.py +0 -0
  569. scripts/scaffolder/scaffolder.py +132 -0
  570. typings/__init__.py +0 -0
  571. typings/base.py +46 -0
  572. typings/question.py +48 -0
  573. utils/__init__.py +0 -0
  574. utils/base.py +234 -0
  575. utils/env.py +65 -0
constants/__init__.py ADDED
File without changes
File without changes
File without changes
@@ -0,0 +1,16 @@
1
+ DJANGO_APP_URL_CONFIG = (
2
+ f"from django.urls import path\n"
3
+ f"from views import hello\n\n"
4
+ f"urlpatterns = [\n"
5
+ f" path('', hello, name='hello'),\n"
6
+ f"]\n"
7
+ )
8
+
9
+ DJANGO_VIEW_FUNCTION_IMPORT_JSON_RESPONSE = "from django.http import JsonResponse\n\n"
10
+
11
+ DJANGO_VIEW_FUNCTION_MESSAGE = '{"success": True, "message": "hello"}'
12
+
13
+ DJANGO_VIEW_FUNCTION = (
14
+ f"def hello() -> JsonResponse:\n"
15
+ f" return JsonResponse({DJANGO_VIEW_FUNCTION_MESSAGE})"
16
+ )
@@ -0,0 +1,230 @@
1
+ Metadata-Version: 2.4
2
+ Name: dev-scaffolder
3
+ Version: 0.0.1
4
+ Summary: A dynamic, interactive CLI-based project generator with a tree-based question system and custom template executors.
5
+ Author-email: Faisal Issaka <phaisalsey6@gmail.com>
6
+ License-Expression: MIT AND (Apache-2.0 OR BSD-2-Clause)
7
+ Project-URL: Homepage, https://github.com/Faisal-Sey/dev-scaffolder
8
+ Project-URL: Issues, https://github.com/Faisal-Sey/dev-scaffolder/issues
9
+ Keywords: scaffolder,cli,project-generator,templates
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.8
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Software Development :: Code Generators
20
+ Requires-Python: >=3.8
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: ansicon==1.89.0
24
+ Requires-Dist: blessed==1.33.0
25
+ Requires-Dist: editor==1.7.0
26
+ Requires-Dist: inquirer==3.4.1
27
+ Requires-Dist: jinxed==1.3.0
28
+ Requires-Dist: markdown-it-py==4.0.0
29
+ Requires-Dist: mdurl==0.1.2
30
+ Requires-Dist: Pygments==2.19.2
31
+ Requires-Dist: python-dotenv==1.2.2
32
+ Requires-Dist: readchar==4.2.1
33
+ Requires-Dist: rich==14.3.3
34
+ Requires-Dist: runs==1.3.0
35
+ Requires-Dist: wcwidth==0.6.0
36
+ Requires-Dist: xmod==1.9.0
37
+ Dynamic: license-file
38
+
39
+ # Project Scaffolder
40
+
41
+ A dynamic, interactive CLI-based project generator that simplifies the process of scaffolding new projects through a tree-based question system and custom template executors.
42
+
43
+ ## Features
44
+
45
+ - **Interactive Question Tree**: Navigate through a logical hierarchy of choices defined in JSON.
46
+ - **Extensible Architecture**: Easily add new templates and questions by adding JSON files and Python executors.
47
+ - **Styled CLI Output**: Uses `rich` to provide a clean and professional command-line interface with panels, colors, and spinners.
48
+ - **Robust Input Handling**: Powered by `inquirer` for intuitive selections and confirmations.
49
+ - **Environment-Aware Output**: Projects and virtual environments are created in `temp/` during development, keeping generated files out of version control.
50
+ - **Base Executor Pattern**: All executors inherit from `BaseExecutor`, which provides a consistent lifecycle and a built-in loading spinner that automatically pauses around interactive prompts.
51
+
52
+ ## Installation
53
+
54
+ ### Prerequisites
55
+
56
+ - Python 3.8+
57
+
58
+ ### Setup
59
+
60
+ 1. Clone the repository:
61
+ ```bash
62
+ git clone <repository-url>
63
+ cd template
64
+ ```
65
+
66
+ 2. Install the required dependencies:
67
+ ```bash
68
+ pip install -r requirements.txt
69
+ ```
70
+
71
+ 3. Configure your environment by creating a `.env` file in the project root:
72
+ ```env
73
+ ENVIRONMENT=development
74
+ ```
75
+ Accepted values: `development`, `production`.
76
+
77
+ ## Usage
78
+
79
+ To start the project generation process, run the main scaffolder script:
80
+
81
+ ```bash
82
+ python scripts/scaffolder/scaffolder.py
83
+ ```
84
+
85
+ Follow the on-screen prompts to select your project type, language, and other configurations.
86
+
87
+ ## Project Structure
88
+
89
+ ```
90
+ template/
91
+ ├── .env # Environment configuration (ENVIRONMENT=development|production)
92
+ ├── questions/ # JSON files defining the question hierarchy
93
+ ├── executors/ # Executor classes for each supported framework
94
+ │ ├── base.py # BaseExecutor abstract class (lifecycle + spinner)
95
+ │ └── backend/
96
+ │ └── python/
97
+ │ └── django/ # Django-specific executors
98
+ ├── processors/ # Core logic: question loading, input handling, template resolution
99
+ ├── utils/
100
+ │ ├── base.py # Subprocess, file, and venv utilities
101
+ │ └── env.py # Environment detection and path resolution
102
+ ├── constants/ # Framework-specific code snippets and configuration strings
103
+ ├── typings/ # Shared type definitions and dataclasses
104
+ └── scripts/ # Entry points for running the scaffolder
105
+ ```
106
+
107
+ ## How It Works
108
+
109
+ 1. **Question Loading**: The system starts by loading `questions/base.json`.
110
+ 2. **Dynamic Traversal**: Based on user selection, it recursively loads child questions from the file system.
111
+ 3. **Template Resolution**: Once a leaf node (a final choice) is reached, the system identifies the corresponding executor in the `executors/` directory.
112
+ 4. **Execution**: The executor's `run()` method is called with the gathered parameters. It starts a loading spinner, delegates to `generate()`, and stops the spinner when done.
113
+
114
+ ## Environment Modes
115
+
116
+ The `ENVIRONMENT` variable in `.env` controls where generated output is placed.
117
+
118
+ | `ENVIRONMENT` | Project output | Virtual environment |
119
+ |---|---|---|
120
+ | `development` | `<project_root>/temp/` | `<project_root>/temp/venv/` |
121
+ | `production` | Current working directory | `<project_root>/venv/` |
122
+
123
+ The `temp/` directory is listed in `.gitignore` so development output is never committed.
124
+
125
+ ## Executor Architecture
126
+
127
+ All executors inherit from `BaseExecutor` (`executors/base.py`) and must implement:
128
+
129
+ | Method | Purpose |
130
+ |---|---|
131
+ | `get_venv_environment()` | Set up and return the venv Python path |
132
+ | `install_dependencies(venv_python_executor)` | Install framework packages |
133
+ | `execute_creation_commands(**kwargs)` | Orchestrate the full scaffold |
134
+ | `generate(**kwargs)` | Resolve arguments and drive the above steps |
135
+
136
+ `prepare_directory()` is provided as a concrete default on `BaseExecutor` — it creates the output directory or prompts the user to replace it if one already exists. Override it only if the executor needs different behaviour.
137
+
138
+ The public entry point is `run(**kwargs)`, which wraps `generate()` with a `rich` loading spinner. Use `self._stop_status()` / `self._start_status()` around any interactive `inquirer` prompts inside your executor to prevent the spinner from blocking user input. Use `self._update_status(message)` to update the spinner label as execution progresses through steps.
139
+
140
+ ### Adding a New Executor
141
+
142
+ 1. Create a JSON file in `questions/` defining the configuration options for the new template.
143
+ 2. Link it to the existing question tree via `questions/base.json`.
144
+ 3. Create a Python file in the corresponding `executors/` path and subclass `BaseExecutor`:
145
+
146
+ ```python
147
+ from src.executors.base import BaseExecutor
148
+ from typings.base import ExecutorResponseStatus
149
+
150
+
151
+ class MyFrameworkExecutor(BaseExecutor):
152
+
153
+ def get_venv_environment(self) -> str:
154
+ ...
155
+
156
+ def install_dependencies(self, venv_python_executor: str) -> ExecutorResponseStatus:
157
+ ...
158
+
159
+ def execute_creation_commands(self, **kwargs) -> ExecutorResponseStatus:
160
+ ...
161
+
162
+ def generate(self, **kwargs):
163
+ ...
164
+
165
+
166
+ if __name__ == '__main__':
167
+ args = MyFrameworkExecutor.build_arg_parser().parse_args()
168
+ MyFrameworkExecutor().run(**vars(args))
169
+ ```
170
+
171
+ ## Contributing
172
+
173
+ ### Branching
174
+
175
+ - `main` — stable branch; only merge via pull request
176
+ - Feature branches should follow the pattern: `feature/<short-description>` (e.g. `feature/fastapi-executor`)
177
+ - Bug fix branches: `fix/<short-description>` (e.g. `fix/venv-path-dev-mode`)
178
+
179
+ ### Workflow
180
+
181
+ 1. Fork or branch from `main`:
182
+ ```bash
183
+ git checkout -b feature/<short-description>
184
+ ```
185
+
186
+ 2. Set up your environment:
187
+ ```bash
188
+ pip install -r requirements.txt
189
+ cp .env.example .env # set ENVIRONMENT=development
190
+ ```
191
+
192
+ 3. Make your changes following the conventions below, then commit:
193
+ ```bash
194
+ git add <files>
195
+ git commit -m "feat: short description of change"
196
+ ```
197
+
198
+ 4. Push and open a pull request against `main`.
199
+
200
+ ### Adding a Question
201
+
202
+ Questions live in `questions/` as JSON files and mirror the `executors/` directory structure. Each file defines a node in the question tree:
203
+
204
+ ```json
205
+ {
206
+ "type": "list",
207
+ "name": "my_option",
208
+ "message": "Choose an option",
209
+ "choices": ["Option A", "Option B"],
210
+ "children": []
211
+ }
212
+ ```
213
+
214
+ Leaf nodes (no children) trigger executor resolution — the scaffolder maps the answer path directly to a file in `executors/`.
215
+
216
+ ### Adding an Executor
217
+
218
+ Follow the steps in [Adding a New Executor](#adding-a-new-executor) above. Additional conventions:
219
+
220
+ - Place the file at `executors/<category>/<language>/<framework>/<name>.py` to match the question path.
221
+ - Use `self.console` for all terminal output — never use `print()`.
222
+ - Use `self._update_status(message)` to label each distinct step in `execute_creation_commands`.
223
+ - Call `self._stop_status()` before any `inquirer.prompt()` and `self._start_status()` immediately after.
224
+ - All subprocess calls must use the venv Python executor (`get_venv_python_executor()`) rather than bare shell commands, so they work correctly in both `development` and `production` environments.
225
+
226
+ ### Code Style
227
+
228
+ - Follow PEP 8.
229
+ - All public methods must have docstrings with `:param:` and `:return:` annotations.
230
+ - Keep `utils/` functions generic and stateless — executor-specific logic belongs in the executor class.