Thank you for your interest in contributing to MrRSS! We welcome contributions from everyone.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Coding Guidelines
- Testing
- Pull Request Process
- Reporting Bugs
- Suggesting Enhancements
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/MrRSS.git - Add upstream remote:
git remote add upstream https://github.com/WCY-dt/MrRSS.git - Create a new branch:
git checkout -b feature/your-feature-name
- Go 1.25 or higher
- Node.js (LTS version)
- Wails CLI:
go install github.com/wailsapp/wails/v3/cmd/wails3@latest
Linux only: Install system dependencies:
# Ubuntu/Debian
sudo apt-get install libgtk-3-dev libwebkit2gtk-4.1-dev gcc pkg-config
# For older Ubuntu versions (before 24.04), use:
# sudo apt-get install libgtk-3-dev libwebkit2gtk-4.0-dev gcc pkg-config-
Install frontend dependencies:
cd frontend npm install cd ..
-
Run in development mode:
wails3 dev
-
Build for production:
wails3 build
- 🐛 Bug fixes: Fix issues reported in GitHub Issues
- ✨ Features: Add new functionality
- 📝 Documentation: Improve or add documentation
- 🎨 UI/UX: Enhance the user interface
- 🌐 Translations: Add or improve translations
- ⚡ Performance: Optimize code performance
- ✅ Tests: Add or improve test coverage
- Check existing issues - Look for related issues or create a new one
- Discuss first - For major changes, discuss in an issue first
- Write code - Follow our coding guidelines
- Write tests - Add tests for new functionality
- Update documentation - Update relevant documentation
- Submit PR - Create a pull request with a clear description
- Follow Effective Go guidelines
- Use
gofmtto format code - Run
go vetto check for common mistakes - Add comments for exported functions and types
- Keep functions small and focused
- Handle errors explicitly
Example:
// FetchFeed retrieves and parses an RSS feed from the given URL
func (f *Fetcher) FetchFeed(url string) (*Feed, error) {
if url == "" {
return nil, errors.New("url cannot be empty")
}
// Implementation...
}- Use Vue 3 Composition API
- Follow Vue.js Style Guide
- Use TypeScript-style JSDoc comments for better IDE support
- Keep components small and reusable
- Use Tailwind CSS for styling
- Ensure responsive design
Example:
<script setup>
import { ref, computed } from 'vue';
const props = defineProps({
feed: { type: Object, required: true }
});
const isExpanded = ref(false);
</script>- Backend:
internal/for internal packages - Frontend:
frontend/src/components/for Vue components - Tests: Co-locate tests with the code they test
- Assets:
frontend/assets/for images, icons, etc.
Follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples:
feat(feed): add support for Atom feeds
fix(ui): resolve mobile layout issue
docs(readme): update installation instructions
make testWe provide automated scripts for running checks:
Linux/macOS:
# Run all quality checks (lint, test, build)
./scripts/check.sh
# Pre-release checks (includes version consistency)
./scripts/pre-release.shWindows (PowerShell):
# Run all quality checks (lint, test, build)
.\scripts\check.ps1
# Pre-release checks (includes version consistency)
.\scripts\pre-release.ps1Before submitting a PR, manually test:
- Build the application
- Test on your target platform
- Verify all affected features work correctly
- Check for console errors
- Test edge cases
-
Update your branch with the latest upstream changes:
git fetch upstream git rebase upstream/main
-
Run tests and ensure they all pass
-
Update documentation if you've changed APIs or added features
-
Create a Pull Request with:
- Clear title describing the change
- Description of what changed and why
- Link to related issue(s)
- Screenshots for UI changes
- Notes about breaking changes (if any)
-
Address review feedback promptly
-
Squash commits if requested before merge
- Code follows project style guidelines
- Tests added/updated and passing
- Documentation updated
- Commit messages follow conventions
- No merge conflicts
- Screenshots included (for UI changes)
Use the Bug Report template and include:
- Description: Clear description of the bug
- Steps to Reproduce: Detailed steps
- Expected Behavior: What should happen
- Actual Behavior: What actually happens
- Environment: OS, version, etc.
- Screenshots: If applicable
- Logs: Relevant error messages
Use the Feature Request template and include:
- Problem: What problem does this solve?
- Solution: Your proposed solution
- Alternatives: Other solutions you considered
- Additional Context: Mockups, examples, etc.
- Check existing Issues
- Start a Discussion
- Read the README and other documentation
By contributing, you agree that your contributions will be licensed under the GPLv3 License.
Thank you for contributing to MrRSS! 🎉