--- description: Development workflow and best practices --- # Development Workflow for SteamCache2 ## Build System - Use the provided [Makefile](mdc:Makefile) for all build operations - Prefer `make` commands over direct `go` commands - Use `make test` to run all tests before committing - Use `make run-debug` for development with debug logging ## Code Organization - Keep related functionality in the same package - Use clear package boundaries and interfaces - Minimize dependencies between packages - Follow the existing project structure ## Git Workflow - Use descriptive commit messages - Keep commits focused and atomic - Test changes thoroughly before committing - Use meaningful branch names ## Code Review - Review code for correctness and performance - Check for proper error handling - Verify test coverage for new functionality - Ensure code follows project conventions ## Documentation - Update README.md for user-facing changes - Add comments for complex algorithms - Document configuration options - Keep API documentation current ## Testing Strategy - Write tests for new functionality - Maintain high test coverage - Test edge cases and error conditions - Run integration tests before major releases ## Performance Testing - Test with realistic data sizes - Measure performance impact of changes - Profile the application under load - Monitor memory usage and leaks ## Configuration Management - Test configuration changes thoroughly - Validate configuration on startup - Provide sensible defaults - Document configuration options ## Error Handling - Implement proper error handling - Use structured logging for errors - Provide meaningful error messages - Handle edge cases gracefully ## Security Considerations - Validate all inputs - Implement proper rate limiting - Log security-relevant events - Follow security best practices ## Release Process - Test thoroughly before releasing - Update version information - Create release notes - Tag releases appropriately ## Maintenance - Monitor application performance - Update dependencies regularly - Fix bugs promptly - Refactor code when needed