# Contributing to Project Bootstrap Thank you for your interest in contributing to the Project Bootstrap! This document provides guidelines for contributing. ## How to Contribute ### Reporting Issues If you find a bug or have a suggestion: 1. Check if the issue already exists 2. Create a new issue with: - Clear title - Detailed description - Steps to reproduce (for bugs) - Expected vs actual behavior - Your environment (OS, versions, etc.) ### Suggesting Enhancements For new features or improvements: 1. Open an issue first to discuss 2. Explain the use case 3. Describe the proposed solution 4. Consider backward compatibility ### Pull Requests 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Test thoroughly 5. Submit a pull request ## Development Guidelines ### Code Style #### Shell Scripts - Use bash for scripts - Include error handling (`set -e`) - Add comments for complex logic - Use meaningful variable names - Follow existing script patterns #### Template Files - Follow the coding-agent-rules standards - Maintain consistency with existing templates - Include comments where helpful - Keep files focused and modular ### Testing Before submitting: 1. Test the bootstrap script: ```bash ./bootstrap.sh test-project --no-git cd test-project ``` 2. Verify the generated project: ```bash # Test Docker Compose docker compose -f deploy/compose.yml up -d # Test backend cd backend uv sync uv run pytest # Test frontend cd ../frontend npm install npm test ``` 3. Clean up: ```bash cd .. rm -rf test-project ``` ### Documentation - Update README.md if needed - Update USAGE.md for new features - Add examples for new functionality - Keep documentation clear and concise ## Project Structure ### Bootstrap Files ``` project-bootstrap/ ├── bootstrap.sh # Main script - core logic ├── templates/ # Template files │ ├── backend/ # Backend templates │ ├── frontend/ # Frontend templates │ ├── deploy/ # Docker templates │ ├── scripts/ # Script templates │ └── docs/ # Documentation templates └── *.md # Documentation ``` ### Adding New Templates 1. Create the template file in appropriate directory 2. Update `bootstrap.sh` if needed 3. Test the bootstrap process 4. Update documentation ### Modifying Scripts 1. Maintain backward compatibility 2. Add error handling 3. Test on clean environment 4. Update script documentation ## Coding Standards ### Shell Scripts ```bash #!/bin/bash # Description of what the script does set -e # Exit on error # Use functions for organization function main() { # Main logic here } # Call main function main "$@" ``` ### Python Templates - Follow PEP 8 - Use type hints - Include docstrings - Write tests ### TypeScript Templates - Use strict mode - Follow ESLint rules - Include JSDoc comments - Write tests ## Commit Messages Use clear, descriptive commit messages: ``` Add feature: Brief description Longer explanation if needed. - Detail 1 - Detail 2 ``` ### Commit Message Format - **Add**: New features or files - **Update**: Changes to existing features - **Fix**: Bug fixes - **Remove**: Removed features or files - **Refactor**: Code restructuring - **Docs**: Documentation changes - **Test**: Test additions or changes ## Release Process 1. Update CHANGELOG.md 2. Update version numbers 3. Test thoroughly 4. Create release tag 5. Update documentation ## Questions? - Open an issue for questions - Check existing documentation - Review coding-agent-rules ## Code of Conduct - Be respectful and inclusive - Provide constructive feedback - Focus on the code, not the person - Help others learn and grow ## License By contributing, you agree that your contributions will be licensed under the MIT License. ## Thank You! Your contributions help make this project better for everyone. We appreciate your time and effort!