UNPKG

cqt-agent

Version:
305 lines (246 loc) • 16.8 kB
# Backend Implementation Checklist ## Overview This checklist ensures backend implementations meet Hubtel's quality standards for .NET Core applications, including API design, database integration, security, testing, and observability requirements. ## Pre-Implementation Setup ### Environment and Dependencies - [ ] **Development Environment**: Docker Compose environment running with all required services - [ ] **Package Dependencies**: All required NuGet packages installed and up to date - [ ] **Database Connectivity**: PostgreSQL/MongoDB connection established and tested - [ ] **Configuration Management**: appsettings.json and environment variables properly configured - [ ] **Authentication Setup**: JWT authentication middleware configured and tested ### Task Analysis - [ ] **Requirements Review**: All functional and technical requirements understood - [ ] **API Design**: RESTful API endpoints designed following OpenAPI specifications - [ ] **Database Design**: Entity models and relationships designed and validated - [ ] **Acceptance Criteria**: All acceptance criteria reviewed and implementation approach planned - [ ] **Testing Strategy**: Unit, integration, and API testing approach planned ## Implementation Standards ### Code Quality and Architecture #### Project Structure - [ ] **Clean Architecture**: Solution follows clean architecture principles (Controllers, Services, Repositories) - [ ] **Dependency Injection**: Proper DI container configuration and service registration - [ ] **Separation of Concerns**: Business logic separated from data access and presentation layers - [ ] **SOLID Principles**: Code follows SOLID design principles - [ ] **File Organization**: Files organized according to Hubtel project structure standards #### Code Standards - [ ] **C# Conventions**: Code follows C# naming conventions and best practices - [ ] **Async/Await**: Proper async/await implementation for I/O operations - [ ] **Error Handling**: Comprehensive exception handling with proper HTTP status codes - [ ] **Null Safety**: Proper null checking and nullable reference types usage - [ ] **Code Comments**: Complex business logic documented with XML documentation #### Data Access Layer - [ ] **Entity Framework**: EF Core models properly configured with relationships - [ ] **Repository Pattern**: Repository pattern implemented for data access abstraction - [ ] **Database Context**: DbContext properly configured with connection strings - [ ] **Query Optimization**: LINQ queries optimized to prevent N+1 problems - [ ] **Transaction Management**: Database transactions properly managed for data consistency ### API Design and Implementation #### RESTful API Standards - [ ] **HTTP Verbs**: Proper HTTP verb usage (GET, POST, PUT, DELETE, PATCH) - [ ] **Resource Naming**: RESTful URL conventions followed consistently - [ ] **Status Codes**: Appropriate HTTP status codes returned for all scenarios - [ ] **Content Negotiation**: Proper Accept and Content-Type header handling - [ ] **API Versioning**: API versioning strategy implemented (URL path or header-based) #### Request/Response Handling - [ ] **Input Validation**: Comprehensive input validation with clear error messages - [ ] **Model Binding**: Proper model binding with validation attributes - [ ] **Response DTOs**: Data Transfer Objects used for API responses - [ ] **Error Responses**: Consistent error response format across all endpoints - [ ] **Rate Limiting**: API rate limiting implemented to prevent abuse #### OpenAPI Documentation - [ ] **Swagger Configuration**: Swagger/OpenAPI documentation properly configured - [ ] **Endpoint Documentation**: All endpoints documented with descriptions and examples - [ ] **Model Documentation**: Request/response models documented with XML comments - [ ] **Authentication Documentation**: Security schemes documented in OpenAPI spec - [ ] **Example Responses**: Sample requests and responses provided for all endpoints ### Security Implementation #### Authentication and Authorization - [ ] **JWT Implementation**: JWT token generation and validation properly implemented - [ ] **Token Refresh**: Refresh token mechanism implemented for security - [ ] **Role-Based Access**: Role-based authorization implemented using [Authorize] attributes - [ ] **Permission Validation**: Fine-grained permissions validated at endpoint level - [ ] **Secure Headers**: Security headers configured (CORS, HSTS, Content Security Policy) #### Data Protection - [ ] **Input Sanitization**: All user inputs properly sanitized and validated - [ ] **SQL Injection Prevention**: Parameterized queries used to prevent SQL injection - [ ] **XSS Prevention**: Output encoding implemented to prevent cross-site scripting - [ ] **Sensitive Data**: Passwords and sensitive data properly hashed and encrypted - [ ] **Connection Security**: Database connections use encrypted connections (SSL/TLS) #### API Security - [ ] **HTTPS Enforcement**: HTTPS enforced for all API endpoints - [ ] **CORS Configuration**: CORS properly configured for frontend integration - [ ] **Request Size Limits**: Request size limits configured to prevent DoS attacks - [ ] **API Key Validation**: API keys validated and rate-limited appropriately - [ ] **Audit Logging**: Security events logged for audit and compliance ### Database Integration #### Entity Framework Core - [ ] **Model Configuration**: Entity models properly configured with Fluent API - [ ] **Relationships**: Foreign key relationships properly defined and configured - [ ] **Indexes**: Database indexes created for frequently queried columns - [ ] **Constraints**: Database constraints implemented for data integrity - [ ] **Migrations**: Database migrations created and tested for schema changes #### Data Persistence - [ ] **Transaction Scope**: Database transactions properly scoped for consistency - [ ] **Connection Pooling**: Database connection pooling properly configured - [ ] **Query Performance**: Database queries optimized for performance - [ ] **Lazy Loading**: Lazy loading disabled to prevent N+1 query problems - [ ] **Bulk Operations**: Bulk insert/update operations used where appropriate #### Data Validation - [ ] **Model Validation**: Entity validation rules implemented with data annotations - [ ] **Business Rules**: Business logic validation implemented in service layer - [ ] **Referential Integrity**: Foreign key constraints properly enforced - [ ] **Unique Constraints**: Unique constraints implemented where business rules require - [ ] **Check Constraints**: Database check constraints implemented for data quality ### Observability and Monitoring #### OpenTelemetry Implementation - [ ] **Logging Configuration**: Structured logging configured with Serilog or built-in logging - [ ] **Trace Correlation**: Correlation IDs implemented for request tracing - [ ] **Performance Metrics**: Custom metrics implemented for business operations - [ ] **Distributed Tracing**: OpenTelemetry tracing configured for microservices - [ ] **Error Tracking**: Exception tracking and monitoring implemented #### Health Monitoring - [ ] **Health Checks**: Health check endpoints implemented for all dependencies - [ ] **Dependency Monitoring**: Database and external service health monitored - [ ] **Performance Counters**: Key performance metrics collected and exposed - [ ] **Resource Monitoring**: CPU, memory, and I/O metrics monitored - [ ] **Alert Configuration**: Alerts configured for critical system events #### Logging Standards - [ ] **Log Levels**: Appropriate log levels used (Debug, Info, Warning, Error, Critical) - [ ] **Structured Logging**: JSON structured logging implemented for log analysis - [ ] **Sensitive Data**: Sensitive information excluded from logs - [ ] **Request Logging**: HTTP requests and responses logged with correlation IDs - [ ] **Performance Logging**: Slow queries and operations logged for optimization ## Testing Implementation ### Unit Testing #### Test Coverage - [ ] **Business Logic**: All business logic covered by unit tests - [ ] **Service Layer**: Service classes tested with mocked dependencies - [ ] **Repository Layer**: Repository implementations tested with in-memory database - [ ] **Controller Logic**: Controller logic tested with mocked services - [ ] **Coverage Threshold**: Minimum 90% test coverage achieved for business logic #### Test Quality - [ ] **Test Structure**: Tests follow AAA (Arrange, Act, Assert) pattern - [ ] **Descriptive Names**: Test method names clearly describe test scenarios - [ ] **Edge Cases**: Boundary conditions and error scenarios tested - [ ] **Mocking Strategy**: External dependencies properly mocked using Moq - [ ] **Test Data**: Test data builders or factories used for consistent test setup #### Testing Frameworks - [ ] **NUnit/xUnit**: Unit testing framework properly configured and used - [ ] **FluentAssertions**: Readable assertions implemented for better test clarity - [ ] **AutoFixture**: Test data generation automated with AutoFixture - [ ] **MockWebAPI**: Web API testing performed with TestServer - [ ] **Test Isolation**: Tests run independently without shared state ### Integration Testing #### API Testing (Karate) - [ ] **Endpoint Coverage**: All API endpoints covered by Karate tests - [ ] **Authentication Testing**: Authentication flows tested end-to-end - [ ] **Data Validation**: Request/response data validation tested - [ ] **Error Scenarios**: Error conditions and edge cases tested - [ ] **Performance Testing**: API response times validated under load #### Database Integration - [ ] **Database Tests**: Entity Framework operations tested with test database - [ ] **Migration Testing**: Database migrations tested in isolation - [ ] **Transaction Testing**: Transaction rollback scenarios tested - [ ] **Concurrency Testing**: Concurrent data access scenarios tested - [ ] **Data Integrity**: Referential integrity and constraints validated ### Mutation Testing #### Code Quality Validation - [ ] **Mutation Score**: Minimum 80% mutation testing score achieved - [ ] **Test Effectiveness**: Tests validate actual business logic, not just syntax - [ ] **Dead Code Detection**: Unused code paths identified and removed - [ ] **Logic Validation**: Boolean logic and conditional statements properly tested - [ ] **Boundary Testing**: Off-by-one errors and boundary conditions detected ## Performance and Scalability ### API Performance - [ ] **Response Times**: API endpoints respond within 200ms under normal load - [ ] **Concurrent Requests**: Application handles expected concurrent load - [ ] **Memory Management**: No memory leaks detected during load testing - [ ] **Database Performance**: Database queries optimized for performance - [ ] **Caching Strategy**: Appropriate caching implemented for frequently accessed data ### Resource Optimization - [ ] **Connection Management**: Database connections properly managed and pooled - [ ] **Memory Usage**: Memory usage optimized and garbage collection tuned - [ ] **CPU Utilization**: CPU usage optimized for expected load patterns - [ ] **I/O Operations**: File and network I/O operations optimized - [ ] **Background Processing**: Background tasks implemented with proper cancellation ## Error Handling and Resilience ### Exception Management - [ ] **Global Error Handler**: Global exception handler implemented for unhandled exceptions - [ ] **Custom Exceptions**: Business-specific exceptions defined and properly handled - [ ] **Error Logging**: All exceptions logged with appropriate context and correlation IDs - [ ] **User-Friendly Errors**: Technical errors translated to user-friendly messages - [ ] **Stack Trace Security**: Stack traces excluded from production error responses ### Resilience Patterns - [ ] **Retry Logic**: Retry logic implemented for transient failures - [ ] **Circuit Breaker**: Circuit breaker pattern implemented for external dependencies - [ ] **Timeout Handling**: Appropriate timeouts configured for all external calls - [ ] **Fallback Mechanisms**: Graceful degradation implemented for service failures - [ ] **Health Recovery**: System recovers gracefully from temporary failures ## Integration and Deployment ### API Integration - [ ] **Frontend Integration**: API endpoints tested with frontend application - [ ] **External Services**: Third-party service integrations tested and validated - [ ] **Authentication Flow**: End-to-end authentication tested with frontend - [ ] **Real-time Features**: WebSocket or SignalR connections tested if applicable - [ ] **File Upload/Download**: File handling operations tested with appropriate limits ### Database Deployment - [ ] **Migration Scripts**: Database migration scripts tested and validated - [ ] **Seed Data**: Database seed data scripts created for initial setup - [ ] **Backup Strategy**: Database backup and recovery procedures validated - [ ] **Schema Validation**: Database schema matches entity model definitions - [ ] **Index Performance**: Database indexes tested for query performance improvement ### Configuration Management - [ ] **Environment Configuration**: Application configuration externalized for different environments - [ ] **Secret Management**: Sensitive configuration stored securely (Azure Key Vault, etc.) - [ ] **Feature Flags**: Feature toggles implemented for gradual rollout capability - [ ] **Configuration Validation**: Required configuration values validated at startup - [ ] **Environment Parity**: Configuration consistency across dev/staging/production ## Code Review Preparation ### Documentation - [ ] **API Documentation**: OpenAPI/Swagger documentation complete and accurate - [ ] **Code Documentation**: Complex business logic documented with XML comments - [ ] **Database Schema**: Entity relationship diagrams and schema documentation updated - [ ] **Deployment Guide**: Deployment and configuration instructions documented - [ ] **Architecture Decisions**: Significant architectural decisions documented ### Review Package - [ ] **Clean Git History**: Commits are logical with clear, descriptive messages - [ ] **Branch Naming**: Branch follows naming convention (feature/AZ-{id}-{description}) - [ ] **No Debug Code**: Debug code and temporary logging statements removed - [ ] **Configuration Clean**: No hardcoded environment-specific values or secrets - [ ] **Dependency Justification**: New NuGet packages justified and security-reviewed ## Task Completion Verification ### Acceptance Criteria Validation - [ ] **Functional Requirements**: All functional requirements implemented and tested - [ ] **Technical Requirements**: All technical specifications met and validated - [ ] **Performance Requirements**: API response times and throughput meet specifications - [ ] **Security Requirements**: Authentication, authorization, and data protection implemented - [ ] **Integration Requirements**: All required integrations working end-to-end ### Quality Gates - [ ] **All Tests Pass**: Unit, integration, and API tests passing in CI/CD pipeline - [ ] **Build Success**: Release build completes without errors or warnings - [ ] **Code Analysis**: Static code analysis tools report no critical issues - [ ] **Security Scan**: Security vulnerability scanning passes with no high/critical issues - [ ] **Performance Baseline**: Performance metrics meet established baseline requirements ## Commit Preparation ### Commit Structure - [ ] **Task ID Reference**: Commit message includes Azure DevOps task ID - [ ] **Clear Description**: Commit message clearly describes what was implemented - [ ] **Conventional Commits**: Commit message follows conventional commit format - [ ] **Breaking Changes**: Any breaking changes clearly documented in commit message - [ ] **Migration Notes**: Database migration details included in commit description ### Example Commit Message Format ``` feat(AZ-456): implement JWT authentication middleware with refresh token support - Add JWT authentication middleware with role-based authorization - Implement refresh token mechanism for enhanced security - Add comprehensive input validation and error handling - Create Karate API tests and NUnit unit tests with 95% coverage - Add OpenTelemetry logging and performance monitoring - Include database migration for user tokens table Breaking Changes: - Authentication endpoints moved to /api/v2/auth/* - Authorization header now required for all protected endpoints šŸ¤– Generated with Hubtel CQT Agent Co-Authored-By: Hubtel-Backend-Dev <noreply@hubtel.com> ``` This checklist ensures that all backend implementations meet Hubtel's high standards for security, performance, maintainability, and reliability while providing a comprehensive framework for successful API development and deployment.