Contributing
Thank you for your interest in contributing to Cheolsu Proxy! We welcome contributions from the community to help improve this project. Whether you're interested in fixing bugs, adding new features, or improving documentation, there are many ways to get involved.
How to Contribute
Here are some steps to get started with contributing to this project:
- Fork the repository: Fork the repository on GitHub and clone it to your local machine
- Create a branch: Create a new branch for your changes
- Make changes: Make your changes and test them thoroughly
- Commit: Commit your changes with a descriptive commit message
- Pull Request: Push your changes to your fork and submit a pull request
We appreciate contributions of any size, from small bug fixes to major new features. If you're unsure about a change you'd like to make, feel free to open an issue first to discuss it with the maintainers.
Types of Contributions
🐛 Bug Fixes
- Review and reproduce bug reports
- Analyze root causes
- Write test cases
- Implement fixes
✨ New Features
- Review feature requests
- Write design documents
- Implement and test
- Update documentation
📚 Documentation Improvements
- Write user guides
- Update API documentation
- Improve code comments
- Translation work
🧪 Testing
- Write unit tests
- Add integration tests
- Performance testing
- Security testing
Development Environment Setup
Prerequisites
- Rust: 1.70.0 or higher
- Node.js: 22.0.0 or higher
- Tauri CLI: Latest version
- Git: 2.0.0 or higher
Rust Installation
Development Tools Installation
Project Clone and Build
Development Workflow
1. Check Issues
- Select an issue to work on from GitHub Issues
- Assign yourself to the issue to indicate you're working on it
- Comment on the issue if you have questions or suggestions
2. Create Branch
3. Development and Testing
4. Commit
5. Pull Request
Coding Style
Rust Coding Rules
- Follow Rust standard coding conventions (use rustfmt)
- Error handling: Use Result type for explicit error handling
- Documentation comments: Use
/// - Module structure: Clearly separated
- Testing: Write appropriate tests for new features
TypeScript/React Coding Rules
- Use TypeScript strict mode
- Use functional components and hooks
- Type definitions: Write explicitly
- Components: Follow single responsibility principle
- Interfaces: Use Interface when possible
- Props: Don't use inline format
File Structure
- Follow FSD (Feature-Sliced Design) architecture
- Naming conventions:
- Variables and functions: camelCase
- Constants: UPPER_SNAKE_CASE
- Components: PascalCase
- File names: kebab-case
Commit Message Rules
Format
Types
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code formatting, missing semicolons, etc.refactor: Code refactoringtest: Add or modify testschore: Build process, auxiliary tool changes
Examples
Testing
Unit Tests
UI Tests
Manual Testing
Pull Request Guidelines
PR Title
- Write clearly and concisely
- Summarize changes in one line
- Include issue number (e.g., "Fix #123")
PR Description
Review Process
- Automated checks: CI/CD pipeline passes
- Code review: At least one maintainer approval
- Testing: All tests pass
- Merge: Only maintainers can merge (Squash and merge recommended)
Troubleshooting
Common Issues
Build failure:
Test failure:
Tauri build error:
Community
Communication Channels
- GitHub Issues: Bug reports, feature requests
- GitHub Discussions: General questions, idea sharing
- Pull Requests: Code reviews, discussions
Code of Conduct
All contributors must follow the Code of Conduct.
License
All contributed code will be distributed under the same license as the project (MIT/Apache-2.0).
Acknowledgments
Thank you to all contributors! Your contributions make Cheolsu Proxy a better tool.
For more detailed information, see Development Setup.
