fast-clean-architecture 1.1.0__tar.gz → 1.1.2__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 (70) hide show
  1. fast_clean_architecture-1.1.2/.pre-commit-config.yaml +105 -0
  2. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/PKG-INFO +124 -67
  3. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/README.md +123 -66
  4. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/docs/CHANGELOG.md +52 -2
  5. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/__init__.py +2 -2
  6. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/cli.py +18 -13
  7. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/generators/validation_config.py +3 -3
  8. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fca_config.yaml +111 -3
  9. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/pyproject.toml +1 -1
  10. fast_clean_architecture-1.1.2/systems/__init__.py +3 -0
  11. fast_clean_architecture-1.1.0/.pre-commit-config.yaml +0 -17
  12. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/.gitignore +0 -0
  13. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/LICENSE +0 -0
  14. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/docs/CODE_OF_CONDUCT.md +0 -0
  15. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/docs/CONTRIBUTING.md +0 -0
  16. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/docs/DEPENDENCY_INJECTION_GUIDE.md +0 -0
  17. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/docs/ENHANCED_TYPE_SAFETY.md +0 -0
  18. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/docs/TEMPLATE_VALIDATION_REFACTOR.md +0 -0
  19. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/docs/getting-started.md +0 -0
  20. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/docs/template_validation_guide.md +0 -0
  21. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/examples/components_spec.yaml +0 -0
  22. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/examples/error_handling_examples.py +0 -0
  23. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/analytics.py +0 -0
  24. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/config.py +0 -0
  25. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/error_tracking.py +0 -0
  26. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/exceptions.py +0 -0
  27. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/generators/__init__.py +0 -0
  28. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/generators/component_generator.py +0 -0
  29. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/generators/config_updater.py +0 -0
  30. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/generators/generator_factory.py +0 -0
  31. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/generators/package_generator.py +0 -0
  32. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/generators/template_validator.py +0 -0
  33. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/generators/validation_metrics.py +0 -0
  34. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/health.py +0 -0
  35. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/logging_config.py +0 -0
  36. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/metrics.py +0 -0
  37. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/protocols.py +0 -0
  38. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/__init__.py +0 -0
  39. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/__init__.py.j2 +0 -0
  40. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/api.py.j2 +0 -0
  41. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/command.py.j2 +0 -0
  42. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/entity.py.j2 +0 -0
  43. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/external.py.j2 +0 -0
  44. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/infrastructure_repository.py.j2 +0 -0
  45. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/model.py.j2 +0 -0
  46. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/query.py.j2 +0 -0
  47. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/repository.py.j2 +0 -0
  48. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/schemas.py.j2 +0 -0
  49. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/service.py.j2 +0 -0
  50. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/templates/value_object.py.j2 +0 -0
  51. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/utils.py +0 -0
  52. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/fast_clean_architecture/validation.py +0 -0
  53. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/poetry.lock +0 -0
  54. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/requirements-dev.txt +0 -0
  55. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/requirements.txt +0 -0
  56. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/__init__.py +0 -0
  57. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/conftest.py +0 -0
  58. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/test_cli.py +0 -0
  59. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/test_component_generator.py +0 -0
  60. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/test_config.py +0 -0
  61. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/test_cross_platform_compatibility.py +0 -0
  62. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/test_enhanced_type_safety.py +0 -0
  63. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/test_generator_factory.py +0 -0
  64. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/test_integration.py +0 -0
  65. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/test_security.py +0 -0
  66. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/test_symlink_security.py +0 -0
  67. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/test_template_security.py +0 -0
  68. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/test_template_validation.py +0 -0
  69. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/tests/test_utils.py +0 -0
  70. {fast_clean_architecture-1.1.0 → fast_clean_architecture-1.1.2}/update-requirements.sh +0 -0
