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.
- fastix-0.1.5/.gitignore +9 -0
- fastix-0.1.5/LICENSE +21 -0
- fastix-0.1.5/PKG-INFO +187 -0
- fastix-0.1.5/README.md +149 -0
- fastix-0.1.5/pyproject.toml +94 -0
- fastix-0.1.5/src/fastix/__init__.py +5 -0
- fastix-0.1.5/src/fastix/cli/__init__.py +0 -0
- fastix-0.1.5/src/fastix/cli/main.py +408 -0
- fastix-0.1.5/src/fastix/cli/prompts.py +297 -0
- fastix-0.1.5/src/fastix/core/__init__.py +0 -0
- fastix-0.1.5/src/fastix/core/config.py +315 -0
- fastix-0.1.5/src/fastix/core/engine.py +382 -0
- fastix-0.1.5/src/fastix/core/registry.py +97 -0
- fastix-0.1.5/src/fastix/core/state.py +160 -0
- fastix-0.1.5/src/fastix/modules/__init__.py +5 -0
- fastix-0.1.5/src/fastix/modules/cicd/github_actions/templates/.github/workflows/ci.yml.j2 +20 -0
- fastix-0.1.5/src/fastix/modules/cicd/gitlab_ci/templates/.gitlab-ci.yml.j2 +11 -0
- fastix-0.1.5/src/fastix/modules/container/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/container/docker/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/container/docker/templates/.dockerignore.j2 +65 -0
- fastix-0.1.5/src/fastix/modules/container/docker/templates/Dockerfile.j2 +24 -0
- fastix-0.1.5/src/fastix/modules/container/docker/templates/docker-compose.yml.j2 +341 -0
- fastix-0.1.5/src/fastix/modules/container/podman/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/container/podman/templates/Containerfile.j2 +24 -0
- fastix-0.1.5/src/fastix/modules/container/podman/templates/podman-compose.yml.j2 +268 -0
- fastix-0.1.5/src/fastix/modules/dapr/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/dapr/templates/dapr/config.yaml.j2 +48 -0
- fastix-0.1.5/src/fastix/modules/dapr/templates/dapr/pubsub.yaml.j2 +64 -0
- fastix-0.1.5/src/fastix/modules/dapr/templates/dapr/statestore.yaml.j2 +29 -0
- fastix-0.1.5/src/fastix/modules/database/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/database/mongodb/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/database/mongodb/templates/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/database/mysql/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/database/mysql/templates/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/database/postgres/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/database/postgres/templates/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/devtools/editor/templates/.editorconfig.j2 +67 -0
- fastix-0.1.5/src/fastix/modules/devtools/precommit/templates/.pre-commit-config.yaml.j2 +57 -0
- fastix-0.1.5/src/fastix/modules/messaging/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/messaging/kafka/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/messaging/kafka/templates/app/messaging/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/modules/messaging/kafka/templates/app/messaging/consumer.py.j2 +112 -0
- fastix-0.1.5/src/fastix/modules/messaging/kafka/templates/app/messaging/producer.py.j2 +125 -0
- fastix-0.1.5/src/fastix/modules/messaging/rabbitmq/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/messaging/rabbitmq/templates/app/messaging/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/modules/messaging/rabbitmq/templates/app/messaging/consumer.py.j2 +127 -0
- fastix-0.1.5/src/fastix/modules/messaging/rabbitmq/templates/app/messaging/producer.py.j2 +138 -0
- fastix-0.1.5/src/fastix/modules/messaging/redis/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/messaging/redis/templates/app/messaging/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/modules/messaging/redis/templates/app/messaging/redis_client.py.j2 +209 -0
- fastix-0.1.5/src/fastix/modules/orchestration/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/orchestration/helm/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/Chart.yaml.j2 +27 -0
- fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/templates/_helpers.tpl.j2 +69 -0
- fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/templates/configmap.yaml.j2 +16 -0
- fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/templates/deployment.yaml.j2 +76 -0
- fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/templates/ingress.yaml.j2 +47 -0
- fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/templates/service.yaml.j2 +21 -0
- fastix-0.1.5/src/fastix/modules/orchestration/helm/templates/helm/values.yaml.j2 +175 -0
- fastix-0.1.5/src/fastix/modules/orchestration/kustomize/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/orchestration/kustomize/templates/k8s/base/deployment.yaml.j2 +84 -0
- fastix-0.1.5/src/fastix/modules/orchestration/kustomize/templates/k8s/base/kustomization.yaml.j2 +18 -0
- fastix-0.1.5/src/fastix/modules/orchestration/kustomize/templates/k8s/base/service.yaml.j2 +21 -0
- fastix-0.1.5/src/fastix/modules/orchestration/kustomize/templates/k8s/overlays/dev/kustomization.yaml.j2 +67 -0
- fastix-0.1.5/src/fastix/modules/orchestration/kustomize/templates/k8s/overlays/prod/kustomization.yaml.j2 +67 -0
- fastix-0.1.5/src/fastix/modules/orchestration/raw_manifests/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/orchestration/raw_manifests/templates/k8s/deployment.yaml.j2 +140 -0
- fastix-0.1.5/src/fastix/modules/orchestration/raw_manifests/templates/k8s/namespace.yaml.j2 +13 -0
- fastix-0.1.5/src/fastix/modules/orchestration/raw_manifests/templates/k8s/service.yaml.j2 +24 -0
- fastix-0.1.5/src/fastix/modules/register.py +225 -0
- fastix-0.1.5/src/fastix/modules/scheduler/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/scheduler/celery_beat/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/scheduler/celery_beat/templates/app/workers/schedule.py.j2 +54 -0
- fastix-0.1.5/src/fastix/modules/scheduler/cronjob/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/scheduler/cronjob/templates/k8s/cronjob.yaml.j2 +117 -0
- fastix-0.1.5/src/fastix/modules/scripting/justfile/templates/justfile.j2 +79 -0
- fastix-0.1.5/src/fastix/modules/scripting/makefile/templates/Makefile.j2 +110 -0
- fastix-0.1.5/src/fastix/modules/scripting/taskfile/templates/Taskfile.yml.j2 +116 -0
- fastix-0.1.5/src/fastix/modules/testing/factory_boy/templates/tests/factories/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/modules/testing/factory_boy/templates/tests/factories/base.py.j2 +120 -0
- fastix-0.1.5/src/fastix/modules/testing/pytest/templates/tests/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/modules/testing/pytest/templates/tests/conftest.py.j2 +19 -0
- fastix-0.1.5/src/fastix/modules/testing/pytest/templates/tests/test_health.py.j2 +16 -0
- fastix-0.1.5/src/fastix/modules/worker/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/worker/celery/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/worker/celery/templates/app/workers/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/modules/worker/celery/templates/app/workers/celery_app.py.j2 +57 -0
- fastix-0.1.5/src/fastix/modules/worker/celery/templates/app/workers/tasks.py.j2 +76 -0
- fastix-0.1.5/src/fastix/modules/worker/rq/__init__.py +0 -0
- fastix-0.1.5/src/fastix/modules/worker/rq/templates/app/workers/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/modules/worker/rq/templates/app/workers/rq_worker.py.j2 +67 -0
- fastix-0.1.5/src/fastix/modules/worker/rq/templates/app/workers/tasks.py.j2 +60 -0
- fastix-0.1.5/src/fastix/templates/microservices/.env.example.j2 +43 -0
- fastix-0.1.5/src/fastix/templates/microservices/.gitignore.j2 +10 -0
- fastix-0.1.5/src/fastix/templates/microservices/README.md.j2 +47 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/.env.example.j2 +2 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/__init__.py.j2 +1 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/alembic/env.py.j2 +37 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/alembic/script.py.mako.j2 +14 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/alembic/versions/.gitkeep.j2 +0 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/alembic.ini.j2 +5 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/api/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/api/v1/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/api/v1/endpoints/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/api/v1/endpoints/health.py.j2 +13 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/api/v1/router.py.j2 +6 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/application/__init__.py.j2 +1 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/core/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/core/config.py.j2 +12 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/db/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/db/session.py.j2 +99 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/domain/__init__.py.j2 +1 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/infrastructure/__init__.py.j2 +1 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/infrastructure/transports/__init__.py.j2 +1 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/infrastructure/transports/grpc.py.j2 +5 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/main.py.j2 +18 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/models/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/schemas/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/app/services/__init__.py.j2 +0 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/contracts/grpc/service.proto.j2 +14 -0
- fastix-0.1.5/src/fastix/templates/microservices/_service_template/pyproject.toml.j2 +8 -0
- fastix-0.1.5/src/fastix/templates/microservices/pyproject.toml.j2 +35 -0
- fastix-0.1.5/src/fastix/templates/microservices/services/__init__.py.j2 +1 -0
- fastix-0.1.5/src/fastix/templates/microservices/shared/__init__.py.j2 +1 -0
- fastix-0.1.5/src/fastix/templates/microservices/shared/api/__init__.py.j2 +1 -0
- fastix-0.1.5/src/fastix/templates/microservices/shared/api/errors.py.j2 +32 -0
- fastix-0.1.5/src/fastix/templates/microservices/shared/api/responses.py.j2 +47 -0
- fastix-0.1.5/src/fastix/templates/microservices/shared/config.py.j2 +5 -0
- fastix-0.1.5/src/fastix/templates/microservices/shared/exceptions.py.j2 +5 -0
- fastix-0.1.5/src/fastix/templates/microservices/shared/logging.py.j2 +8 -0
- fastix-0.1.5/src/fastix/templates/microservices/shared/schemas.py.j2 +5 -0
- fastix-0.1.5/src/fastix/templates/monolith/.env.example.j2 +76 -0
- fastix-0.1.5/src/fastix/templates/monolith/.gitignore.j2 +12 -0
- fastix-0.1.5/src/fastix/templates/monolith/README.md.j2 +53 -0
- fastix-0.1.5/src/fastix/templates/monolith/alembic/env.py.j2 +37 -0
- fastix-0.1.5/src/fastix/templates/monolith/alembic/script.py.mako.j2 +14 -0
- fastix-0.1.5/src/fastix/templates/monolith/alembic/versions/.gitkeep.j2 +0 -0
- fastix-0.1.5/src/fastix/templates/monolith/alembic.ini.j2 +5 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/__init__.py.j2 +2 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/api/__init__.py.j2 +2 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/api/deps.py.j2 +58 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/api/v1/__init__.py.j2 +2 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/api/v1/endpoints/__init__.py.j2 +2 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/api/v1/endpoints/health.py.j2 +10 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/api/v1/router.py.j2 +6 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/core/__init__.py.j2 +2 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/core/config.py.j2 +15 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/core/exceptions.py.j2 +151 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/db/__init__.py.j2 +2 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/db/session.py.j2 +79 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/main.py.j2 +30 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/models/__init__.py.j2 +6 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/schemas/__init__.py.j2 +2 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/schemas/health.py.j2 +5 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/services/__init__.py.j2 +2 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/shared/__init__.py.j2 +1 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/shared/errors.py.j2 +32 -0
- fastix-0.1.5/src/fastix/templates/monolith/app/shared/responses.py.j2 +47 -0
- fastix-0.1.5/src/fastix/templates/monolith/pyproject.toml.j2 +135 -0
fastix-0.1.5/.gitignore
ADDED
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"]
|
|
File without changes
|