fastix 0.1.5__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 (160) hide show
  1. fastix-0.1.5/.gitignore +9 -0
  2. fastix-0.1.5/LICENSE +21 -0
  3. fastix-0.1.5/PKG-INFO +187 -0
  4. fastix-0.1.5/README.md +149 -0
  5. fastix-0.1.5/pyproject.toml +94 -0
  6. fastix-0.1.5/src/fastix/__init__.py +5 -0
  7. fastix-0.1.5/src/fastix/cli/__init__.py +0 -0
  8. fastix-0.1.5/src/fastix/cli/main.py +408 -0
  9. fastix-0.1.5/src/fastix/cli/prompts.py +297 -0
  10. fastix-0.1.5/src/fastix/core/__init__.py +0 -0
  11. fastix-0.1.5/src/fastix/core/config.py +315 -0
  12. fastix-0.1.5/src/fastix/core/engine.py +382 -0
  13. fastix-0.1.5/src/fastix/core/registry.py +97 -0
  14. fastix-0.1.5/src/fastix/core/state.py +160 -0
  15. fastix-0.1.5/src/fastix/modules/__init__.py +5 -0
  16. fastix-0.1.5/src/fastix/modules/cicd/github_actions/templates/.github/workflows/ci.yml.j2 +20 -0
  17. fastix-0.1.5/src/fastix/modules/cicd/gitlab_ci/templates/.gitlab-ci.yml.j2 +11 -0
  18. fastix-0.1.5/src/fastix/modules/container/__init__.py +0 -0
  19. fastix-0.1.5/src/fastix/modules/container/docker/__init__.py +0 -0
  20. fastix-0.1.5/src/fastix/modules/container/docker/templates/.dockerignore.j2 +65 -0
  21. fastix-0.1.5/src/fastix/modules/container/docker/templates/Dockerfile.j2 +24 -0
  22. fastix-0.1.5/src/fastix/modules/container/docker/templates/docker-compose.yml.j2 +341 -0
  23. fastix-0.1.5/src/fastix/modules/container/podman/__init__.py +0 -0
  24. fastix-0.1.5/src/fastix/modules/container/podman/templates/Containerfile.j2 +24 -0
  25. fastix-0.1.5/src/fastix/modules/container/podman/templates/podman-compose.yml.j2 +268 -0
  26. fastix-0.1.5/src/fastix/modules/dapr/__init__.py +0 -0
  27. fastix-0.1.5/src/fastix/modules/dapr/templates/dapr/config.yaml.j2 +48 -0
  28. fastix-0.1.5/src/fastix/modules/dapr/templates/dapr/pubsub.yaml.j2 +64 -0
  29. fastix-0.1.5/src/fastix/modules/dapr/templates/dapr/statestore.yaml.j2 +29 -0
  30. fastix-0.1.5/src/fastix/modules/database/__init__.py +0 -0
  31. fastix-0.1.5/src/fastix/modules/database/mongodb/__init__.py +0 -0
  32. fastix-0.1.5/src/fastix/modules/database/mongodb/templates/__init__.py +0 -0
  33. fastix-0.1.5/src/fastix/modules/database/mysql/__init__.py +0 -0
  34. fastix-0.1.5/src/fastix/modules/database/mysql/templates/__init__.py +0 -0
  35. fastix-0.1.5/src/fastix/modules/database/postgres/__init__.py +0 -0
  36. fastix-0.1.5/src/fastix/modules/database/postgres/templates/__init__.py +0 -0
  37. fastix-0.1.5/src/fastix/modules/devtools/editor/templates/.editorconfig.j2 +67 -0
  38. fastix-0.1.5/src/fastix/modules/devtools/precommit/templates/.pre-commit-config.yaml.j2 +57 -0
  39. fastix-0.1.5/src/fastix/modules/messaging/__init__.py +0 -0
  40. fastix-0.1.5/src/fastix/modules/messaging/kafka/__init__.py +0 -0
  41. fastix-0.1.5/src/fastix/modules/messaging/kafka/templates/app/messaging/__init__.py.j2 +0 -0
  42. fastix-0.1.5/src/fastix/modules/messaging/kafka/templates/app/messaging/consumer.py.j2 +112 -0
  43. fastix-0.1.5/src/fastix/modules/messaging/kafka/templates/app/messaging/producer.py.j2 +125 -0
  44. fastix-0.1.5/src/fastix/modules/messaging/rabbitmq/__init__.py +0 -0
  45. fastix-0.1.5/src/fastix/modules/messaging/rabbitmq/templates/app/messaging/__init__.py.j2 +0 -0
  46. fastix-0.1.5/src/fastix/modules/messaging/rabbitmq/templates/app/messaging/consumer.py.j2 +127 -0
  47. fastix-0.1.5/src/fastix/modules/messaging/rabbitmq/templates/app/messaging/producer.py.j2 +138 -0
  48. fastix-0.1.5/src/fastix/modules/messaging/redis/__init__.py +0 -0
  49. fastix-0.1.5/src/fastix/modules/messaging/redis/templates/app/messaging/__init__.py.j2 +0 -0
  50. fastix-0.1.5/src/fastix/modules/messaging/redis/templates/app/messaging/redis_client.py.j2 +209 -0
  51. fastix-0.1.5/src/fastix/modules/orchestration/__init__.py +0 -0
  52. fastix-0.1.5/src/fastix/modules/orchestration/helm/__init__.py +0 -0
  53. fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/Chart.yaml.j2 +27 -0
  54. fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/templates/_helpers.tpl.j2 +69 -0
  55. fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/templates/configmap.yaml.j2 +16 -0
  56. fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/templates/deployment.yaml.j2 +76 -0
  57. fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/templates/ingress.yaml.j2 +47 -0
  58. fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/templates/service.yaml.j2 +21 -0
  59. fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/values.yaml.j2 +175 -0
  60. fastix-0.1.5/src/fastix/modules/orchestration/kustomize/__init__.py +0 -0
  61. fastix-0.1.5/src/fastix/modules/orchestration/kustomize/templates/k8s/base/deployment.yaml.j2 +84 -0
  62. fastix-0.1.5/src/fastix/modules/orchestration/kustomize/templates/k8s/base/kustomization.yaml.j2 +18 -0
  63. fastix-0.1.5/src/fastix/modules/orchestration/kustomize/templates/k8s/base/service.yaml.j2 +21 -0
  64. fastix-0.1.5/src/fastix/modules/orchestration/kustomize/templates/k8s/overlays/dev/kustomization.yaml.j2 +67 -0
  65. fastix-0.1.5/src/fastix/modules/orchestration/kustomize/templates/k8s/overlays/prod/kustomization.yaml.j2 +67 -0
  66. fastix-0.1.5/src/fastix/modules/orchestration/raw_manifests/__init__.py +0 -0
  67. fastix-0.1.5/src/fastix/modules/orchestration/raw_manifests/templates/k8s/deployment.yaml.j2 +140 -0
  68. fastix-0.1.5/src/fastix/modules/orchestration/raw_manifests/templates/k8s/namespace.yaml.j2 +13 -0
  69. fastix-0.1.5/src/fastix/modules/orchestration/raw_manifests/templates/k8s/service.yaml.j2 +24 -0
  70. fastix-0.1.5/src/fastix/modules/register.py +225 -0
  71. fastix-0.1.5/src/fastix/modules/scheduler/__init__.py +0 -0
  72. fastix-0.1.5/src/fastix/modules/scheduler/celery_beat/__init__.py +0 -0
  73. fastix-0.1.5/src/fastix/modules/scheduler/celery_beat/templates/app/workers/schedule.py.j2 +54 -0
  74. fastix-0.1.5/src/fastix/modules/scheduler/cronjob/__init__.py +0 -0
  75. fastix-0.1.5/src/fastix/modules/scheduler/cronjob/templates/k8s/cronjob.yaml.j2 +117 -0
  76. fastix-0.1.5/src/fastix/modules/scripting/justfile/templates/justfile.j2 +79 -0
  77. fastix-0.1.5/src/fastix/modules/scripting/makefile/templates/Makefile.j2 +110 -0
  78. fastix-0.1.5/src/fastix/modules/scripting/taskfile/templates/Taskfile.yml.j2 +116 -0
  79. fastix-0.1.5/src/fastix/modules/testing/factory_boy/templates/tests/factories/__init__.py.j2 +0 -0
  80. fastix-0.1.5/src/fastix/modules/testing/factory_boy/templates/tests/factories/base.py.j2 +120 -0
  81. fastix-0.1.5/src/fastix/modules/testing/pytest/templates/tests/__init__.py.j2 +0 -0
  82. fastix-0.1.5/src/fastix/modules/testing/pytest/templates/tests/conftest.py.j2 +19 -0
  83. fastix-0.1.5/src/fastix/modules/testing/pytest/templates/tests/test_health.py.j2 +16 -0
  84. fastix-0.1.5/src/fastix/modules/worker/__init__.py +0 -0
  85. fastix-0.1.5/src/fastix/modules/worker/celery/__init__.py +0 -0
  86. fastix-0.1.5/src/fastix/modules/worker/celery/templates/app/workers/__init__.py.j2 +0 -0
  87. fastix-0.1.5/src/fastix/modules/worker/celery/templates/app/workers/celery_app.py.j2 +57 -0
  88. fastix-0.1.5/src/fastix/modules/worker/celery/templates/app/workers/tasks.py.j2 +76 -0
  89. fastix-0.1.5/src/fastix/modules/worker/rq/__init__.py +0 -0
  90. fastix-0.1.5/src/fastix/modules/worker/rq/templates/app/workers/__init__.py.j2 +0 -0
  91. fastix-0.1.5/src/fastix/modules/worker/rq/templates/app/workers/rq_worker.py.j2 +67 -0
  92. fastix-0.1.5/src/fastix/modules/worker/rq/templates/app/workers/tasks.py.j2 +60 -0
  93. fastix-0.1.5/src/fastix/templates/microservices/.env.example.j2 +43 -0
  94. fastix-0.1.5/src/fastix/templates/microservices/.gitignore.j2 +10 -0
  95. fastix-0.1.5/src/fastix/templates/microservices/README.md.j2 +47 -0
  96. fastix-0.1.5/src/fastix/templates/microservices/_service_template/.env.example.j2 +2 -0
  97. fastix-0.1.5/src/fastix/templates/microservices/_service_template/__init__.py.j2 +1 -0
  98. fastix-0.1.5/src/fastix/templates/microservices/_service_template/alembic/env.py.j2 +37 -0
  99. fastix-0.1.5/src/fastix/templates/microservices/_service_template/alembic/script.py.mako.j2 +14 -0
  100. fastix-0.1.5/src/fastix/templates/microservices/_service_template/alembic/versions/.gitkeep.j2 +0 -0
  101. fastix-0.1.5/src/fastix/templates/microservices/_service_template/alembic.ini.j2 +5 -0
  102. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/__init__.py.j2 +0 -0
  103. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/api/__init__.py.j2 +0 -0
  104. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/api/v1/__init__.py.j2 +0 -0
  105. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/api/v1/endpoints/__init__.py.j2 +0 -0
  106. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/api/v1/endpoints/health.py.j2 +13 -0
  107. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/api/v1/router.py.j2 +6 -0
  108. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/application/__init__.py.j2 +1 -0
  109. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/core/__init__.py.j2 +0 -0
  110. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/core/config.py.j2 +12 -0
  111. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/db/__init__.py.j2 +0 -0
  112. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/db/session.py.j2 +99 -0
  113. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/domain/__init__.py.j2 +1 -0
  114. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/infrastructure/__init__.py.j2 +1 -0
  115. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/infrastructure/transports/__init__.py.j2 +1 -0
  116. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/infrastructure/transports/grpc.py.j2 +5 -0
  117. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/main.py.j2 +18 -0
  118. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/models/__init__.py.j2 +0 -0
  119. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/schemas/__init__.py.j2 +0 -0
  120. fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/services/__init__.py.j2 +0 -0
  121. fastix-0.1.5/src/fastix/templates/microservices/_service_template/contracts/grpc/service.proto.j2 +14 -0
  122. fastix-0.1.5/src/fastix/templates/microservices/_service_template/pyproject.toml.j2 +8 -0
  123. fastix-0.1.5/src/fastix/templates/microservices/pyproject.toml.j2 +35 -0
  124. fastix-0.1.5/src/fastix/templates/microservices/services/__init__.py.j2 +1 -0
  125. fastix-0.1.5/src/fastix/templates/microservices/shared/__init__.py.j2 +1 -0
  126. fastix-0.1.5/src/fastix/templates/microservices/shared/api/__init__.py.j2 +1 -0
  127. fastix-0.1.5/src/fastix/templates/microservices/shared/api/errors.py.j2 +32 -0
  128. fastix-0.1.5/src/fastix/templates/microservices/shared/api/responses.py.j2 +47 -0
  129. fastix-0.1.5/src/fastix/templates/microservices/shared/config.py.j2 +5 -0
  130. fastix-0.1.5/src/fastix/templates/microservices/shared/exceptions.py.j2 +5 -0
  131. fastix-0.1.5/src/fastix/templates/microservices/shared/logging.py.j2 +8 -0
  132. fastix-0.1.5/src/fastix/templates/microservices/shared/schemas.py.j2 +5 -0
  133. fastix-0.1.5/src/fastix/templates/monolith/.env.example.j2 +76 -0
  134. fastix-0.1.5/src/fastix/templates/monolith/.gitignore.j2 +12 -0
  135. fastix-0.1.5/src/fastix/templates/monolith/README.md.j2 +53 -0
  136. fastix-0.1.5/src/fastix/templates/monolith/alembic/env.py.j2 +37 -0
  137. fastix-0.1.5/src/fastix/templates/monolith/alembic/script.py.mako.j2 +14 -0
  138. fastix-0.1.5/src/fastix/templates/monolith/alembic/versions/.gitkeep.j2 +0 -0
  139. fastix-0.1.5/src/fastix/templates/monolith/alembic.ini.j2 +5 -0
  140. fastix-0.1.5/src/fastix/templates/monolith/app/__init__.py.j2 +2 -0
  141. fastix-0.1.5/src/fastix/templates/monolith/app/api/__init__.py.j2 +2 -0
  142. fastix-0.1.5/src/fastix/templates/monolith/app/api/deps.py.j2 +58 -0
  143. fastix-0.1.5/src/fastix/templates/monolith/app/api/v1/__init__.py.j2 +2 -0
  144. fastix-0.1.5/src/fastix/templates/monolith/app/api/v1/endpoints/__init__.py.j2 +2 -0
  145. fastix-0.1.5/src/fastix/templates/monolith/app/api/v1/endpoints/health.py.j2 +10 -0
  146. fastix-0.1.5/src/fastix/templates/monolith/app/api/v1/router.py.j2 +6 -0
  147. fastix-0.1.5/src/fastix/templates/monolith/app/core/__init__.py.j2 +2 -0
  148. fastix-0.1.5/src/fastix/templates/monolith/app/core/config.py.j2 +15 -0
  149. fastix-0.1.5/src/fastix/templates/monolith/app/core/exceptions.py.j2 +151 -0
  150. fastix-0.1.5/src/fastix/templates/monolith/app/db/__init__.py.j2 +2 -0
  151. fastix-0.1.5/src/fastix/templates/monolith/app/db/session.py.j2 +79 -0
  152. fastix-0.1.5/src/fastix/templates/monolith/app/main.py.j2 +30 -0
  153. fastix-0.1.5/src/fastix/templates/monolith/app/models/__init__.py.j2 +6 -0
  154. fastix-0.1.5/src/fastix/templates/monolith/app/schemas/__init__.py.j2 +2 -0
  155. fastix-0.1.5/src/fastix/templates/monolith/app/schemas/health.py.j2 +5 -0
  156. fastix-0.1.5/src/fastix/templates/monolith/app/services/__init__.py.j2 +2 -0
  157. fastix-0.1.5/src/fastix/templates/monolith/app/shared/__init__.py.j2 +1 -0
  158. fastix-0.1.5/src/fastix/templates/monolith/app/shared/errors.py.j2 +32 -0
  159. fastix-0.1.5/src/fastix/templates/monolith/app/shared/responses.py.j2 +47 -0
  160. fastix-0.1.5/src/fastix/templates/monolith/pyproject.toml.j2 +135 -0
