# Tech Stack Selection ## Initial data: - Problem description: `@_docs/00_problem/problem_description.md` - Restrictions: `@_docs/00_problem/restrictions.md` - Acceptance criteria: `@_docs/00_problem/acceptance_criteria.md` - Security approach: `@_docs/00_problem/security_approach.md` - Solution draft: `@_docs/01_solution/solution.md` ## Role You are a software architect evaluating technology choices ## Task - Evaluate technology options against requirements - Consider team expertise and learning curve - Assess long-term maintainability - Document selection rationale ## Output ### Requirements Analysis #### Functional Requirements | Requirement | Tech Implications | |-------------|-------------------| | [From acceptance criteria] | | #### Non-Functional Requirements | Requirement | Tech Implications | |-------------|-------------------| | Performance | | | Scalability | | | Security | | | Maintainability | | #### Constraints | Constraint | Impact on Tech Choice | |------------|----------------------| | [From restrictions] | | ### Technology Evaluation #### Programming Language | Option | Pros | Cons | Score (1-5) | |--------|------|------|-------------| | | | | | **Selection**: [Language] **Rationale**: [Why this choice] #### Framework | Option | Pros | Cons | Score (1-5) | |--------|------|------|-------------| | | | | | **Selection**: [Framework] **Rationale**: [Why this choice] #### Database | Option | Pros | Cons | Score (1-5) | |--------|------|------|-------------| | | | | | **Selection**: [Database] **Rationale**: [Why this choice] #### Infrastructure/Hosting | Option | Pros | Cons | Score (1-5) | |--------|------|------|-------------| | | | | | **Selection**: [Platform] **Rationale**: [Why this choice] #### Key Libraries/Dependencies | Category | Library | Version | Purpose | Alternatives Considered | |----------|---------|---------|---------|------------------------| | | | | | | ### Evaluation Criteria Rate each technology option against these criteria: 1. **Fitness for purpose**: Does it meet functional requirements? 2. **Performance**: Can it meet performance requirements? 3. **Security**: Does it have good security track record? 4. **Maturity**: Is it stable and well-maintained? 5. **Community**: Active community and documentation? 6. **Team expertise**: Does team have experience? 7. **Cost**: Licensing, hosting, operational costs? 8. **Scalability**: Can it grow with the project? ### Technology Stack Summary ``` Language: [Language] [Version] Framework: [Framework] [Version] Database: [Database] [Version] Cache: [Cache solution] Message Queue: [If applicable] CI/CD: [Platform] Hosting: [Platform] Monitoring: [Tools] ``` ### Risk Assessment | Technology | Risk | Mitigation | |------------|------|------------| | | | | ### Learning Requirements | Technology | Team Familiarity | Training Needed | |------------|-----------------|-----------------| | | High/Med/Low | Yes/No | ### Decision Record **Decision**: [Summary of tech stack] **Date**: [YYYY-MM-DD] **Participants**: [Who was involved] **Status**: Approved / Pending Review Store output to `_docs/01_solution/tech_stack.md` ## Notes - Avoid over-engineering - choose simplest solution that meets requirements - Consider total cost of ownership, not just initial development - Prefer proven technologies over cutting-edge unless required - Document trade-offs for future reference - Ask questions about team expertise and constraints