Welcome Contributors
Thank you for your interest in contributing to Raffi! We welcome contributions of all kinds, from bug fixes to new features, documentation improvements, and translations.Getting Started
Before you begin contributing, make sure you have:- Node.js 18+ or Bun 1.0+ installed
- Go 1.21+ (if working on the streaming server)
- Git for version control
- Familiarity with TypeScript, Svelte (for desktop/site), or React Native (for mobile)
Raffi is a monorepo containing multiple projects:
raffi-desktop (Electron + Svelte), raffi-mobile (React Native + Expo), raffi-server (Go), and raffi-site (SvelteKit).Development Setup
Clone the Repository
Desktop App Development
Mobile App Development
Server Development
Website Development
Areas for Contribution
We welcome contributions in the following areas:Bug Fixes
- Report bugs via GitHub Issues
- Include detailed reproduction steps
- Specify your platform (Windows, macOS, Linux, iOS, Android)
- Provide logs and error messages when applicable
New Features
- Discuss new features in issues before implementing
- Ensure features align with Raffi’s goals
- Consider cross-platform compatibility
- Update documentation for new functionality
UI/UX Improvements
- Enhance existing interfaces
- Improve accessibility
- Optimize animations and transitions
- Maintain consistency with Raffi’s design language
Documentation
- Fix typos and clarify instructions
- Add examples and use cases
- Translate documentation to other languages
- Update outdated information
Testing
- Write unit tests for new features
- Test on multiple platforms
- Report edge cases and unusual behaviors
- Verify fixes for reported issues
Translations
- Add support for new languages
- Improve existing translations
- Ensure cultural appropriateness
Contribution Workflow
1. Fork and Create a Branch
Use descriptive branch names like
feature/discord-integration, fix/playback-error, or docs/installation-guide.2. Make Your Changes
- Follow the code style guidelines
- Write clear, descriptive commit messages
- Test your changes thoroughly
- Update documentation as needed
3. Test on Multiple Platforms
When possible, test your changes on:- Desktop: Windows, macOS, and Linux
- Mobile: iOS and Android (if applicable)
4. Commit Your Changes
5. Push and Create a Pull Request
- Provide a clear title and description
- Reference any related issues
- Explain what you changed and why
- Include screenshots for UI changes
- Mention any breaking changes
6. Code Review
- Respond to feedback promptly
- Make requested changes in new commits
- Discuss any concerns or disagreements respectfully
- Be patient - reviews take time
Development Guidelines
Code Quality
- Follow existing patterns: Review the codebase to understand established conventions
- Use TypeScript: Leverage type safety throughout your code
- Keep it simple: Write clear, maintainable code over clever solutions
- Comment complex logic: Explain non-obvious implementation decisions
Commits
-
Write clear commit messages: Use conventional commit format when possible
feat:for new featuresfix:for bug fixesdocs:for documentation changesrefactor:for code refactoringtest:for adding testschore:for maintenance tasks
- Keep commits focused: Each commit should represent a single logical change
- Avoid mixing concerns: Don’t combine feature additions with refactoring
Pull Requests
- One feature per PR: Keep pull requests focused on a single feature or fix
- Update documentation: Include doc updates in the same PR as code changes
- Add tests when applicable: Include tests for new functionality
- Clean up before submitting: Remove debug code, console logs, and commented-out code
Community Guidelines
Be Respectful
- Treat all contributors with respect and kindness
- Provide constructive feedback
- Be open to different perspectives
- Follow the project’s code of conduct
Communication
- Use GitHub Issues for bug reports and feature requests
- Discuss significant changes before implementing them
- Ask questions when you’re unsure
- Share your knowledge and help others
Attribution
- Give credit where credit is due
- Reference sources and inspirations
- Acknowledge contributors in release notes
Getting Help
- Issues: Report bugs and request features at github.com/kaleidal/raffi/issues
- Discussions: Ask questions and discuss ideas in GitHub Discussions
- Documentation: Check the README and project documentation
If you’re new to open source, don’t be intimidated! Everyone starts somewhere, and we’re happy to help you get started.