@torus-engineering/tas-kit 1.13.0 → 2.1.0
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.
- package/.tas/_platform/claude-code/settings.json +58 -46
- package/.tas/_platform/hooks/code-quality.js +127 -127
- package/.tas/_platform/hooks/session-end.js +111 -111
- package/.tas/agents/architect.md +53 -53
- package/.tas/agents/aws-reviewer.md +71 -71
- package/.tas/agents/build-resolver.md +89 -59
- package/.tas/agents/code-explorer.md +63 -63
- package/.tas/agents/csharp-reviewer.md +62 -62
- package/.tas/agents/database-reviewer.md +73 -73
- package/.tas/agents/doc-updater.md +68 -66
- package/.tas/agents/python-reviewer.md +67 -67
- package/.tas/agents/security-reviewer.md +79 -79
- package/.tas/agents/software-engineer.md +53 -0
- package/.tas/agents/typescript-reviewer.md +65 -65
- package/.tas/commands/ado-create.md +33 -28
- package/.tas/commands/ado-delete.md +26 -22
- package/.tas/commands/ado-get.md +24 -20
- package/.tas/commands/ado-status.md +22 -18
- package/.tas/commands/ado-update.md +31 -27
- package/.tas/commands/tas-adr.md +37 -33
- package/.tas/commands/tas-apitest-plan.md +177 -173
- package/.tas/commands/tas-apitest.md +147 -143
- package/.tas/commands/tas-brainstorm.md +23 -19
- package/.tas/commands/tas-brd.md +50 -0
- package/.tas/commands/tas-bug.md +127 -113
- package/.tas/commands/tas-checklist.md +180 -0
- package/.tas/commands/tas-debug.md +103 -0
- package/.tas/commands/tas-design.md +41 -37
- package/.tas/commands/tas-dev.md +225 -125
- package/.tas/commands/tas-e2e-mobile.md +146 -155
- package/.tas/commands/tas-e2e-web.md +150 -163
- package/.tas/commands/tas-e2e.md +289 -102
- package/.tas/commands/tas-feature.md +181 -47
- package/.tas/commands/tas-fix.md +72 -51
- package/.tas/commands/tas-functest-mobile.md +138 -144
- package/.tas/commands/tas-functest-web.md +176 -192
- package/.tas/commands/tas-functest.md +225 -76
- package/.tas/commands/tas-init.md +22 -17
- package/.tas/commands/tas-master-plan.md +300 -0
- package/.tas/commands/tas-orchestrate.md +159 -0
- package/.tas/commands/tas-plan.md +152 -117
- package/.tas/commands/tas-prd.md +57 -37
- package/.tas/commands/tas-review-pr.md +174 -0
- package/.tas/commands/tas-review.md +115 -113
- package/.tas/commands/tas-sad.md +47 -43
- package/.tas/commands/tas-security.md +91 -87
- package/.tas/commands/tas-spec.md +54 -50
- package/.tas/commands/tas-status.md +25 -16
- package/.tas/project-status-example.yaml +3 -1
- package/.tas/rules/ado-integration.md +67 -65
- package/.tas/rules/common/api-design.md +517 -517
- package/.tas/rules/common/build-debug-loop.md +233 -0
- package/.tas/rules/common/code-review.md +4 -0
- package/.tas/rules/common/feature-done.md +42 -0
- package/.tas/rules/common/post-implementation-review.md +4 -0
- package/.tas/rules/common/project-status.md +33 -16
- package/.tas/rules/common/sad-impact.md +81 -0
- package/.tas/rules/common/tdd.md +104 -89
- package/.tas/rules/csharp/api-testing.md +2 -2
- package/.tas/rules/csharp/torus-core-framework.md +128 -0
- package/.tas/tas-example.yaml +9 -32
- package/.tas/templates/AGENTS.md +13 -0
- package/.tas/templates/API-Test-Spec.md +5 -4
- package/.tas/templates/BRD.md +133 -0
- package/.tas/templates/Bug.md +15 -0
- package/.tas/templates/E2E-Execution-Report.md +8 -8
- package/.tas/templates/E2E-Mobile-Spec.md +6 -8
- package/.tas/templates/E2E-Report.md +2 -2
- package/.tas/templates/E2E-Scenario.md +22 -22
- package/.tas/templates/E2E-Test-Spec.md +274 -0
- package/.tas/templates/E2E-Web-Spec.md +4 -4
- package/.tas/templates/Feature-Technical-Part.md +69 -0
- package/.tas/templates/Feature-Technical-Stack.md +74 -0
- package/.tas/templates/Feature-Technical.md +329 -0
- package/.tas/templates/Feature.md +50 -26
- package/.tas/templates/Func-Test-Script.md +29 -56
- package/.tas/templates/Func-Test-Spec.md +144 -142
- package/.tas/templates/PRD.md +173 -142
- package/.tas/templates/TestChecklist.md +96 -0
- package/.tas/templates/torus-dotnet-bootstrap.md +223 -0
- package/.tas/tools/tas-ado-readme.md +24 -27
- package/.tas/tools/tas-ado.py +328 -25
- package/.tas/tools/tas-github.py +339 -0
- package/README.md +142 -57
- package/bin/cli.js +90 -90
- package/lib/adapters/antigravity.js +131 -131
- package/lib/adapters/claude-code.js +71 -35
- package/lib/adapters/codex.js +157 -157
- package/lib/adapters/cursor.js +80 -80
- package/lib/adapters/index.js +20 -20
- package/lib/adapters/utils.js +81 -81
- package/lib/deleted-files.json +7 -0
- package/lib/install.js +546 -543
- package/package.json +2 -2
- package/.tas/README.md +0 -334
- package/.tas/commands/tas-epic.md +0 -35
- package/.tas/commands/tas-story.md +0 -91
- package/.tas/rules/common/story-done.md +0 -30
- package/.tas/templates/Epic.md +0 -46
- package/.tas/templates/Story.md +0 -90
package/.tas/templates/PRD.md
CHANGED
|
@@ -1,142 +1,173 @@
|
|
|
1
|
-
# Product Requirements Document (PRD)
|
|
2
|
-
|
|
3
|
-
> **Document Status:** [Draft | In Review | Approved | Archived]
|
|
4
|
-
> **Last Updated:** [Date]
|
|
5
|
-
> **Product Manager:** [Name]
|
|
6
|
-
> **Contributors:** [Names/Roles]
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Executive Summary
|
|
11
|
-
|
|
12
|
-
**Product Name:** [Product/Feature Name]
|
|
13
|
-
|
|
14
|
-
**Problem Statement:**
|
|
15
|
-
[In 2-3 sentences, describe the core problem you're solving.]
|
|
16
|
-
|
|
17
|
-
**Proposed Solution:**
|
|
18
|
-
[In 2-3 sentences, describe your solution approach.]
|
|
19
|
-
|
|
20
|
-
**Success Metrics:**
|
|
21
|
-
- [Key metric 1 with target]
|
|
22
|
-
- [Key metric 2 with target]
|
|
23
|
-
|
|
24
|
-
**Launch Target:** [Quarter/Date]
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
##
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- [
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
###
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
###
|
|
81
|
-
|
|
82
|
-
####
|
|
83
|
-
- **
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
####
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
- **
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
1
|
+
# Product Requirements Document (PRD)
|
|
2
|
+
|
|
3
|
+
> **Document Status:** [Draft | In Review | Approved | Archived]
|
|
4
|
+
> **Last Updated:** [Date]
|
|
5
|
+
> **Product Manager:** [Name]
|
|
6
|
+
> **Contributors:** [Names/Roles]
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Executive Summary
|
|
11
|
+
|
|
12
|
+
**Product Name:** [Product/Feature Name]
|
|
13
|
+
|
|
14
|
+
**Problem Statement:**
|
|
15
|
+
[In 2-3 sentences, describe the core problem you're solving.]
|
|
16
|
+
|
|
17
|
+
**Proposed Solution:**
|
|
18
|
+
[In 2-3 sentences, describe your solution approach.]
|
|
19
|
+
|
|
20
|
+
**Success Metrics:**
|
|
21
|
+
- [Key metric 1 with target]
|
|
22
|
+
- [Key metric 2 with target]
|
|
23
|
+
|
|
24
|
+
**Launch Target:** [Quarter/Date]
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Business Context
|
|
29
|
+
|
|
30
|
+
<!--
|
|
31
|
+
COMMAND INSTRUCTION (tas-prd fills this section):
|
|
32
|
+
- docs/brd.md EXISTS → use "With BRD" format below
|
|
33
|
+
- docs/brd.md MISSING → use "Standalone" format below
|
|
34
|
+
Remove this comment block and the unused format when filling.
|
|
35
|
+
-->
|
|
36
|
+
|
|
37
|
+
<!-- WITH BRD: collapse to summary + link -->
|
|
38
|
+
> **BRD:** [Business Requirements Document](brd.md)
|
|
39
|
+
|
|
40
|
+
**Problem:** [1-2 sentence summary from BRD Problem Statement section]
|
|
41
|
+
|
|
42
|
+
**Business Goals:**
|
|
43
|
+
- [Goal 1 — copy from BRD Business Objectives]
|
|
44
|
+
- [Goal 2]
|
|
45
|
+
|
|
46
|
+
### Non-Goals (Out of Scope)
|
|
47
|
+
- [Explicitly what this PRD will NOT do]
|
|
48
|
+
|
|
49
|
+
<!-- STANDALONE: fill all sub-sections when no BRD exists -->
|
|
50
|
+
### Why Now?
|
|
51
|
+
[Market timing, competitive landscape, internal factors]
|
|
52
|
+
|
|
53
|
+
### User Research & Insights
|
|
54
|
+
- **Research Methods:** [Interviews, surveys, usage data]
|
|
55
|
+
- **Key Findings:**
|
|
56
|
+
- [Finding 1]
|
|
57
|
+
- [Finding 2]
|
|
58
|
+
|
|
59
|
+
### Market Analysis
|
|
60
|
+
- **Competitive Landscape:** [Key competitors]
|
|
61
|
+
- **Differentiation:** [What makes our approach unique]
|
|
62
|
+
|
|
63
|
+
### Business Goals
|
|
64
|
+
1. [Primary business objective]
|
|
65
|
+
2. [Secondary business objective]
|
|
66
|
+
|
|
67
|
+
### User Goals
|
|
68
|
+
1. [What users should accomplish]
|
|
69
|
+
2. [What friction we're removing]
|
|
70
|
+
|
|
71
|
+
### Non-Goals (Out of Scope)
|
|
72
|
+
- [Explicitly what this will NOT do]
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Product Specification
|
|
77
|
+
|
|
78
|
+
> **Note:** Acceptance Criteria (AC) in this section drive test planning. Each AC generates test IDs (`{PROJECT}_F{FEATURE}_AC{N}_SMOKE_NNN`) and automated tests. Clarity here = fewer bugs in code.
|
|
79
|
+
|
|
80
|
+
### User Personas & Use Cases
|
|
81
|
+
|
|
82
|
+
#### Primary Persona: [Name]
|
|
83
|
+
- **Role:** [Job title]
|
|
84
|
+
- **Goals:** [What they're trying to achieve]
|
|
85
|
+
- **Pain Points:** [Current frustrations]
|
|
86
|
+
|
|
87
|
+
#### Key Use Cases
|
|
88
|
+
|
|
89
|
+
##### Use Case 1: [Title]
|
|
90
|
+
**Actor:** [Which persona]
|
|
91
|
+
**Flow:**
|
|
92
|
+
1. User [action]
|
|
93
|
+
2. System [response]
|
|
94
|
+
**Expected Outcome:** [Success looks like]
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### Functional Requirements
|
|
99
|
+
|
|
100
|
+
#### Must Have (P0)
|
|
101
|
+
- **FR-001:** [Description]
|
|
102
|
+
- User Story: As a [persona], I want to [action] so that [benefit]
|
|
103
|
+
- **Acceptance Criteria:**
|
|
104
|
+
- **AC-1:** Given [context], when [action], then [outcome]
|
|
105
|
+
- **AC-2:** Given [context], when [action], then [outcome]
|
|
106
|
+
|
|
107
|
+
#### Should Have (P1)
|
|
108
|
+
- **FR-010:** [Description]
|
|
109
|
+
|
|
110
|
+
#### Could Have (P2)
|
|
111
|
+
- **FR-020:** [Description]
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
### Non-Functional Requirements
|
|
116
|
+
- **NFR-001:** Performance - [requirement]
|
|
117
|
+
- **NFR-002:** Security - [requirement]
|
|
118
|
+
- **NFR-003:** Scalability - [requirement]
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
### Technical Specifications
|
|
123
|
+
[High-level architecture overview - link to SAD]
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
### Go-to-Market Strategy
|
|
128
|
+
|
|
129
|
+
#### Launch Plan
|
|
130
|
+
- **Beta Testing:** [Timeline, criteria]
|
|
131
|
+
- **Launch Date:** [Target date]
|
|
132
|
+
|
|
133
|
+
#### Marketing & Positioning
|
|
134
|
+
- **Value Proposition:** [One sentence]
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
### Dependencies & Risks
|
|
139
|
+
|
|
140
|
+
#### Risks & Mitigation
|
|
141
|
+
| Risk | Impact | Probability | Mitigation |
|
|
142
|
+
|------|--------|-------------|------------|
|
|
143
|
+
| [Risk 1] | High | Medium | [Mitigation] |
|
|
144
|
+
|
|
145
|
+
#### Open Questions
|
|
146
|
+
- [Question 1]
|
|
147
|
+
- [Question 2]
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
### Timeline & Milestones
|
|
152
|
+
| Phase | Timeline | Deliverables | Owner |
|
|
153
|
+
|-------|----------|-------------|-------|
|
|
154
|
+
| Discovery | [Dates] | PRD, Design | PE |
|
|
155
|
+
| Development | [Dates] | Features | SE |
|
|
156
|
+
| QA & Testing | [Dates] | Test reports | PE |
|
|
157
|
+
| Launch | [Dates] | Production | DSE |
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Changelog
|
|
162
|
+
| Date | Version | Changes | Author |
|
|
163
|
+
|------|---------|---------|--------|
|
|
164
|
+
| [Date] | 1.0 | Initial draft | [Name] |
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## AI Usage Log
|
|
169
|
+
|
|
170
|
+
| # | Date | Command | Input (est.) | Output (est.) |
|
|
171
|
+
|---|------|---------|-------------|---------------|
|
|
172
|
+
| 1 | [Date] | /tas-prd | ~{N}k | ~{N}k |
|
|
173
|
+
| **Total** | | | **~{N}k** | **~{N}k** |
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# {PROJECT} - Test Checklist
|
|
2
|
+
|
|
3
|
+
**Feature:** {Feature Name}
|
|
4
|
+
**Feature Code:** {CODE}-Feature-{NNN}
|
|
5
|
+
**Created Date:** {YYYY-MM-DD}
|
|
6
|
+
**Tester:** {Tester Name}
|
|
7
|
+
**Reviewer:** {Reviewer Name}
|
|
8
|
+
**Status:** [ ] Draft [ ] In Review [ ] Approved
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Feature Overview
|
|
13
|
+
|
|
14
|
+
**Feature Description:**
|
|
15
|
+
_{Brief description of the feature being tested}_
|
|
16
|
+
|
|
17
|
+
**Business Objective:**
|
|
18
|
+
_{What business value this feature delivers}_
|
|
19
|
+
|
|
20
|
+
**Scope:**
|
|
21
|
+
_{In scope: what will be tested}_
|
|
22
|
+
_{Out of scope: what will NOT be tested}_
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. Checklist Matrix
|
|
27
|
+
|
|
28
|
+
| Category | Point to Check | Priority | Requirement ID | Test Case ID | Notes |
|
|
29
|
+
|----------|----------------|----------|----------------|--------------|-------|
|
|
30
|
+
| **GUI & UX** | | | | | |
|
|
31
|
+
| | | | | | |
|
|
32
|
+
| | | | | | |
|
|
33
|
+
| **Validation** | | | | | |
|
|
34
|
+
| | | | | | |
|
|
35
|
+
| | | | | | |
|
|
36
|
+
| **Business Logic** | | | | | |
|
|
37
|
+
| | | | | | |
|
|
38
|
+
| | | | | | |
|
|
39
|
+
| **Exception Handling** | | | | | |
|
|
40
|
+
| | | | | | |
|
|
41
|
+
| | | | | | |
|
|
42
|
+
| **Security** | | | | | |
|
|
43
|
+
| | | | | | |
|
|
44
|
+
| | | | | | |
|
|
45
|
+
| **Performance** | | | | | |
|
|
46
|
+
| | | | | | |
|
|
47
|
+
| | | | | | |
|
|
48
|
+
| **Integration** | | | | | |
|
|
49
|
+
| | | | | | |
|
|
50
|
+
| | | | | | |
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 3. Coverage Summary
|
|
55
|
+
|
|
56
|
+
| Category | Total Points | Covered | Coverage % |
|
|
57
|
+
|----------|--------------|---------|------------|
|
|
58
|
+
| GUI & UX | | | |
|
|
59
|
+
| Validation | | | |
|
|
60
|
+
| Business Logic | | | |
|
|
61
|
+
| Exception Handling | | | |
|
|
62
|
+
| Security | | | |
|
|
63
|
+
| Performance | | | |
|
|
64
|
+
| Integration | | | |
|
|
65
|
+
| **TOTAL** | | | |
|
|
66
|
+
|
|
67
|
+
**Target Coverage:** ≥90%
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 4. Risk Assessment
|
|
72
|
+
|
|
73
|
+
| Risk | Impact | Mitigation |
|
|
74
|
+
|------|--------|------------|
|
|
75
|
+
| | | |
|
|
76
|
+
| | | |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 5. Review & Approval
|
|
81
|
+
|
|
82
|
+
| Role | Name | Date | Status |
|
|
83
|
+
|------|------|------|--------|
|
|
84
|
+
| Author | | | [ ] Done |
|
|
85
|
+
| Reviewer | | | [ ] Approved [ ] Reject |
|
|
86
|
+
| | | | |
|
|
87
|
+
|
|
88
|
+
**Review Comments:**
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 6. Change Log
|
|
93
|
+
|
|
94
|
+
| Date | Version | Changed By | Changes |
|
|
95
|
+
|------|---------|------------|---------|
|
|
96
|
+
| | 1.0 | | Initial |
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
# Torus Bootstrap
|
|
2
|
+
|
|
3
|
+
CLI tool to bootstrap ASP.NET Core applications with Onion Architecture using the Torus Backend Framework.
|
|
4
|
+
|
|
5
|
+
> **Rule:** see [`.tas/rules/csharp/torus-core-framework.md`](../rules/csharp/torus-core-framework.md) for the guardrails `/tas-plan` and `/tas-dev` apply when scaffolding.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
dotnet tool install --global Torus.Bootstrap
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Or build from source:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
cd Torus.Bootstrap
|
|
17
|
+
dotnet pack
|
|
18
|
+
dotnet tool install --global --add-source ./bin/Debug Torus.Bootstrap
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
### Interactive Mode (Default)
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
torus-bootstrap create --name Torus.Org
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
This will prompt you for:
|
|
30
|
+
- Cache configuration (Memory/Redis/Both)
|
|
31
|
+
- Messaging (Kafka)
|
|
32
|
+
- Background Jobs (Quartz)
|
|
33
|
+
- Telemetry (OpenTelemetry)
|
|
34
|
+
- Captcha (Google/Turnstile)
|
|
35
|
+
- OPA Authorization
|
|
36
|
+
- Blob Storage (FileSystem/MinIO/S3)
|
|
37
|
+
- Email (MailKit/SES)
|
|
38
|
+
- Database type (SQL Server/PostgreSQL/MySQL/MongoDB)
|
|
39
|
+
- Multi-tenancy
|
|
40
|
+
|
|
41
|
+
### Non-Interactive Mode
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
torus-bootstrap create --name Torus.Org --interactive false
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Uses default configuration:
|
|
48
|
+
- Memory Cache
|
|
49
|
+
- OpenTelemetry
|
|
50
|
+
- SQL Server
|
|
51
|
+
|
|
52
|
+
### Command-Line Options
|
|
53
|
+
|
|
54
|
+
You can specify configuration options via command-line flags:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
torus-bootstrap create --name Torus.Org \
|
|
58
|
+
--cache redis \
|
|
59
|
+
--distributed-lock \
|
|
60
|
+
--messaging \
|
|
61
|
+
--kafka \
|
|
62
|
+
--background-jobs \
|
|
63
|
+
--quartz \
|
|
64
|
+
--telemetry \
|
|
65
|
+
--otel \
|
|
66
|
+
--captcha google \
|
|
67
|
+
--opa \
|
|
68
|
+
--blob-storage s3 \
|
|
69
|
+
--email ses \
|
|
70
|
+
--database postgresql \
|
|
71
|
+
--multi-tenancy
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### Available Options
|
|
75
|
+
|
|
76
|
+
**Cache:**
|
|
77
|
+
- `--cache <none|memory|redis|both>` - Cache type (default: memory)
|
|
78
|
+
- `--distributed-lock` - Enable distributed locks (requires Redis)
|
|
79
|
+
|
|
80
|
+
**Messaging:**
|
|
81
|
+
- `--messaging` - Enable messaging
|
|
82
|
+
- `--kafka` - Use Kafka (requires --messaging)
|
|
83
|
+
|
|
84
|
+
**Background Jobs:**
|
|
85
|
+
- `--background-jobs` - Enable background jobs
|
|
86
|
+
- `--quartz` - Use Quartz.NET (requires --background-jobs)
|
|
87
|
+
|
|
88
|
+
**Telemetry:**
|
|
89
|
+
- `--telemetry` - Enable telemetry
|
|
90
|
+
- `--otel` - Use OpenTelemetry (requires --telemetry)
|
|
91
|
+
|
|
92
|
+
**Captcha:**
|
|
93
|
+
- `--captcha <none|google|turnstile|both>` - Captcha type
|
|
94
|
+
|
|
95
|
+
**Authorization:**
|
|
96
|
+
- `--opa` - Use OPA (Open Policy Agent) for policy-based authorization
|
|
97
|
+
|
|
98
|
+
**Blob Storage:**
|
|
99
|
+
- `--blob-storage <none|filesystem|minio|s3|both>` - Blob storage type
|
|
100
|
+
|
|
101
|
+
**Email:**
|
|
102
|
+
- `--email <none|mailkit|ses|both>` - Email type
|
|
103
|
+
|
|
104
|
+
**Database:**
|
|
105
|
+
- `--database <sqlserver|postgresql|mysql|mongodb>` - Database type (default: sqlserver)
|
|
106
|
+
|
|
107
|
+
**Multi-Tenancy:**
|
|
108
|
+
- `--multi-tenancy` - Enable multi-tenancy
|
|
109
|
+
|
|
110
|
+
#### Combining Interactive and Command-Line Options
|
|
111
|
+
|
|
112
|
+
Command-line options override interactive prompts:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
torus-bootstrap create --name Torus.Org --cache redis --database postgresql
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
This will use interactive mode but skip prompts for cache and database, using the provided values instead.
|
|
119
|
+
|
|
120
|
+
### Output Directory
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
torus-bootstrap create --name Torus.Org --output ./MyProjects
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Generated Project Structure
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
Torus.Org/
|
|
130
|
+
├── Torus.Org.Domain.Shared/ # Shared domain types
|
|
131
|
+
├── Torus.Org.Domain/ # Domain layer
|
|
132
|
+
├── Torus.Org.Application.Contracts/ # Application contracts
|
|
133
|
+
├── Torus.Org.Application/ # Application layer
|
|
134
|
+
├── Torus.Org.Persistence.EfCore/ # Data access layer
|
|
135
|
+
├── Torus.Org.Infrastructure/ # Infrastructure layer
|
|
136
|
+
├── Torus.Org.WebApi/ # Web API layer
|
|
137
|
+
└── Torus.Org.sln # Solution file
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Next Steps
|
|
141
|
+
|
|
142
|
+
After generating the project:
|
|
143
|
+
|
|
144
|
+
1. Navigate to the project directory:
|
|
145
|
+
```bash
|
|
146
|
+
cd Torus.Org
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
2. Restore packages:
|
|
150
|
+
```bash
|
|
151
|
+
dotnet restore
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
3. Update `appsettings.json` with your configuration
|
|
155
|
+
|
|
156
|
+
4. Add database provider package to `Persistence.EfCore` project:
|
|
157
|
+
- SQL Server: `Microsoft.EntityFrameworkCore.SqlServer`
|
|
158
|
+
- PostgreSQL: `Npgsql.EntityFrameworkCore.PostgreSQL`
|
|
159
|
+
- MySQL: `Pomelo.EntityFrameworkCore.MySql`
|
|
160
|
+
|
|
161
|
+
5. Create initial migration:
|
|
162
|
+
```bash
|
|
163
|
+
dotnet ef migrations add InitialCreate --project Torus.Org.Persistence.EfCore
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
6. Build and run:
|
|
167
|
+
```bash
|
|
168
|
+
dotnet build
|
|
169
|
+
dotnet run --project Torus.Org.WebApi
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Features
|
|
173
|
+
|
|
174
|
+
The tool generates:
|
|
175
|
+
|
|
176
|
+
- Onion Architecture project structure
|
|
177
|
+
- DbContext and UnitOfWork setup
|
|
178
|
+
- Program.cs with configured services
|
|
179
|
+
- appsettings.json with configuration templates
|
|
180
|
+
- Solution file with all projects
|
|
181
|
+
- README.md with setup instructions
|
|
182
|
+
|
|
183
|
+
## Configuration Options
|
|
184
|
+
|
|
185
|
+
### Cache
|
|
186
|
+
- **Memory**: In-memory caching
|
|
187
|
+
- **Redis**: Distributed Redis cache
|
|
188
|
+
- **Both**: Memory + Redis with invalidation
|
|
189
|
+
|
|
190
|
+
### Messaging
|
|
191
|
+
- **Kafka**: Kafka message broker integration
|
|
192
|
+
|
|
193
|
+
### Background Jobs
|
|
194
|
+
- **Quartz.NET**: Scheduled and recurring jobs
|
|
195
|
+
|
|
196
|
+
### Telemetry
|
|
197
|
+
- **OpenTelemetry**: Distributed tracing and metrics
|
|
198
|
+
|
|
199
|
+
### Captcha
|
|
200
|
+
- **Google reCAPTCHA**: Bot detection
|
|
201
|
+
- **Cloudflare Turnstile**: Privacy-focused captcha
|
|
202
|
+
|
|
203
|
+
### Authorization
|
|
204
|
+
- **OPA**: Open Policy Agent integration
|
|
205
|
+
|
|
206
|
+
### Blob Storage
|
|
207
|
+
- **FileSystem**: Local file storage
|
|
208
|
+
- **MinIO**: S3-compatible object storage
|
|
209
|
+
- **AWS S3**: Amazon S3 storage
|
|
210
|
+
|
|
211
|
+
### Email
|
|
212
|
+
- **MailKit**: SMTP email sending
|
|
213
|
+
- **AWS SES**: Amazon Simple Email Service
|
|
214
|
+
|
|
215
|
+
### Database
|
|
216
|
+
- **SQL Server**: Microsoft SQL Server
|
|
217
|
+
- **PostgreSQL**: PostgreSQL database
|
|
218
|
+
- **MySQL**: MySQL database
|
|
219
|
+
- **MongoDB**: MongoDB (NoSQL)
|
|
220
|
+
|
|
221
|
+
## License
|
|
222
|
+
|
|
223
|
+
Part of the Torus Backend Framework.
|