aegis-stack 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of aegis-stack might be problematic. Click here for more details.
- aegis_stack-0.1.0/.gitignore +130 -0
- aegis_stack-0.1.0/CHANGELOG.md +39 -0
- aegis_stack-0.1.0/PKG-INFO +114 -0
- aegis_stack-0.1.0/README.md +68 -0
- aegis_stack-0.1.0/aegis/__init__.py +5 -0
- aegis_stack-0.1.0/aegis/__main__.py +374 -0
- aegis_stack-0.1.0/aegis/core/CLAUDE.md +365 -0
- aegis_stack-0.1.0/aegis/core/__init__.py +6 -0
- aegis_stack-0.1.0/aegis/core/components.py +115 -0
- aegis_stack-0.1.0/aegis/core/dependency_resolver.py +119 -0
- aegis_stack-0.1.0/aegis/core/template_generator.py +163 -0
- aegis_stack-0.1.0/aegis/templates/CLAUDE.md +306 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/cookiecutter.json +27 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/hooks/post_gen_project.py +172 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/.dockerignore +71 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/.env.example.j2 +70 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/.gitignore +127 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/Dockerfile +53 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/Makefile +211 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/README.md.j2 +196 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/__init__.py +5 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/__init__.py +6 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/health.py +321 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/load_test.py +638 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/main.py +41 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/__init__.py +0 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/__init__.py +0 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/health.py +134 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/models.py.j2 +247 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/routing.py.j2 +14 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/tasks.py.j2 +596 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/hooks.py +133 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/main.py +16 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/middleware/__init__.py +1 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/middleware/cors.py +20 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/shutdown/__init__.py +1 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/shutdown/cleanup.py +14 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/startup/__init__.py +1 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/startup/component_health.py.j2 +190 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/__init__.py +0 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/core/__init__.py +1 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/core/theme.py +46 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/main.py +687 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/scheduler/__init__.py +1 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/scheduler/main.py +138 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/CLAUDE.md +213 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/__init__.py +6 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/constants.py.j2 +30 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/pools.py +78 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/queues/__init__.py +1 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/queues/load_test.py +48 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/queues/media.py +41 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/queues/system.py +36 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/registry.py +139 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/tasks/__init__.py +119 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/tasks/load_tasks.py +526 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/tasks/simple_system_tasks.py +32 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/tasks/system_tasks.py +279 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/config.py.j2 +119 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/constants.py +60 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/db.py +67 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/log.py +85 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/entrypoints/__init__.py +1 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/entrypoints/webserver.py +40 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/entrypoints/{% if cookiecutter.include_scheduler == /"yes/" %}scheduler.py{% endif %}" +21 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/integrations/__init__.py +0 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/integrations/main.py +61 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/py.typed +0 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/__init__.py +1 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/load_test.py +661 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/load_test_models.py +269 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/shared/__init__.py +15 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/shared/models.py +26 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/__init__.py +52 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/alerts.py +94 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/health.py.j2 +1105 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/models.py +169 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/ui.py +52 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docker-compose.yml.j2 +195 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/api.md +191 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/components/scheduler.md +414 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/development.md +215 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/health.md +240 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/javascripts/mermaid-config.js +62 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/stylesheets/mermaid.css +95 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/mkdocs.yml.j2 +62 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/pyproject.toml.j2 +156 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/scripts/entrypoint.sh +87 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/scripts/entrypoint.sh.j2 +104 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/scripts/gen_docs.py +16 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/api/__init__.py +1 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/api/test_health_endpoints.py.j2 +239 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/components/test_scheduler.py +76 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/conftest.py.j2 +81 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/__init__.py +1 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_component_integration.py.j2 +376 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_health_logic.py.j2 +633 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_load_test_models.py +665 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_load_test_service.py +602 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_system_service.py +96 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_worker_health_registration.py.j2 +224 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/test_core.py +50 -0
- aegis_stack-0.1.0/aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/uv.lock +1673 -0
- aegis_stack-0.1.0/pyproject.toml +153 -0
- aegis_stack-0.1.0/tests/CLAUDE.md +221 -0
- aegis_stack-0.1.0/tests/__init__.py +0 -0
- aegis_stack-0.1.0/tests/cli/__init__.py +0 -0
- aegis_stack-0.1.0/tests/cli/conftest.py +211 -0
- aegis_stack-0.1.0/tests/cli/test_cli_basic.py +128 -0
- aegis_stack-0.1.0/tests/cli/test_cli_init.py +425 -0
- aegis_stack-0.1.0/tests/cli/test_component_dependencies.py +466 -0
- aegis_stack-0.1.0/tests/cli/test_database_config.py +132 -0
- aegis_stack-0.1.0/tests/cli/test_database_runtime.py +264 -0
- aegis_stack-0.1.0/tests/cli/test_error_handling.py +362 -0
- aegis_stack-0.1.0/tests/cli/test_stack_generation.py +307 -0
- aegis_stack-0.1.0/tests/cli/test_stack_validation.py +311 -0
- aegis_stack-0.1.0/tests/cli/test_utils.py +542 -0
- aegis_stack-0.1.0/tests/conftest.py +21 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.so
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
*.egg-info/
|
|
24
|
+
.installed.cfg
|
|
25
|
+
*.egg
|
|
26
|
+
MANIFEST
|
|
27
|
+
|
|
28
|
+
# PyInstaller
|
|
29
|
+
# Usually these files are written by a python script from a template
|
|
30
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
31
|
+
*.manifest
|
|
32
|
+
*.spec
|
|
33
|
+
|
|
34
|
+
# Installer logs
|
|
35
|
+
pip-log.txt
|
|
36
|
+
pip-delete-this-directory.txt
|
|
37
|
+
|
|
38
|
+
# Unit test / coverage reports
|
|
39
|
+
htmlcov/
|
|
40
|
+
.tox/
|
|
41
|
+
.nox/
|
|
42
|
+
.coverage
|
|
43
|
+
.coverage.*
|
|
44
|
+
.cache
|
|
45
|
+
nosetests.xml
|
|
46
|
+
coverage.xml
|
|
47
|
+
*.cover
|
|
48
|
+
.hypothesis/
|
|
49
|
+
.pytest_cache/
|
|
50
|
+
|
|
51
|
+
# Translations
|
|
52
|
+
*.mo
|
|
53
|
+
*.pot
|
|
54
|
+
|
|
55
|
+
# Django stuff:
|
|
56
|
+
*.log
|
|
57
|
+
local_settings.py
|
|
58
|
+
db.sqlite3
|
|
59
|
+
|
|
60
|
+
# Flask stuff:
|
|
61
|
+
instance/
|
|
62
|
+
.webassets-cache
|
|
63
|
+
|
|
64
|
+
# Scrapy stuff:
|
|
65
|
+
.scrapy
|
|
66
|
+
|
|
67
|
+
# Sphinx documentation
|
|
68
|
+
docs/_build/
|
|
69
|
+
|
|
70
|
+
# PyBuilder
|
|
71
|
+
target/
|
|
72
|
+
|
|
73
|
+
# Jupyter Notebook
|
|
74
|
+
.ipynb_checkpoints
|
|
75
|
+
|
|
76
|
+
# IPython
|
|
77
|
+
profile_default/
|
|
78
|
+
ipython_config.py
|
|
79
|
+
|
|
80
|
+
# pyenv
|
|
81
|
+
.python-version
|
|
82
|
+
|
|
83
|
+
# celery beat schedule file
|
|
84
|
+
celerybeat-schedule
|
|
85
|
+
|
|
86
|
+
# SageMath parsed files
|
|
87
|
+
*.sage.py
|
|
88
|
+
|
|
89
|
+
# Environments
|
|
90
|
+
.env
|
|
91
|
+
.venv
|
|
92
|
+
env/
|
|
93
|
+
venv/
|
|
94
|
+
ENV/
|
|
95
|
+
env.bak/
|
|
96
|
+
venv.bak/
|
|
97
|
+
|
|
98
|
+
# Spyder project settings
|
|
99
|
+
.spyderproject
|
|
100
|
+
.spyproject
|
|
101
|
+
|
|
102
|
+
# Rope project settings
|
|
103
|
+
.ropeproject
|
|
104
|
+
|
|
105
|
+
# mkdocs documentation
|
|
106
|
+
/site
|
|
107
|
+
|
|
108
|
+
# mypy
|
|
109
|
+
.mypy_cache/
|
|
110
|
+
.dmypy.json
|
|
111
|
+
dmypy.json
|
|
112
|
+
|
|
113
|
+
# IDE
|
|
114
|
+
.vscode/
|
|
115
|
+
.idea/
|
|
116
|
+
*.swp
|
|
117
|
+
*.swo
|
|
118
|
+
*~
|
|
119
|
+
|
|
120
|
+
# OS generated files
|
|
121
|
+
.DS_Store
|
|
122
|
+
.DS_Store?
|
|
123
|
+
._*
|
|
124
|
+
.Spotlight-V100
|
|
125
|
+
.Trashes
|
|
126
|
+
ehthumbs.db
|
|
127
|
+
Thumbs.db
|
|
128
|
+
|
|
129
|
+
# Data
|
|
130
|
+
data/
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.1.0] - 2025-08-27
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Initial release of Aegis Stack CLI tool
|
|
12
|
+
- Database component with SQLite/SQLModel ORM integration
|
|
13
|
+
- FastAPI backend with health monitoring system
|
|
14
|
+
- Flet frontend for web and desktop applications
|
|
15
|
+
- Worker component with arq/Redis for background tasks
|
|
16
|
+
- Scheduler component with APScheduler
|
|
17
|
+
- Docker containerization support
|
|
18
|
+
- Comprehensive testing infrastructure with pytest
|
|
19
|
+
- Type checking with mypy and pydantic plugin
|
|
20
|
+
- Auto-formatting with ruff
|
|
21
|
+
- Project generation via `aegis init` command
|
|
22
|
+
- Component dependency resolution system
|
|
23
|
+
- Database health checks with detailed metrics
|
|
24
|
+
- Transaction rollback testing fixtures
|
|
25
|
+
- Template validation system
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
- Database test isolation issues
|
|
29
|
+
- Type checking for Pydantic models with mypy plugin
|
|
30
|
+
- Template linting issues in generated projects
|
|
31
|
+
|
|
32
|
+
### Components
|
|
33
|
+
- Backend (FastAPI) - Always included
|
|
34
|
+
- Frontend (Flet) - Always included
|
|
35
|
+
- Database (SQLite/SQLModel) - Optional
|
|
36
|
+
- Worker (arq/Redis) - Optional
|
|
37
|
+
- Scheduler (APScheduler) - Optional
|
|
38
|
+
|
|
39
|
+
[0.1.0]: https://github.com/lbedner/aegis-stack/releases/tag/v0.1.0
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aegis-stack
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A production-ready Python foundation for builders who refuse to wait
|
|
5
|
+
Project-URL: Homepage, https://github.com/lbedner/aegis-stack
|
|
6
|
+
Project-URL: Documentation, https://github.com/lbedner/aegis-stack#readme
|
|
7
|
+
Project-URL: Repository, https://github.com/lbedner/aegis-stack
|
|
8
|
+
Project-URL: Issues, https://github.com/lbedner/aegis-stack/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/lbedner/aegis-stack/blob/main/CHANGELOG.md
|
|
10
|
+
Author-email: Leonard Bedner <gamecoder99@gmail.com>
|
|
11
|
+
License: MIT
|
|
12
|
+
Keywords: boilerplate,cli,cookiecutter,database,fastapi,generator,python,scaffold,scheduler,stack,template,worker
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Natural Language :: English
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
|
|
24
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
25
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
26
|
+
Classifier: Typing :: Typed
|
|
27
|
+
Requires-Python: >=3.11
|
|
28
|
+
Requires-Dist: cookiecutter>=2.6.0
|
|
29
|
+
Requires-Dist: rich>=13.0.0
|
|
30
|
+
Requires-Dist: typer>=0.9.0
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: mypy>=1.8.0; extra == 'dev'
|
|
33
|
+
Requires-Dist: pip-audit>=2.6.0; extra == 'dev'
|
|
34
|
+
Requires-Dist: pre-commit>=3.7.0; extra == 'dev'
|
|
35
|
+
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
|
|
36
|
+
Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
|
37
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
38
|
+
Provides-Extra: docs
|
|
39
|
+
Requires-Dist: mkdocs-gen-files>=0.5.0; extra == 'docs'
|
|
40
|
+
Requires-Dist: mkdocs-material>=9.5.0; extra == 'docs'
|
|
41
|
+
Requires-Dist: mkdocs-mermaid2-plugin>=1.1.0; extra == 'docs'
|
|
42
|
+
Requires-Dist: mkdocs>=1.5.0; extra == 'docs'
|
|
43
|
+
Requires-Dist: mkdocstrings[python]>=0.24.0; extra == 'docs'
|
|
44
|
+
Requires-Dist: pymdown-extensions>=10.0.0; extra == 'docs'
|
|
45
|
+
Description-Content-Type: text/markdown
|
|
46
|
+
|
|
47
|
+
# Aegis Stack 🛡️
|
|
48
|
+
|
|
49
|
+
[](https://github.com/lbedner/aegis-stack/actions/workflows/ci.yml)
|
|
50
|
+
[](https://github.com/lbedner/aegis-stack/actions/workflows/docs.yml)
|
|
51
|
+
[](https://www.python.org/downloads/)
|
|
52
|
+
|
|
53
|
+
**Build production-ready Python applications with your chosen components.**
|
|
54
|
+
|
|
55
|
+
Aegis Stack is a CLI-driven framework for creating custom Python applications. Select exactly the components you need - no bloat, no unused dependencies.
|
|
56
|
+
|
|
57
|
+
## 🚀 Quick Start
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Install
|
|
61
|
+
pip install aegis-stack
|
|
62
|
+
|
|
63
|
+
# Create a simple API
|
|
64
|
+
aegis init my-api
|
|
65
|
+
|
|
66
|
+
# Create with background processing
|
|
67
|
+
aegis init task-processor --components scheduler,worker
|
|
68
|
+
|
|
69
|
+
# Start building
|
|
70
|
+
cd my-project && uv sync && source .venv/bin/activate && make run-local
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 🧩 Available Components
|
|
74
|
+
|
|
75
|
+
| Component | Purpose | Status |
|
|
76
|
+
|-----------|---------|--------|
|
|
77
|
+
| **Core** (FastAPI + Flet) | Web API + Frontend | ✅ **Included** |
|
|
78
|
+
| **Scheduler** | Background tasks, cron jobs | ✅ **Available** |
|
|
79
|
+
| **Worker** | Async task queues, job processing | ✅ **Available** |
|
|
80
|
+
| **Database** | PostgreSQL + SQLAlchemy + Alembic | 🚧 **Coming Soon** |
|
|
81
|
+
| **Cache** | Redis caching and sessions | 🚧 **Coming Soon** |
|
|
82
|
+
|
|
83
|
+
## What You Get
|
|
84
|
+
|
|
85
|
+
- **FastAPI backend** with automatic API documentation
|
|
86
|
+
- **Flet frontend** with health dashboard
|
|
87
|
+
- **CLI management** with health monitoring commands
|
|
88
|
+
- **Worker queues** with async task processing and load testing
|
|
89
|
+
- **Production ready** with structured logging and containerization
|
|
90
|
+
- **Async-first** architecture for high-concurrency workloads
|
|
91
|
+
|
|
92
|
+
## 📱 System Health Dashboard
|
|
93
|
+
|
|
94
|
+

|
|
95
|
+

|
|
96
|
+
|
|
97
|
+
Real-time monitoring with component status, health percentages, and cross-platform deployment (web, desktop, mobile).
|
|
98
|
+
|
|
99
|
+
## 📚 Learn More
|
|
100
|
+
|
|
101
|
+
- **[📖 CLI Reference](docs/cli-reference.md)** - Complete command reference
|
|
102
|
+
- **[🏗️ Components](docs/components/index.md)** - Deep dive into available components
|
|
103
|
+
- **[🧠 Philosophy](docs/philosophy.md)** - Architecture and design principles
|
|
104
|
+
|
|
105
|
+
## Development Commands
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
make run-local # Start development server
|
|
109
|
+
make test # Run test suite
|
|
110
|
+
make check # Run all quality checks
|
|
111
|
+
make docs-serve # Serve documentation
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Built on FastAPI, Flet, Typer, and other open-source tools.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Aegis Stack 🛡️
|
|
2
|
+
|
|
3
|
+
[](https://github.com/lbedner/aegis-stack/actions/workflows/ci.yml)
|
|
4
|
+
[](https://github.com/lbedner/aegis-stack/actions/workflows/docs.yml)
|
|
5
|
+
[](https://www.python.org/downloads/)
|
|
6
|
+
|
|
7
|
+
**Build production-ready Python applications with your chosen components.**
|
|
8
|
+
|
|
9
|
+
Aegis Stack is a CLI-driven framework for creating custom Python applications. Select exactly the components you need - no bloat, no unused dependencies.
|
|
10
|
+
|
|
11
|
+
## 🚀 Quick Start
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Install
|
|
15
|
+
pip install aegis-stack
|
|
16
|
+
|
|
17
|
+
# Create a simple API
|
|
18
|
+
aegis init my-api
|
|
19
|
+
|
|
20
|
+
# Create with background processing
|
|
21
|
+
aegis init task-processor --components scheduler,worker
|
|
22
|
+
|
|
23
|
+
# Start building
|
|
24
|
+
cd my-project && uv sync && source .venv/bin/activate && make run-local
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 🧩 Available Components
|
|
28
|
+
|
|
29
|
+
| Component | Purpose | Status |
|
|
30
|
+
|-----------|---------|--------|
|
|
31
|
+
| **Core** (FastAPI + Flet) | Web API + Frontend | ✅ **Included** |
|
|
32
|
+
| **Scheduler** | Background tasks, cron jobs | ✅ **Available** |
|
|
33
|
+
| **Worker** | Async task queues, job processing | ✅ **Available** |
|
|
34
|
+
| **Database** | PostgreSQL + SQLAlchemy + Alembic | 🚧 **Coming Soon** |
|
|
35
|
+
| **Cache** | Redis caching and sessions | 🚧 **Coming Soon** |
|
|
36
|
+
|
|
37
|
+
## What You Get
|
|
38
|
+
|
|
39
|
+
- **FastAPI backend** with automatic API documentation
|
|
40
|
+
- **Flet frontend** with health dashboard
|
|
41
|
+
- **CLI management** with health monitoring commands
|
|
42
|
+
- **Worker queues** with async task processing and load testing
|
|
43
|
+
- **Production ready** with structured logging and containerization
|
|
44
|
+
- **Async-first** architecture for high-concurrency workloads
|
|
45
|
+
|
|
46
|
+
## 📱 System Health Dashboard
|
|
47
|
+
|
|
48
|
+

|
|
49
|
+

|
|
50
|
+
|
|
51
|
+
Real-time monitoring with component status, health percentages, and cross-platform deployment (web, desktop, mobile).
|
|
52
|
+
|
|
53
|
+
## 📚 Learn More
|
|
54
|
+
|
|
55
|
+
- **[📖 CLI Reference](docs/cli-reference.md)** - Complete command reference
|
|
56
|
+
- **[🏗️ Components](docs/components/index.md)** - Deep dive into available components
|
|
57
|
+
- **[🧠 Philosophy](docs/philosophy.md)** - Architecture and design principles
|
|
58
|
+
|
|
59
|
+
## Development Commands
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
make run-local # Start development server
|
|
63
|
+
make test # Run test suite
|
|
64
|
+
make check # Run all quality checks
|
|
65
|
+
make docs-serve # Serve documentation
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Built on FastAPI, Flet, Typer, and other open-source tools.
|