@@ -0,0 +1,105 @@
1
+ repos:
2
+ # Dependency Management (Current)
3
+ - repo: local
4
+ hooks:
5
+ - id: export-requirements
6
+ name: Export requirements.txt
7
+ entry: poetry export -f requirements.txt --output requirements.txt
8
+ language: system
9
+ files: pyproject.toml
10
+ pass_filenames: false
11
+ stages: [commit]
12
+ - id: export-dev-requirements
13
+ name: Export dev requirements.txt
14
+ entry: poetry export -f requirements.txt --output requirements-dev.txt --extras dev
15
+ language: system
16
+ files: pyproject.toml
17
+ pass_filenames: false
18
+ stages: [commit]
19
+
20
+ # Code Formatting
21
+ - repo: https://github.com/psf/black
22
+ rev: 23.12.1
23
+ hooks:
24
+ - id: black
25
+ name: Format code with Black
26
+ language_version: python3
27
+ types: [python]
28
+
29
+ - repo: https://github.com/pycqa/isort
30
+ rev: 5.13.2
31
+ hooks:
32
+ - id: isort
33
+ name: Sort imports with isort
34
+ args: ["--profile", "black"]
35
+ types: [python]
36
+
37
+ # Code Quality & Linting
38
+ - repo: https://github.com/pycqa/flake8
39
+ rev: 7.0.0
40
+ hooks:
41
+ - id: flake8
42
+ name: Lint with flake8
43
+ args: ["--max-line-length=88", "--extend-ignore=E203,W503"]
44
+ types: [python]
45
+
46
+ # Type Checking
47
+ - repo: https://github.com/pre-commit/mirrors-mypy
48
+ rev: v1.8.0
49
+ hooks:
50
+ - id: mypy
51
+ name: Type check with mypy
52
+ additional_dependencies: [types-all]
53
+ args: ["--ignore-missing-imports"]
54
+ types: [python]
55
+
56
+ # Security Scanning
57
+ - repo: https://github.com/pycqa/bandit
58
+ rev: 1.7.5
59
+ hooks:
60
+ - id: bandit
61
+ name: Security scan with bandit
62
+ args: ["-r", "fast_clean_architecture"]
63
+ types: [python]
64
+
65
+ # General Code Quality
66
+ - repo: https://github.com/pre-commit/pre-commit-hooks
67
+ rev: v4.5.0
68
+ hooks:
69
+ - id: trailing-whitespace
70
+ name: Remove trailing whitespace
71
+ - id: end-of-file-fixer
72
+ name: Fix end of files
73
+ - id: check-yaml
74
+ name: Check YAML syntax
75
+ - id: check-toml
76
+ name: Check TOML syntax
77
+ - id: check-json
78
+ name: Check JSON syntax
79
+ - id: check-merge-conflict
80
+ name: Check for merge conflicts
81
+ - id: check-added-large-files
82
+ name: Check for large files
83
+ args: ['--maxkb=500']
84
+ - id: debug-statements
85
+ name: Check for debug statements
86
+ types: [python]
87
+
88
+ # Documentation
89
+ - repo: https://github.com/pycqa/pydocstyle
90
+ rev: 6.3.0
91
+ hooks:
92
+ - id: pydocstyle
93
+ name: Check docstring style
94
+ args: ["--convention=google"]
95
+ types: [python]
96
+
97
+ # Dependency Security
98
+ - repo: local
99
+ hooks:
100
+ - id: safety-check
101
+ name: Check dependencies for security vulnerabilities
102
+ entry: poetry run safety check
103
+ language: system
104
+ pass_filenames: false
105
+ stages: [commit]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fast-clean-architecture
3
- Version: 1.1.0
3
+ Version: 1.1.2
4
4
  Summary: CLI tool for scaffolding clean architecture in FastAPI projects
5
5
  Project-URL: Homepage, https://github.com/alden-technologies/fast-clean-architecture
6
6
  Project-URL: Repository, https://github.com/alden-technologies/fast-clean-architecture
@@ -37,7 +37,7 @@ Description-Content-Type: text/markdown
37
37
 
38
38
  # Fast Clean Architecture
39
39
 