@@ -0,0 +1,9 @@
1
+ .venv/
2
+ build/
3
+ dist/
4
+ *.egg-info/
5
+ .pytest_cache/
6
+ .mypy_cache/
7
+ .ruff_cache/
8
+ __pycache__/
9
+ *.py[cod]
fastix-0.1.5/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Paresh
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
fastix-0.1.5/PKG-INFO ADDED
@@ -0,0 +1,187 @@
1
+ Metadata-Version: 2.4
2
+ Name: fastix
3
+ Version: 0.1.5
4
+ Summary: A lightweight FastAPI starter generator with pluggable infrastructure, testing, and deployment templates.
5
+ Project-URL: Homepage, https://github.com/paresh/fastix
6
+ Project-URL: Repository, https://github.com/paresh/fastix
7
+ Project-URL: Issues, https://github.com/paresh/fastix/issues
8
+ Author: Paresh
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: boilerplate,cli,devops,docker,fastapi,kubernetes,microservices,scaffolding
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Framework :: FastAPI
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Topic :: Software Development :: Code Generators
24
+ Requires-Python: >=3.10
25
+ Requires-Dist: jinja2>=3.1.0
26
+ Requires-Dist: pydantic>=2.0.0
27
+ Requires-Dist: rich>=13.0.0
28
+ Requires-Dist: tomli>=2.0.1; python_version < '3.11'
29
+ Requires-Dist: typer>=0.9.0
30
+ Provides-Extra: dev
31
+ Requires-Dist: mypy>=1.0.0; extra == 'dev'
32
+ Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
33
+ Requires-Dist: pytest>=7.0.0; extra == 'dev'
34
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
35
+ Provides-Extra: interactive
36
+ Requires-Dist: questionary>=2.0.0; extra == 'interactive'
37
+ Description-Content-Type: text/markdown
38
+
39
+ # Fastix
40
+
41
+ Fastix is a lightweight FastAPI project lifecycle CLI for developers who want a clean starting point, guided project setup, and repeatable scaffolding.
42
+
43
+ ## Compatibility
44
+
45
+ Fastix targets:
46
+ - Python `>=3.10`
47
+ - Linux, macOS, and Windows
48
+ - pure-Python wheel installs with no compiled runtime dependency owned by Fastix itself
49
+
50
+ Notes:
51
+ - Python 3.10 uses `tomli` automatically for TOML parsing
52
+ - Python 3.11+ uses the standard-library `tomllib`
53
+ - interactive prompts are optional and installed only with `fastix[interactive]`
54
+
55
+ ## Lightweight By Default
56
+
57
+ Base install keeps runtime dependencies small:
58
+ - `typer`
59
+ - `rich`
60
+ - `jinja2`
61
+ - `pydantic`
62
+ - `tomli` only on Python 3.10
63
+
64
+ Interactive prompt tooling is optional:
65
+
66
+ ```bash
67
+ pip install fastix
68
+ pip install "fastix[interactive]"
69
+ ```
70
+
71
+ ## What Fastix Does
72
+
73
+ `fastix init` works like an architecture wizard:
74
+ - choose `monolith` or `microservices`
75
+ - see supported tooling options during setup
76
+ - start with sensible defaults already selected
77
+ - unselect anything you do not want
78
+ - generate a cleaner project structure with shared API response contracts
79
+
80
+ ## Interactive Init
81
+
82
+ ```bash
83
+ fastix init
84
+ ```
85
+
86
+ The wizard guides users through:
87
+ - architecture choice
88
+ - service names for microservices
89
+ - service communication (`http` or `grpc`)
90
+ - optional Dapr support
91
+ - database and Alembic migrations
92
+ - Redis / queue / worker options
93
+ - containerization and orchestration
94
+ - project essentials such as `.gitignore`, `README.md`, `.editorconfig`, tests, and shared responses
95
+
96
+ ## Default-Selected Essentials
97
+
98
+ Fastix shows baseline project files and developer defaults in the wizard and preselects them for convenience:
99
+ - `.gitignore`
100
+ - `README.md`
101
+ - `.editorconfig`
102
+ - `.env.example`
103
+ - test scaffolding
104
+ - API versioning
105
+ - health checks
106
+ - shared response contracts
107
+
108
+ Users can unselect these before generation.
109
+
110
+ ## Generated Structure
111
+
112
+ ### Monolith
113
+
114
+ ```text
115
+ app/
116
+ api/
117
+ core/
118
+ db/
119
+ models/
120
+ schemas/
121
+ services/
122
+ shared/
123
+ ```
124
+
125
+ ### Microservices Workspace
126
+
127
+ ```text
128
+ services/
129
+ gateway/
130
+ users/
131
+ shared/
132
+ infra/
133
+ ```
134
+
135
+ Each generated microservice now lives directly under `services/<name>/` instead of the older `services/<name>_service/` pattern.
136
+
137
+ ## Shared API Responses
138
+
139
+ Generated projects include standard response contracts so teams can keep a consistent API format from day one:
140
+ - success response
141
+ - error response
142
+ - paginated response
143
+ - shared error detail model
144
+
145
+ ## Migrations
146
+
147
+ For PostgreSQL and MySQL projects, Fastix can generate Alembic scaffolding during init. The option is visible in the wizard and enabled by default for SQL databases.
148
+
149
+ ## Example Non-Interactive Usage
150
+
151
+ ```bash
152
+ fastix init inventory_api \
153
+ --arch microservices \
154
+ --services gateway,orders \
155
+ --protocol grpc \
156
+ --native-grpc \
157
+ --dapr \
158
+ --db postgres \
159
+ --migrations \
160
+ --container docker \
161
+ --k8s helm
162
+ ```
163
+
164
+ ## Lifecycle Commands
165
+
166
+ ```bash
167
+ fastix inspect .
168
+ fastix add-module dapr --path .
169
+ fastix add-module container.podman --path .
170
+ fastix list-modules
171
+ ```
172
+
173
+ ## Compatibility Validation
174
+
175
+ This repository now includes automated package checks for:
176
+ - wheel/sdist build validation
177
+ - install smoke tests on Linux, macOS, and Windows
178
+ - Python 3.10, 3.11, 3.12, 3.13, and 3.14
179
+ - base and `interactive` installs
180
+
181
+ ## Release Checks
182
+
183
+ ```bash
184
+ PYTHONPATH=src ./.venv/bin/python -m pytest -q -p no:cacheprovider
185
+ ./.venv/bin/python -m build --no-isolation
186
+ ./.venv/bin/python -m twine check dist/*
187
+ ```
fastix-0.1.5/README.md ADDED
@@ -0,0 +1,149 @@
1
+ # Fastix
2
+
3
+ Fastix is a lightweight FastAPI project lifecycle CLI for developers who want a clean starting point, guided project setup, and repeatable scaffolding.
4
+
5
+ ## Compatibility
6
+
7
+ Fastix targets:
8
+ - Python `>=3.10`
9
+ - Linux, macOS, and Windows
10
+ - pure-Python wheel installs with no compiled runtime dependency owned by Fastix itself
11
+
12
+ Notes:
13
+ - Python 3.10 uses `tomli` automatically for TOML parsing
14
+ - Python 3.11+ uses the standard-library `tomllib`
15
+ - interactive prompts are optional and installed only with `fastix[interactive]`
16
+
17
+ ## Lightweight By Default
18
+
19
+ Base install keeps runtime dependencies small:
20
+ - `typer`
21
+ - `rich`
22
+ - `jinja2`
23
+ - `pydantic`
24
+ - `tomli` only on Python 3.10
25
+
26
+ Interactive prompt tooling is optional:
27
+
28
+ ```bash
29
+ pip install fastix
30
+ pip install "fastix[interactive]"
31
+ ```
32
+
33
+ ## What Fastix Does
34
+
35
+ `fastix init` works like an architecture wizard:
36
+ - choose `monolith` or `microservices`
37
+ - see supported tooling options during setup
38
+ - start with sensible defaults already selected
39
+ - unselect anything you do not want
40
+ - generate a cleaner project structure with shared API response contracts
41
+
42
+ ## Interactive Init
43
+
44
+ ```bash
45
+ fastix init
46
+ ```
47
+
48
+ The wizard guides users through:
49
+ - architecture choice
50
+ - service names for microservices
51
+ - service communication (`http` or `grpc`)
52
+ - optional Dapr support
53
+ - database and Alembic migrations
54
+ - Redis / queue / worker options
55
+ - containerization and orchestration
56
+ - project essentials such as `.gitignore`, `README.md`, `.editorconfig`, tests, and shared responses
57
+
58
+ ## Default-Selected Essentials
59
+
60
+ Fastix shows baseline project files and developer defaults in the wizard and preselects them for convenience:
61
+ - `.gitignore`
62
+ - `README.md`
63
+ - `.editorconfig`
64
+ - `.env.example`
65
+ - test scaffolding
66
+ - API versioning
67
+ - health checks
68
+ - shared response contracts
69
+
70
+ Users can unselect these before generation.
71
+
72
+ ## Generated Structure
73
+
74
+ ### Monolith
75
+
76
+ ```text
77
+ app/
78
+ api/
79
+ core/
80
+ db/
81
+ models/
82
+ schemas/
83
+ services/
84
+ shared/
85
+ ```
86
+
87
+ ### Microservices Workspace
88
+
89
+ ```text
90
+ services/
91
+ gateway/
92
+ users/
93
+ shared/
94
+ infra/
95
+ ```
96
+
97
+ Each generated microservice now lives directly under `services/<name>/` instead of the older `services/<name>_service/` pattern.
98
+
99
+ ## Shared API Responses
100
+
101
+ Generated projects include standard response contracts so teams can keep a consistent API format from day one:
102
+ - success response
103
+ - error response
104
+ - paginated response
105
+ - shared error detail model
106
+
107
+ ## Migrations
108
+
109
+ For PostgreSQL and MySQL projects, Fastix can generate Alembic scaffolding during init. The option is visible in the wizard and enabled by default for SQL databases.
110
+
111
+ ## Example Non-Interactive Usage
112
+
113
+ ```bash
114
+ fastix init inventory_api \
115
+ --arch microservices \
116
+ --services gateway,orders \
117
+ --protocol grpc \
118
+ --native-grpc \
119
+ --dapr \
120
+ --db postgres \
121
+ --migrations \
122
+ --container docker \
123
+ --k8s helm
124
+ ```
125
+
126
+ ## Lifecycle Commands
127
+
128
+ ```bash
129
+ fastix inspect .
130
+ fastix add-module dapr --path .
131
+ fastix add-module container.podman --path .
132
+ fastix list-modules
133
+ ```
134
+
135
+ ## Compatibility Validation
136
+
137
+ This repository now includes automated package checks for:
138
+ - wheel/sdist build validation
139
+ - install smoke tests on Linux, macOS, and Windows
140
+ - Python 3.10, 3.11, 3.12, 3.13, and 3.14
141
+ - base and `interactive` installs
142
+
143
+ ## Release Checks
144
+
145
+ ```bash
146
+ PYTHONPATH=src ./.venv/bin/python -m pytest -q -p no:cacheprovider
147
+ ./.venv/bin/python -m build --no-isolation
148
+ ./.venv/bin/python -m twine check dist/*
149
+ ```
@@ -0,0 +1,94 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "fastix"
7
+ version = "0.1.5"
8
+ description = "A lightweight FastAPI starter generator with pluggable infrastructure, testing, and deployment templates."
9
+ readme = "README.md"
10
+ license = { text = "MIT" }
11
+ requires-python = ">=3.10"
12
+ authors = [
13
+ { name = "Paresh" },
14
+ ]
15
+ keywords = [
16
+ "fastapi",
17
+ "scaffolding",
18
+ "boilerplate",
19
+ "microservices",
20
+ "cli",
21
+ "devops",
22
+ "kubernetes",
23
+ "docker",
24
+ ]
25
+ classifiers = [
26
+ "Development Status :: 3 - Alpha",
27
+ "Intended Audience :: Developers",
28
+ "License :: OSI Approved :: MIT License",
29
+ "Programming Language :: Python :: 3",
30
+ "Programming Language :: Python :: 3.10",
31
+ "Programming Language :: Python :: 3.11",
32
+ "Programming Language :: Python :: 3.12",
33
+ "Programming Language :: Python :: 3.13",
34
+ "Programming Language :: Python :: 3.14",
35
+ "Operating System :: OS Independent",
36
+ "Topic :: Software Development :: Code Generators",
37
+ "Framework :: FastAPI",
38
+ ]
39
+ dependencies = [
40
+ "typer>=0.9.0",
41
+ "rich>=13.0.0",
42
+ "jinja2>=3.1.0",
43
+ "pydantic>=2.0.0",
44
+ 'tomli>=2.0.1; python_version < "3.11"',
45
+ ]
46
+
47
+ [project.optional-dependencies]
48
+ interactive = [
49
+ "questionary>=2.0.0",
50
+ ]
51
+ dev = [
52
+ "pytest>=7.0.0",
53
+ "pytest-cov>=4.0.0",
54
+ "ruff>=0.1.0",
55
+ "mypy>=1.0.0",
56
+ ]
57
+
58
+ [project.scripts]
59
+ fastix = "fastix.cli.main:app"
60
+
61
+ [project.urls]
62
+ Homepage = "https://github.com/paresh/fastix"
63
+ Repository = "https://github.com/paresh/fastix"
64
+ Issues = "https://github.com/paresh/fastix/issues"
65
+
66
+ [tool.hatch.build]
67
+ include = [
68
+ "/src/fastix/**/*.py",
69
+ "/src/fastix/**/*.j2",
70
+ "/src/fastix/**/templates/**",
71
+ "/README.md",
72
+ "/LICENSE",
73
+ ]
74
+ exclude = [
75
+ "/src/**/__pycache__",
76
+ "/src/**/*.pyc",
77
+ ]
78
+
79
+ [tool.hatch.build.targets.wheel]
80
+ packages = ["src/fastix"]
81
+
82
+ [tool.ruff]
83
+ target-version = "py310"
84
+ line-length = 88
85
+
86
+ [tool.ruff.lint]
87
+ select = ["E", "F", "I", "N", "W", "UP"]
88
+
89
+ [tool.mypy]
90
+ python_version = "3.10"
91
+ strict = true
92
+
93
+ [tool.pytest.ini_options]
94
+ testpaths = ["tests"]
@@ -0,0 +1,5 @@
1
+ """Fastix - production-ready FastAPI project generator."""
2
+
3
+ __version__ = "0.1.5"
4
+ APP_NAME = "Fastix"
5
+ CLI_NAME = "fastix"
File without changes