182 lines
8.4 KiB
Markdown
182 lines
8.4 KiB
Markdown
# <!-- Powered by BMAD™ Core -->
|
|
|
|
# Architecture Review Checklist
|
|
|
|
## Document Completeness
|
|
|
|
### Executive Summary
|
|
- [ ] **System Overview** - Clear 2-3 paragraph description of the system
|
|
- [ ] **Technology Stack** - All major technologies listed with versions
|
|
- [ ] **Architecture Pattern** - Pattern identified (monolith, microservices, serverless, JAMstack)
|
|
- [ ] **Key Design Decisions** - 3-5 major decisions documented with rationale
|
|
- [ ] **Scalability Overview** - High-level scalability approach described
|
|
|
|
### Frontend Architecture
|
|
- [ ] **Framework Choice** - React, Vue, or other with version and justification
|
|
- [ ] **Build Tool** - Vite, Next.js, or Webpack with configuration approach
|
|
- [ ] **State Management** - Clear strategy (React Query, Zustand, Redux, Context)
|
|
- [ ] **Routing** - Client-side vs server-side routing explained
|
|
- [ ] **Styling Approach** - CSS solution chosen (Tailwind, CSS Modules, Styled Components)
|
|
- [ ] **Component Structure** - Folder structure and component organization defined
|
|
- [ ] **Code Splitting** - Strategy for bundle optimization
|
|
- [ ] **SEO Strategy** - SSR, SSG, or CSR approach with reasoning
|
|
|
|
### Backend Architecture
|
|
- [ ] **Runtime and Framework** - Node.js version and framework (Express, Fastify, NestJS)
|
|
- [ ] **API Design** - REST, GraphQL, or tRPC with endpoint organization
|
|
- [ ] **Authentication** - Strategy defined (JWT, OAuth, session-based)
|
|
- [ ] **Authorization** - RBAC, ABAC, or other approach
|
|
- [ ] **Middleware Stack** - Security, logging, error handling middleware
|
|
- [ ] **Background Jobs** - Queue system if needed (Bull, BullMQ)
|
|
- [ ] **File Uploads** - Strategy for handling file uploads
|
|
- [ ] **Email System** - Email sending approach (SendGrid, SES, SMTP)
|
|
|
|
### Database Design
|
|
- [ ] **Database Choice** - SQL vs NoSQL with justification
|
|
- [ ] **Schema Design** - Entity relationships documented
|
|
- [ ] **Indexes** - Key indexes identified for performance
|
|
- [ ] **Migrations** - Migration strategy defined
|
|
- [ ] **Seeding** - Data seeding approach for development
|
|
- [ ] **Backup Strategy** - Backup frequency and retention
|
|
- [ ] **Connection Pooling** - Connection management strategy
|
|
|
|
### API Design
|
|
- [ ] **Versioning Strategy** - URL-based, header-based, or other
|
|
- [ ] **Request/Response Format** - JSON schema or GraphQL schema
|
|
- [ ] **Error Handling** - Standardized error response format
|
|
- [ ] **Pagination** - Cursor-based or offset-based approach
|
|
- [ ] **Rate Limiting** - Rate limit strategy and thresholds
|
|
- [ ] **CORS Configuration** - Allowed origins and methods
|
|
- [ ] **API Documentation** - OpenAPI/Swagger or other documentation
|
|
|
|
### TypeScript Configuration
|
|
- [ ] **Strict Mode** - Strict TypeScript settings justified
|
|
- [ ] **Path Aliases** - Import aliases configured (@/, ~/)
|
|
- [ ] **Type Definitions** - Strategy for third-party type definitions
|
|
- [ ] **Shared Types** - Location of shared types between frontend/backend
|
|
|
|
## Non-Functional Requirements
|
|
|
|
### Performance
|
|
- [ ] **Performance Targets** - Specific metrics defined (Lighthouse score, API latency)
|
|
- [ ] **Caching Strategy** - Redis, CDN, or in-memory caching approach
|
|
- [ ] **Database Optimization** - Query optimization and indexing plan
|
|
- [ ] **Asset Optimization** - Image optimization, lazy loading strategy
|
|
- [ ] **Bundle Size** - Target bundle sizes and code splitting approach
|
|
|
|
### Security
|
|
- [ ] **Authentication Security** - Token expiration, refresh strategy
|
|
- [ ] **Authorization Checks** - Where and how authorization is enforced
|
|
- [ ] **Input Validation** - Validation on both frontend and backend
|
|
- [ ] **SQL Injection Prevention** - Parameterized queries or ORM usage
|
|
- [ ] **XSS Prevention** - Content Security Policy and sanitization
|
|
- [ ] **CSRF Protection** - Token-based CSRF protection
|
|
- [ ] **Secrets Management** - Environment variables and secret storage
|
|
- [ ] **HTTPS Enforcement** - SSL/TLS configuration
|
|
- [ ] **Security Headers** - Helmet.js or equivalent configuration
|
|
- [ ] **Dependency Scanning** - npm audit or Snyk integration
|
|
|
|
### Scalability
|
|
- [ ] **Horizontal Scaling** - Stateless application design
|
|
- [ ] **Database Scaling** - Read replicas or sharding strategy
|
|
- [ ] **Caching Layer** - Cache invalidation strategy
|
|
- [ ] **CDN Usage** - Static asset delivery via CDN
|
|
- [ ] **Load Balancing** - Load balancer configuration if needed
|
|
- [ ] **Auto-scaling** - Metrics and triggers for scaling
|
|
|
|
### Reliability
|
|
- [ ] **Error Handling** - Global error handling strategy
|
|
- [ ] **Logging Strategy** - Structured logging with correlation IDs
|
|
- [ ] **Monitoring** - APM and error tracking tools (Sentry, Datadog)
|
|
- [ ] **Health Checks** - Liveness and readiness endpoints
|
|
- [ ] **Graceful Shutdown** - Proper cleanup on application shutdown
|
|
- [ ] **Database Migrations** - Zero-downtime migration strategy
|
|
- [ ] **Rollback Plan** - How to rollback failed deployments
|
|
|
|
### DevOps & Deployment
|
|
- [ ] **CI/CD Pipeline** - Build, test, and deploy automation
|
|
- [ ] **Environment Strategy** - Development, staging, production environments
|
|
- [ ] **Infrastructure as Code** - Terraform, CloudFormation, or Docker Compose
|
|
- [ ] **Container Strategy** - Docker configuration and orchestration
|
|
- [ ] **Deployment Strategy** - Blue-green, canary, or rolling deployments
|
|
- [ ] **Backup and Disaster Recovery** - RTO and RPO defined
|
|
|
|
## Implementation Readiness
|
|
|
|
### Development Environment
|
|
- [ ] **Local Setup** - Clear README with setup instructions
|
|
- [ ] **Environment Variables** - .env.example file with all required variables
|
|
- [ ] **Database Setup** - Local database setup instructions
|
|
- [ ] **Seed Data** - Development seed data available
|
|
- [ ] **Hot Reload** - Development server with hot module replacement
|
|
|
|
### Code Quality
|
|
- [ ] **Linting** - ESLint configuration defined
|
|
- [ ] **Formatting** - Prettier configuration
|
|
- [ ] **Pre-commit Hooks** - Husky or lint-staged configuration
|
|
- [ ] **Code Style Guide** - Naming conventions and patterns documented
|
|
- [ ] **TypeScript Standards** - Type usage guidelines
|
|
|
|
### Testing Strategy
|
|
- [ ] **Unit Testing** - Framework chosen (Jest, Vitest)
|
|
- [ ] **Integration Testing** - API testing approach (Supertest)
|
|
- [ ] **E2E Testing** - E2E framework (Playwright, Cypress)
|
|
- [ ] **Coverage Goals** - Target code coverage percentages
|
|
- [ ] **CI Integration** - Tests run in CI pipeline
|
|
|
|
### Documentation
|
|
- [ ] **Architecture Diagrams** - System architecture visualized
|
|
- [ ] **Database Schema** - ER diagram or schema documentation
|
|
- [ ] **API Documentation** - Endpoint documentation (Swagger, GraphQL introspection)
|
|
- [ ] **Deployment Guide** - How to deploy to production
|
|
- [ ] **ADRs** - Architecture Decision Records for key choices
|
|
|
|
## Risk Assessment
|
|
|
|
### Technical Risks
|
|
- [ ] **Complexity Risks** - Over-engineering or under-engineering identified
|
|
- [ ] **Performance Bottlenecks** - Potential bottlenecks documented
|
|
- [ ] **Scalability Limits** - Known scalability constraints
|
|
- [ ] **Technology Risks** - Unproven or bleeding-edge tech flagged
|
|
- [ ] **Dependency Risks** - Critical third-party dependencies assessed
|
|
|
|
### Mitigation Strategies
|
|
- [ ] **Risk Mitigation** - Plan for each identified risk
|
|
- [ ] **Fallback Options** - Alternative approaches documented
|
|
- [ ] **Monitoring Plan** - How risks will be monitored in production
|
|
|
|
## Validation Questions
|
|
|
|
### Alignment with Requirements
|
|
- [ ] **Requirements Coverage** - All functional requirements addressed
|
|
- [ ] **Non-functional Requirements** - Performance, security, scalability covered
|
|
- [ ] **Scope Appropriateness** - Architecture matches project scope
|
|
- [ ] **Over-engineering Check** - Not adding unnecessary complexity
|
|
- [ ] **Future-proofing** - Extensible without being over-architected
|
|
|
|
### Team Capability
|
|
- [ ] **Team Skills** - Team has or can acquire necessary skills
|
|
- [ ] **Learning Curve** - New technologies have acceptable learning curve
|
|
- [ ] **Support Resources** - Documentation and community support available
|
|
- [ ] **Maintenance Burden** - Architecture is maintainable long-term
|
|
|
|
### Cost Considerations
|
|
- [ ] **Infrastructure Costs** - Estimated monthly costs
|
|
- [ ] **Development Costs** - Time and effort realistic
|
|
- [ ] **Third-party Services** - External service costs budgeted
|
|
- [ ] **Scaling Costs** - Cost implications of scaling understood
|
|
|
|
## Final Assessment
|
|
|
|
**Architecture Quality Rating:** ⭐⭐⭐⭐⭐
|
|
|
|
**Ready for Implementation:** [ ] Yes [ ] No
|
|
|
|
**Critical Issues to Address:**
|
|
_List any must-fix issues before development begins_
|
|
|
|
**Recommendations:**
|
|
_Suggestions for improvement or alternative approaches_
|
|
|
|
**Next Steps:**
|
|
_What needs to happen before story creation begins_ |