40
- [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
40
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
41
41
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
42
42
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
43
43
 
@@ -50,7 +50,10 @@ A powerful CLI tool for scaffolding clean architecture in FastAPI projects. Gene
50
50
  - **Code Generation**: Automated scaffolding for entities, repositories, services, and more
51
51
  - **Template System**: Customizable Jinja2 templates for code generation
52
52
  - **Type Safety**: Full type hints and Pydantic validation
53
- - **Modern Python**: Built for Python 3.8+ with async/await support
53
+ - **Modern Python**: Built for Python 3.9+ with async/await support
54
+ - **Analytics & Monitoring**: Built-in usage analytics, error tracking, and health monitoring
55
+ - **Security Features**: Template validation, input sanitization, and secure file operations
56
+ - **Batch Operations**: Create multiple components from YAML specifications
54
57
  - **CLI Interface**: Intuitive command-line interface with rich output
55
58
  - **Configuration Management**: YAML-based project configuration with versioning
56
59
 
@@ -68,52 +71,6 @@ pip install fast-clean-architecture
68
71
  poetry add fast-clean-architecture
69
72
  ```
70
73
 
71
- ### From Source
72
-
73
- #### Using Poetry (Recommended)
74
- ```bash
75
- git clone https://github.com/alden-technologies/fast-clean-architecture.git
76
- cd fast-clean-architecture
77
- poetry install
78
- ```
79
-
80
- #### Using pip with requirements.txt
81
- ```bash
82
- git clone https://github.com/alden-technologies/fast-clean-architecture.git
83
- cd fast-clean-architecture
84
- pip install -r requirements.txt
85
- ```
86
-
87
- #### Using pip (editable install)
88
- ```bash
89
- git clone https://github.com/alden-technologies/fast-clean-architecture.git
90
- cd fast-clean-architecture
91
- pip install -e .
92
- ```
93
-
94
- ### Development Installation
95
-
96
- #### Using Poetry (Recommended)
97
- ```bash
98
- git clone https://github.com/alden-technologies/fast-clean-architecture.git
99
- cd fast-clean-architecture
100
- poetry install --extras dev
101
- ```
102
-
103
- #### Using pip with dev requirements
104
- ```bash
105
- git clone https://github.com/alden-technologies/fast-clean-architecture.git
106
- cd fast-clean-architecture
107
- pip install -r requirements-dev.txt
108
- ```
109
-
110
- #### Using pip (editable install with dev dependencies)
111
- ```bash
112
- git clone https://github.com/alden-technologies/fast-clean-architecture.git
113
- cd fast-clean-architecture
114
- pip install -e ".[dev]"
115
- ```
116
-
117
74
  **Note**: This project uses Poetry for dependency management. The `requirements.txt` and `requirements-dev.txt` files are provided for convenience and compatibility with pip-based workflows.
118
75
 
119
76
  ## 🏗️ Architecture Overview
@@ -147,7 +104,7 @@ Fast Clean Architecture follows the clean architecture pattern with these layers
147
104
 
148
105
  **Important**: This tool is designed to scaffold clean architecture components for FastAPI projects. You should have:
149
106
 
150
- - **Python 3.8+** installed on your system
107
+ - **Python 3.9+** installed on your system
151
108
  - **Basic understanding of FastAPI** and web API development
152
109
  - **Familiarity with clean architecture principles** (recommended but not required)
153
110
  - **A new or existing directory** where you want to create your FastAPI project structure
@@ -316,19 +273,47 @@ Your API will be available at `http://localhost:8000` with automatic documentati
316
273
  | **Presentation** | `api` | FastAPI routers and endpoints |
317
274
  | | `schemas` | Pydantic request/response schemas |
318
275
 
319
- ### CLI Options
276
+ ### CLI Commands
277
+
278
+ #### Core Commands
279
+ ```bash
280
+ # Project initialization
281
+ fca-scaffold init # Initialize new project
282
+ fca-scaffold create-system-context # Create system (bounded context)
283
+ fca-scaffold create-module # Create module within system
284
+ fca-scaffold create-component # Create individual components
285
+ ```
286
+
287
+ #### Batch Operations
288
+ ```bash
289
+ # Create multiple components from YAML specification
290
+ fca-scaffold batch-create components_spec.yaml
291
+ fca-scaffold batch-create my-spec.yaml --dry-run # Preview only
292
+ ```
320
293
 
294
+ #### Project Management
321
295
  ```bash
322
- # Global options
323
- fca-scaffold --help
324
- fca-scaffold --version
325
- fca-scaffold --dry-run # Preview changes without writing files
326
- fca-scaffold --force # Overwrite existing files
327
- fca-scaffold --verbose # Detailed output
328
-
329
- # Command-specific help
330
- fca-scaffold init --help
331
- fca-scaffold create-component --help
296
+ # Project status and configuration
297
+ fca-scaffold status # Show project overview
298
+ fca-scaffold config show # Display configuration
299
+ fca-scaffold config validate # Validate configuration
300
+ fca-scaffold system-status # Show system health and analytics
301
+ ```
302
+
303
+ #### Help and Information
304
+ ```bash
305
+ # Get help and version info
306
+ fca-scaffold version # Show version information
307
+ fca-scaffold --help # General help
308
+ ```
309
+
310
+ #### Global Options
311
+ ```bash
312
+ # Available for most commands
313
+ --dry-run # Preview changes without writing files
314
+ --force # Overwrite existing files
315
+ --verbose # Detailed output
316
+ --config # Specify custom config file
332
317
  ```
333
318
 
334
319
  ### Configuration File
@@ -362,6 +347,71 @@ project:
362
347
  api: ["user"]
363
348
  ```
364
349
 
350
+ ## 📊 Batch Component Creation
351
+
352
+ ### YAML Specification Format
353
+
354
+ Create multiple components efficiently using YAML specifications:
355
+
356
+ ```yaml
357
+ # components_spec.yaml
358
+ systems:
359
+ - name: admin
360
+ description: "Admin management system"
361
+ modules:
362
+ - name: authentication
363
+ description: "Admin authentication module"
364
+ components:
365
+ domain:
366
+ entities: [AdminUser, AdminRole]
367
+ value_objects: [AdminEmail, AdminPassword]
368
+ repositories: [AdminUserRepository]
369
+ application:
370
+ services: [AdminAuthService]
371
+ commands: [CreateAdminUser, UpdateAdminUser]
372
+ queries: [GetAdminUser, ListAdminUsers]
373
+ infrastructure:
374
+ repositories: [AdminUserRepository]
375
+ models: [AdminUserModel]
376
+ external: [AdminEmailService]
377
+ presentation:
378
+ api: [AdminAuthRouter]
379
+ schemas: [AdminUserSchema, AdminAuthSchema]
380
+ ```
381
+
382
+ ### Usage
383
+
384
+ ```bash
385
+ # Create all components from specification
386
+ fca-scaffold batch-create components_spec.yaml
387
+
388
+ # Preview what would be created
389
+ fca-scaffold batch-create components_spec.yaml --dry-run
390
+
391
+ # Force overwrite existing files
392
+ fca-scaffold batch-create components_spec.yaml --force
393
+ ```
394
+
395
+ ## 📊 System Monitoring
396
+
397
+ ### Health and Analytics
398
+
399
+ Fast Clean Architecture includes built-in monitoring capabilities:
400
+
401
+ ```bash
402
+ # View system health and usage analytics
403
+ fca-scaffold system-status
404
+
405
+ # Detailed system information
406
+ fca-scaffold system-status --verbose
407
+ ```
408
+
409
+ **Features:**
410
+ - **Usage Analytics**: Track command usage and component creation patterns
411
+ - **Error Tracking**: Monitor and log errors with detailed context
412
+ - **Health Monitoring**: System resource usage and performance metrics
413
+ - **Security Monitoring**: Template validation and input sanitization tracking
414
+
365
415
  ## 🎨 Customization
366
416
 
367
417
  ### Custom Templates
@@ -433,9 +483,7 @@ pytest -v
433
483
  ```bash
434
484
  git clone https://github.com/alden-technologies/fast-clean-architecture.git
435
485
  cd fast-clean-architecture
436
- python -m venv venv
437
- source venv/bin/activate # On Windows: venv\Scripts\activate
438
- pip install -e ".[dev]"
486
+ poetry install --with dev
439
487
  ```
440
488
 
441
489
  ### Code Quality
@@ -457,11 +505,20 @@ bandit -r fast_clean_architecture
457
505
  safety check
458
506
  ```
459
507
 
508
+ ### Security Updates
509
+
510
+ This project maintains up-to-date dependencies with security patches:
511
+
512
+ - **Black 24.3.0+**: Fixes CVE-2024-21503 (ReDoS vulnerability)
513
+ - **Pip 25.0+**: Fixes PVE-2025-75180 (malicious wheel execution)
514
+ - **Setuptools 78.1.1+**: Fixes CVE-2025-47273 (path traversal vulnerability)
515
+
516
+ All dependencies are pinned with SHA256 hashes for supply chain security.
517
+
460
518
  ### Pre-commit Hooks
461
519
 
462
520
  ```bash
463
- pip install pre-commit
464
- pre-commit install
521
+ poetry run pre-commit install
465
522
  ```
466
523
 
467
524
  ## 📖 Examples
@@ -548,4 +605,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
548
605
 
549
606
  ---
550
607
 
551
- **Made with ❤️ by [Alden Technologies](https://aldentechnologies.com)**
608
+ **Made with ❤️ by [Adegbenga Agoro](https://www.adegbengaagoro.co), [Founder of Alden Technologies](https://www.aldentechnologies.com)**
@@ -1,6 +1,6 @@
1
1
  # Fast Clean Architecture
2
2
 
3
- [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
3
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
6
6
 
@@ -13,7 +13,10 @@ A powerful CLI tool for scaffolding clean architecture in FastAPI projects. Gene
13
13
  - **Code Generation**: Automated scaffolding for entities, repositories, services, and more
14
14
  - **Template System**: Customizable Jinja2 templates for code generation
15
15
  - **Type Safety**: Full type hints and Pydantic validation
16
- - **Modern Python**: Built for Python 3.8+ with async/await support
16
+ - **Modern Python**: Built for Python 3.9+ with async/await support
17
+ - **Analytics & Monitoring**: Built-in usage analytics, error tracking, and health monitoring
18
+ - **Security Features**: Template validation, input sanitization, and secure file operations
19
+ - **Batch Operations**: Create multiple components from YAML specifications
17
20
  - **CLI Interface**: Intuitive command-line interface with rich output
18
21
  - **Configuration Management**: YAML-based project configuration with versioning
19
22
 
@@ -31,52 +34,6 @@ pip install fast-clean-architecture
31
34
  poetry add fast-clean-architecture
32
35
  ```
33
36
 
34
- ### From Source
35
-
36
- #### Using Poetry (Recommended)
37
- ```bash
38
- git clone https://github.com/alden-technologies/fast-clean-architecture.git
39
- cd fast-clean-architecture
40
- poetry install
41
- ```
42
-
43
- #### Using pip with requirements.txt
44
- ```bash
45
- git clone https://github.com/alden-technologies/fast-clean-architecture.git
46
- cd fast-clean-architecture
47
- pip install -r requirements.txt
48
- ```
49
-
50
- #### Using pip (editable install)
51
- ```bash
52
- git clone https://github.com/alden-technologies/fast-clean-architecture.git
53
- cd fast-clean-architecture
54
- pip install -e .
55
- ```
56
-
57
- ### Development Installation
58
-
59
- #### Using Poetry (Recommended)
60
- ```bash
61
- git clone https://github.com/alden-technologies/fast-clean-architecture.git
62
- cd fast-clean-architecture
63
- poetry install --extras dev
64
- ```
65
-
66
- #### Using pip with dev requirements
67
- ```bash
68
- git clone https://github.com/alden-technologies/fast-clean-architecture.git
69
- cd fast-clean-architecture
70
- pip install -r requirements-dev.txt
71
- ```
72
-
73
- #### Using pip (editable install with dev dependencies)
74
- ```bash
75
- git clone https://github.com/alden-technologies/fast-clean-architecture.git
76
- cd fast-clean-architecture
77
- pip install -e ".[dev]"
78
- ```
79
-
80
37
  **Note**: This project uses Poetry for dependency management. The `requirements.txt` and `requirements-dev.txt` files are provided for convenience and compatibility with pip-based workflows.
81
38
 
82
39
  ## 🏗️ Architecture Overview
@@ -110,7 +67,7 @@ Fast Clean Architecture follows the clean architecture pattern with these layers
110
67
 
111
68
  **Important**: This tool is designed to scaffold clean architecture components for FastAPI projects. You should have:
112
69
 
113
- - **Python 3.8+** installed on your system
70
+ - **Python 3.9+** installed on your system
114
71
  - **Basic understanding of FastAPI** and web API development
115
72
  - **Familiarity with clean architecture principles** (recommended but not required)
116
73
  - **A new or existing directory** where you want to create your FastAPI project structure
@@ -279,19 +236,47 @@ Your API will be available at `http://localhost:8000` with automatic documentati
279
236
  | **Presentation** | `api` | FastAPI routers and endpoints |
280
237
  | | `schemas` | Pydantic request/response schemas |
281
238
 
282
- ### CLI Options
239
+ ### CLI Commands
240
+
241
+ #### Core Commands
242
+ ```bash
243
+ # Project initialization
244
+ fca-scaffold init # Initialize new project
245
+ fca-scaffold create-system-context # Create system (bounded context)
246
+ fca-scaffold create-module # Create module within system
247
+ fca-scaffold create-component # Create individual components
248
+ ```
249
+
250
+ #### Batch Operations
251
+ ```bash
252
+ # Create multiple components from YAML specification
253
+ fca-scaffold batch-create components_spec.yaml
254
+ fca-scaffold batch-create my-spec.yaml --dry-run # Preview only
255
+ ```
283
256
 
257
+ #### Project Management
284
258
  ```bash
285
- # Global options
286
- fca-scaffold --help
287
- fca-scaffold --version
288
- fca-scaffold --dry-run # Preview changes without writing files
289
- fca-scaffold --force # Overwrite existing files
290
- fca-scaffold --verbose # Detailed output
291
-
292
- # Command-specific help
293
- fca-scaffold init --help
294
- fca-scaffold create-component --help
259
+ # Project status and configuration
260
+ fca-scaffold status # Show project overview
261
+ fca-scaffold config show # Display configuration
262
+ fca-scaffold config validate # Validate configuration
263
+ fca-scaffold system-status # Show system health and analytics
264
+ ```
265
+
266
+ #### Help and Information
267
+ ```bash
268
+ # Get help and version info
269
+ fca-scaffold version # Show version information
270
+ fca-scaffold --help # General help
271
+ ```
272
+
273
+ #### Global Options
274
+ ```bash
275
+ # Available for most commands
276
+ --dry-run # Preview changes without writing files
277
+ --force # Overwrite existing files
278
+ --verbose # Detailed output
279
+ --config # Specify custom config file
295
280
  ```
296
281
 
297
282
  ### Configuration File
@@ -325,6 +310,71 @@ project:
325
310
  api: ["user"]
326
311
  ```
327
312
 
313
+ ## 📊 Batch Component Creation
314
+
315
+ ### YAML Specification Format
316
+
317
+ Create multiple components efficiently using YAML specifications:
318
+
319
+ ```yaml
320
+ # components_spec.yaml
321
+ systems:
322
+ - name: admin
323
+ description: "Admin management system"
324
+ modules:
325
+ - name: authentication
326
+ description: "Admin authentication module"
327
+ components:
328
+ domain:
329
+ entities: [AdminUser, AdminRole]
330
+ value_objects: [AdminEmail, AdminPassword]
331
+ repositories: [AdminUserRepository]
332
+ application:
333
+ services: [AdminAuthService]
334
+ commands: [CreateAdminUser, UpdateAdminUser]
335
+ queries: [GetAdminUser, ListAdminUsers]
336
+ infrastructure:
337
+ repositories: [AdminUserRepository]
338
+ models: [AdminUserModel]
339
+ external: [AdminEmailService]
340
+ presentation:
341
+ api: [AdminAuthRouter]
342
+ schemas: [AdminUserSchema, AdminAuthSchema]
343
+ ```
344
+
345
+ ### Usage
346
+
347
+ ```bash
348
+ # Create all components from specification
349
+ fca-scaffold batch-create components_spec.yaml
350
+
351
+ # Preview what would be created
352
+ fca-scaffold batch-create components_spec.yaml --dry-run
353
+
354
+ # Force overwrite existing files
355
+ fca-scaffold batch-create components_spec.yaml --force
356
+ ```
357
+
358
+ ## 📊 System Monitoring
359
+
360
+ ### Health and Analytics
361
+
362
+ Fast Clean Architecture includes built-in monitoring capabilities:
363
+
364
+ ```bash
365
+ # View system health and usage analytics
366
+ fca-scaffold system-status
367
+
368
+ # Detailed system information
369
+ fca-scaffold system-status --verbose
370
+ ```
371
+
372
+ **Features:**
373
+ - **Usage Analytics**: Track command usage and component creation patterns
374
+ - **Error Tracking**: Monitor and log errors with detailed context
375
+ - **Health Monitoring**: System resource usage and performance metrics
376
+ - **Security Monitoring**: Template validation and input sanitization tracking
377
+
328
378
  ## 🎨 Customization
329
379
 
330
380
  ### Custom Templates
@@ -396,9 +446,7 @@ pytest -v
396
446
  ```bash
397
447
  git clone https://github.com/alden-technologies/fast-clean-architecture.git
398
448
  cd fast-clean-architecture
399
- python -m venv venv
400
- source venv/bin/activate # On Windows: venv\Scripts\activate
401
- pip install -e ".[dev]"
449
+ poetry install --with dev
402
450
  ```
403
451
 
404
452
  ### Code Quality
@@ -420,11 +468,20 @@ bandit -r fast_clean_architecture
420
468
  safety check
421
469
  ```
422
470
 
471
+ ### Security Updates
472
+
473
+ This project maintains up-to-date dependencies with security patches:
474
+
475
+ - **Black 24.3.0+**: Fixes CVE-2024-21503 (ReDoS vulnerability)
476
+ - **Pip 25.0+**: Fixes PVE-2025-75180 (malicious wheel execution)
477
+ - **Setuptools 78.1.1+**: Fixes CVE-2025-47273 (path traversal vulnerability)
478
+
479
+ All dependencies are pinned with SHA256 hashes for supply chain security.
480
+
423
481
  ### Pre-commit Hooks
424
482
 
425
483
  ```bash
426
- pip install pre-commit
427
- pre-commit install
484
+ poetry run pre-commit install
428
485
  ```
429
486
 
430
487
  ## 📖 Examples
@@ -511,4 +568,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
511
568
 
512
569
  ---
513
570
 
514
- **Made with ❤️ by [Alden Technologies](https://aldentechnologies.com)**
571
+ **Made with ❤️ by [Adegbenga Agoro](https://www.adegbengaagoro.co), [Founder of Alden Technologies](https://www.aldentechnologies.com)**
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+ ### Changed
12
+ ### Fixed
13
+ ### Security
14
+
15
+ ## [1.1.2] - 2025-06-27
16
+
10
17
  ### Added
11
18
  - Comprehensive template validation system
12
19
  - Robust error handling with rollback mechanisms
@@ -16,6 +23,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
23
  - Improved entity and service templates with validation
17
24
  - Type hints and metadata in generated code
18
25
  - Atomic file operations for configuration management
26
+ - Analytics and error tracking modules
27
+ - Health monitoring and metrics collection
28
+ - Structured logging with configurable levels
29
+ - File locking mechanisms for concurrent operations
30
+ - Enhanced CLI commands (batch-create, help-guide, system-status)
19
31
 
20
32
  ### Changed
21
33
  - Repository templates now use proper abstract base classes
@@ -23,6 +35,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
23
35
  - Improved template variable consistency across components
24
36
  - Better error messages and validation feedback
25
37
  - Updated documentation with comprehensive examples
38
+ - Python version requirement updated to >=3.9
39
+ - Improved project structure with better separation of concerns
26
40
 
27
41
  ### Fixed
28
42
  - Template rendering validation issues
@@ -30,6 +44,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
30
44
  - Configuration backup and restore mechanisms
31
45
  - Import path generation in templates
32
46
  - Timestamp format validation
47
+ - **create-module command**: Implemented fail-fast validation to prevent creating modules in non-existent systems, avoiding inconsistent state between file system and configuration
48
+ - Version synchronization across project files
33
49
 
34
50
  ### Security
35
51
  - Added dependency vulnerability scanning
@@ -43,8 +59,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
43
59
  - Replaced MD5 hashing with SHA256 for error ID generation
44
60
  - Enabled Jinja2 autoescape to prevent XSS vulnerabilities
45
61
  - Replaced assert statements with proper exception handling
62
+ - Implemented secure template validation and sanitization
63
+
64
+ ## [1.1.1] - 2025-06-26
65
+
66
+ ### Fixed
67
+ - Minor bug fixes and stability improvements
68
+ - Documentation updates
69
+
70
+ ## [1.1.0] - 2025-06-25
71
+
72
+ ### Added
73
+ - Enhanced template system with validation
74
+ - Improved error handling mechanisms
75
+ - Additional CLI functionality
76
+
77
+ ### Changed
78
+ - Performance optimizations
79
+ - Code quality improvements
80
+
81
+ ## [1.0.0] - 2025-06-24
82
+
83
+ ### Added
84
+ - Production-ready release
85
+ - Comprehensive test coverage
86
+ - Full documentation
87
+ - Stable API
88
+
89
+ ### Changed
90
+ - Upgraded from beta to stable release
91
+ - Enhanced reliability and performance
46
92
 
47
- ## [0.1.0] - 2024-01-15
93
+ ## [0.1.0] - 2025-06-23
48
94
 
49
95
  ### Added
50
96
  - Initial release of Fast Clean Architecture
@@ -90,5 +136,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
90
136
  - Architecture guidelines
91
137
  - Template customization guide
92
138
 
93
- [Unreleased]: https://github.com/alden-technologies/fast-clean-architecture/compare/v0.1.0...HEAD
139
+ [Unreleased]: https://github.com/alden-technologies/fast-clean-architecture/compare/v1.1.2...HEAD
140
+ [1.1.2]: https://github.com/alden-technologies/fast-clean-architecture/compare/v1.1.1...v1.1.2
141
+ [1.1.1]: https://github.com/alden-technologies/fast-clean-architecture/compare/v1.1.0...v1.1.1
142
+ [1.1.0]: https://github.com/alden-technologies/fast-clean-architecture/compare/v1.0.0...v1.1.0
143
+ [1.0.0]: https://github.com/alden-technologies/fast-clean-architecture/compare/v0.1.0...v1.0.0
94
144
  [0.1.0]: https://github.com/alden-technologies/fast-clean-architecture/releases/tag/v0.1.0
@@ -1,8 +1,8 @@
1
1
  """Fast Clean Architecture - CLI tool for scaffolding clean architecture in FastAPI projects."""
2
2
 
3
- __version__ = "1.0.0"
3
+ __version__ = "1.1.2"
4
4
  __author__ = "Agoro, Adegbenga. B (IAM)"
5
- __email__ = "adegbenga@alden-technologies.com"
5
+ __email__ = "opensource@aldentechnologies.com"
6
6
 
7
7
  from .cli import app
8
8
  from .config import Config
@@ -335,11 +335,23 @@ def create_module(
335
335
  if not validate_python_identifier(sanitized_module):
336
336
  raise ValidationError(f"Invalid module name: {module_name}")
337
337
 
338
- # Initialize generators
338
+ # Initialize config updater for validation
339
339
  config_updater = ConfigUpdater(config_path, console)
340
+
341
+ # Validate system exists BEFORE creating any directory structure
342
+ if sanitized_system not in config_updater.config.project.systems:
343
+ raise ValidationError(
344
+ f"System '{sanitized_system}' not found.\n\n"
345
+ f"To create the module, first create the system:\n"
346
+ f' fca-scaffold create-system-context {sanitized_system} --description "[SYSTEM_DESCRIPTION]"\n\n'
347
+ f"Then create your module:\n"
348
+ f" fca-scaffold create-module {sanitized_system} {sanitized_module}"
349
+ )
350
+
351
+ # Initialize package generator
340
352
  package_generator = PackageGenerator(console)
341
353
 
342
- # Create module structure
354
+ # Create module structure (only after validation passes)
343
355
  package_generator.create_module_structure(
344
356
  base_path=project_root,
345
357
  system_name=sanitized_system,
@@ -348,7 +360,7 @@ def create_module(
348
360
  )
349
361
 
350
362
  if not dry_run:
351
- # Update configuration
363
+ # Update configuration (system existence already validated)
352
364
  config_updater.add_module(sanitized_system, sanitized_module, description)
353
365
 
354
366
  console.print(
@@ -878,8 +890,8 @@ def system_status(
878
890
 
879
891
  console.print("\n[bold blue]📊 Fast Clean Architecture Status[/bold blue]\n")
880
892
 
881
- # Health Status
882
- console.print("[bold yellow]🏥 System Health[/bold yellow]")
893
+ # FCA System Health
894
+ console.print("[bold yellow]🏥 FCA System Health[/bold yellow]")
883
895
  health_monitor = get_health_monitor()
884
896
  health_data = health_monitor.get_system_health()
885
897
 
@@ -887,20 +899,13 @@ def system_status(
887
899
  console.print(f"[red]❌ Health check failed: {health_data['error']}[/red]")
888
900
  else:
889
901
  process_data = health_data.get("process", {})
890
- system_data = health_data.get("system", {})
891
902
 
892
903
  console.print(
893
904
  f" • Memory Usage: {process_data.get('memory_rss_mb', 0):.1f} MB ({process_data.get('memory_percent', 0):.1f}%)"
894
905
  )
895
906
  console.print(f" • CPU Usage: {process_data.get('cpu_percent', 0):.1f}%")
896
907
  console.print(
897
- f" • System Memory: {system_data.get('memory_used_percent', 0):.1f}% used"
898
- )
899
- console.print(
900
- f" • Disk Space: {system_data.get('disk_used_percent', 0):.1f}% used"
901
- )
902
- console.print(
903
- f" • Uptime: {health_data.get('uptime_seconds', 0):.1f} seconds"
908
+ f" • Session Duration: {health_data.get('uptime_seconds', 0):.1f} seconds"
904
909
  )
905
910
 
906
911
  # Error Tracking
@@ -39,9 +39,9 @@ class ValidationConfig:
39
39
 
40
40
  # Basic monitoring
41
41
  enable_metrics: bool = False # Disabled by default to reduce complexity
42
- log_level: Literal[
43
- "DEBUG", "INFO", "WARNING", "ERROR"
44
- ] = "WARNING" # Reduced logging
42
+ log_level: Literal["DEBUG", "INFO", "WARNING", "ERROR"] = (
43
+ "WARNING" # Reduced logging
44
+ )
45
45
 
46
46
  def __post_init__(self) -> None:
47
47
  """Validate configuration after initialization."""
@@ -3,12 +3,12 @@ project:
3
3
  description: My FastAPI project
4
4
  version: 0.1.0
5
5
  created_at: '2025-06-26T09:30:07.373319Z'
6
- updated_at: '2025-06-26T09:30:15.594738Z'
6
+ updated_at: '2025-06-27T12:40:08.759840Z'
7
7
  systems:
8
8
  test_system:
9
9
  description: Test system for module API naming
10
10
  created_at: '2025-06-26T09:30:07.378077Z'
11
- updated_at: '2025-06-26T09:30:15.594738Z'
11
+ updated_at: '2025-06-27T12:40:08.759840Z'
12
12
  modules:
13
13
  auth:
14
14
  description: Authentication module
@@ -24,7 +24,115 @@ project:
24
24
  queries: []
25
25
  models: []
26
26
  external: []
27
-
27
+ api: []
28
+ schemas: []
29
+ default_imports:
30
+ entities:
31
+ - dataclasses
32
+ - typing
33
+ - datetime
34
+ repositories:
35
+ - typing
36
+ services:
37
+ - typing
38
+ api:
39
+ - fastapi
40
+ - typing
41
+ schemas:
42
+ - pydantic
43
+ - typing
44
+ application:
45
+ entities: []
46
+ repositories: []
47
+ value_objects: []
48
+ services: []
49
+ commands: []
50
+ queries: []
51
+ models: []
52
+ external: []
53
+ api: []
54
+ schemas: []
55
+ default_imports:
56
+ entities:
57
+ - dataclasses
58
+ - typing
59
+ - datetime
60
+ repositories:
61
+ - typing
62
+ services:
63
+ - typing
64
+ api:
65
+ - fastapi
66
+ - typing
67
+ schemas:
68
+ - pydantic
69
+ - typing
70
+ infrastructure:
71
+ entities: []
72
+ repositories: []
73
+ value_objects: []
74
+ services: []
75
+ commands: []
76
+ queries: []
77
+ models: []
78
+ external: []
79
+ api: []
80
+ schemas: []
81
+ default_imports:
82
+ entities:
83
+ - dataclasses
84
+ - typing
85
+ - datetime
86
+ repositories:
87
+ - typing
88
+ services:
89
+ - typing
90
+ api:
91
+ - fastapi
92
+ - typing
93
+ schemas:
94
+ - pydantic
95
+ - typing
96
+ presentation:
97
+ entities: []
98
+ repositories: []
99
+ value_objects: []
100
+ services: []
101
+ commands: []
102
+ queries: []
103
+ models: []
104
+ external: []
105
+ api: []
106
+ schemas: []
107
+ default_imports:
108
+ entities:
109
+ - dataclasses
110
+ - typing
111
+ - datetime
112
+ repositories:
113
+ - typing
114
+ services:
115
+ - typing
116
+ api:
117
+ - fastapi
118
+ - typing
119
+ schemas:
120
+ - pydantic
121
+ - typing
122
+ test_module:
123
+ description: Test module for validation
124
+ created_at: '2025-06-27T12:40:08.759840Z'
125
+ updated_at: '2025-06-27T12:40:08.759840Z'
126
+ components:
127
+ domain:
128
+ entities: []
129
+ repositories: []
130
+ value_objects: []
131
+ services: []
132
+ commands: []
133
+ queries: []
134
+ models: []
135
+ external: []
28
136
  api: []
29
137
  schemas: []
30
138
  default_imports:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fast-clean-architecture"
7
- version = "1.1.0"
7
+ version = "1.1.2"
8
8
  description = "CLI tool for scaffolding clean architecture in FastAPI projects"
9
9
  authors = [{name = "Adegbenga Agoro", email = "adegbenga@aldentechnologies.com"}]
10
10
  license = {text = "MIT"}
@@ -0,0 +1,3 @@
1
+ """
2
+ Systems package for fast-clean-architecture.
3
+ """
@@ -1,17 +0,0 @@
1
- repos:
2
- - repo: local
3
- hooks:
4
- - id: export-requirements
5
- name: Export requirements.txt
6
- entry: poetry export -f requirements.txt --output requirements.txt
7
- language: system
8
- files: pyproject.toml
9
- pass_filenames: false
10
- stages: [commit]
11
- - id: export-dev-requirements
12
- name: Export dev requirements.txt
13
- entry: poetry export -f requirements.txt --output requirements-dev.txt --extras dev
14
- language: system
15
- files: pyproject.toml
16
- pass_filenames: false
17
- stages: [commit]