# Contributing to UF r/place Welcome to the UF r/place project! We're excited to have you contribute to this collaborative pixel canvas for the University of Florida community. ## ๐ŸŽ“ Project Background This project is primarily intended for **UF Open Source Club students** as a learning and collaboration platform. However, **everyone is welcome to contribute** regardless of their affiliation with the club or university. ## ๐Ÿš€ Getting Repository Access ### For UF Open Source Club Members If you're part of the Open Source Club and want to join the development team: - Contact one of the **tech leads** for repository access - You'll be added as a collaborator with push access - This allows you to create branches directly in the main repository ### For External Contributors - Fork the repository to your own GitHub account - Make changes in your fork - Submit pull requests to the main repository - We welcome all contributions from the broader community! ## ๐Ÿ› Working with Issues ### Creating Issues - **Anyone can create issues** - bug reports, feature requests, documentation improvements, etc. - Use clear, descriptive titles - Provide detailed descriptions with steps to reproduce (for bugs) or use cases (for features) - Add appropriate labels when possible ### Claiming Issues - **Issues cannot be "claimed"** or reserved - Multiple people can work on the same issue simultaneously - We encourage collaboration and different approaches to solving problems ### Working on Issues Anyone can start working on any issue at any time by: 1. **Creating a branch** for the issue 2. **Making your changes** 3. **Submitting a pull request** Don't be discouraged if someone else is also working on the same issue - different approaches and solutions are valuable! ## ๐ŸŒฟ Branch Naming Convention When creating branches for issues, follow this naming pattern: ``` /- ``` ### Branch Types - `feature/` - New features or enhancements - `bugfix/` - Bug fixes and corrections - `docs/` - Documentation updates - `refactor/` - Code refactoring without functionality changes - `chore/` - Maintenance tasks, dependency updates, etc. ### Examples ```bash feature/36-add-redis-construct bugfix/42-fix-api-cors-error docs/15-update-deployment-guide refactor/28-simplify-lambda-handlers chore/51-update-dependencies ``` ### Creating Branches **For team members with repository access:** ```bash git checkout main git pull origin main git checkout -b feature/36-add-redis-construct ``` **For external contributors:** ```bash # In your forked repository git checkout main git pull upstream main # sync with original repo git checkout -b feature/36-add-redis-construct ``` ## ๐Ÿค Collaboration Guidelines ### Multiple Contributors on Same Issue - **Collaboration is encouraged!** Don't hesitate to work on an issue just because someone else is too - Consider reaching out to other contributors working on the same issue - Different approaches can lead to better solutions - Code reviews benefit from multiple perspectives ### Inactive Branches - If a branch for an issue has been **inactive for a while**, feel free to create your own branch - No need to wait for permission or confirmation - Fresh perspectives often lead to breakthroughs ### Communication - Use GitHub issues and pull requests for project-related discussions - Ask questions in comments if you need clarification - Share your progress and challenges - others might have helpful insights ## ๐Ÿ“ Development Workflow ### 1. Set Up Your Environment Follow the [Getting Started Guide](Getting-Started.md) to set up your local development environment. ### 2. Pick an Issue - Browse [open issues](https://github.com/ufosc/UF_r-place/issues) - Look for issues labeled `good first issue` if you're new to the project - Read through the issue description and comments ### 3. Create Your Branch Use the naming convention described above. ### 4. Make Your Changes - Follow the existing code style and patterns - Write clear, descriptive commit messages - Test your changes locally - Update documentation if needed ### 5. Submit a Pull Request - Push your branch to GitHub - Create a pull request with a clear title and description - Reference the issue number (e.g., "Fixes #36") - Be responsive to feedback during code review ## ๐Ÿงช Code Quality Guidelines ### Testing - Test your changes thoroughly in your local environment - Ensure the frontend and backend work together correctly - Verify AWS deployments don't break existing functionality ### Code Style - Follow TypeScript best practices - Use meaningful variable and function names - Add comments for complex logic - Keep functions focused and small ### Documentation - Update README files if you change functionality - Add or update wiki documentation for new features - Include JSDoc comments for new functions and classes ## ๐Ÿ—๏ธ Project Areas to Contribute ### Frontend (`web/`) - React components and pages - User interface improvements - User experience enhancements - Responsive design - Accessibility improvements ### Backend (`infra/`) - Lambda function development - AWS infrastructure (CDK constructs) - API endpoints and logic - Database integrations - Performance optimizations ### Documentation - Wiki pages and guides - Code documentation - Setup and deployment instructions - Architecture explanations ### DevOps and Tooling - Build and deployment scripts - CI/CD improvements - Development environment setup - Testing frameworks ## ๐ŸŽฏ Getting Help ### Learning Resources - Check the [Project Overview](Project-Overview.md) for architecture understanding - Read the [AWS Configuration Guide](AWS-Configuration.md) for AWS-related questions - Browse the [Extensibility Guide](Extensibility-Guide.md) for adding new features ### Where to Ask Questions - **GitHub Issues** - For bugs, feature requests, and project discussions - **Pull Request Comments** - For code-specific questions and reviews - **UF Open Source Club** - For in-person help and collaboration ## ๐Ÿ“‹ Contribution Checklist Before submitting a pull request, make sure: - [ ] Your code follows the project's style guidelines - [ ] You've tested your changes locally - [ ] Your branch name follows the naming convention - [ ] Your commit messages are clear and descriptive - [ ] You've updated documentation if necessary - [ ] Your pull request references the relevant issue number - [ ] You've responded to any feedback from code reviews ## ๐ŸŒŸ Recognition All contributors will be recognized in the project! Whether you: - Fix a typo in documentation - Add a major new feature - Report a bug - Suggest improvements Your contributions help make UF r/place better for the entire community. --- **Ready to contribute?** Start by checking out the [open issues](https://github.com/ufosc/UF_r-place/issues) and pick something that interests you!