Welcome! This checklist will guide you through making your first contribution to rad.io.
- Read the README.md to understand what rad.io does
- Review the Code of Conduct - we're a respectful community
- Check out the Community Guidelines to understand how we work
-
Fork the repository on GitHub (click "Fork" button)
-
Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/rad.io.git cd rad.io -
Add upstream remote:
git remote add upstream https://github.com/alexthemitchell/rad.io.git
-
Ensure you have Node.js 18+ installed
-
Install dependencies:
npm install
-
Verify installation:
npm run validate
-
Start the development server:
npm start
-
Visit https://localhost:8080 and explore the app
Note: HTTPS is required for WebUSB functionality. The development server uses a self-signed certificate; you will need to accept this certificate in your browser to access the site and use WebUSB features.
-
Open Monitor: https://localhost:8080/monitor (use
?mockSdr=1for simulated mode) -
Run tests to see everything works:
npm test
- Browse good first issue labels
- Check help wanted issues
- Look for issues labeled
documentationif you prefer starting there - Ask in Discussions if you need guidance
Easy wins for first-time contributors:
- Fix typos in documentation
- Improve code comments
- Add examples to guides
- Fix simple bugs
- Write tests for existing code
- Improve error messages
-
Update main branch:
git checkout main git pull upstream main
-
Create a feature branch:
git checkout -b feature/your-feature-name
- Follow the code style (linter will help)
- Add tests if adding/changing functionality
- Update documentation if needed
- Keep commits focused and logical
-
Run linting:
npm run lint npm run lint:fix # Auto-fix issues -
Run type checking:
npm run type-check
-
Run tests:
npm test -
Test in browser manually
-
Run full validation:
npm run validate
-
Stage your changes:
git add . -
Commit with a clear message:
git commit -m "feat: add new feature X" -
Follow Conventional Commits format
feat:for new featuresfix:for bug fixesdocs:for documentationtest:for testsrefactor:for refactoringchore:for maintenance
-
Push your branch:
git push origin feature/your-feature-name
- Go to your fork on GitHub
- Click "Pull Request" button
- Fill out the PR template completely
- Link related issues (use "Fixes #123")
- Add screenshots if relevant
- Mark as draft if still working on it
Before submitting, verify:
- Code follows style guidelines
- Tests added for new functionality
- All tests pass locally
- Linting passes
- Type checking passes
- Build succeeds
- Documentation updated
- Commit messages follow convention
- No console.log statements (use console.info/warn/error)
- Accessibility considered (if UI changes)
- Edit CONTRIBUTORS.md
- Add your name, GitHub link, and contribution
- Include this in your PR
- Respond to comments promptly
- Ask questions if feedback is unclear
- Make requested changes
- Mark conversations as resolved when done
- Thank reviewers for their time
-
Make additional commits on the same branch
-
Push updates:
git add . git commit -m "fix: address review comments" git push origin feature/your-feature-name
-
Re-request review if needed
If main branch updates while your PR is open:
-
Fetch upstream changes:
git fetch upstream git merge upstream/main
-
Resolve any conflicts
-
Push updated branch
- Your contribution is now part of rad.io!
- You're listed in CONTRIBUTORS.md
- You're part of the community
-
Delete your feature branch:
git branch -d feature/your-feature-name git push origin --delete feature/your-feature-name
-
Update your fork:
git checkout main git pull upstream main git push origin main
- Look for another issue to tackle
- Help others in Discussions
- Review other contributors' PRs
- Suggest improvements
- Become a regular contributor!
Problem: Tests pass locally but fail in CI
- Solution: Run full test suite with
npm test(not watch mode) - Solution: Check if you're using consistent Node.js version
Problem: Linting fails
- Solution: Run
npm run lint:fixto auto-fix most issues - Solution: Check ESLint output for specific issues
Problem: PR has conflicts with main
- Solution: Merge latest main into your branch
- Solution: Ask for help in PR comments if stuck
Problem: Webpack build fails
- Solution: Delete
node_modulesanddist, runnpm installagain - Solution: Check Node.js version (need 18+)
- Ask in your PR: Maintainers are happy to help
- GitHub Discussions: Great for general questions
- Documentation: Check docs/ONBOARDING.md
- Issues: Comment on the issue you're working on
- We're here to help newcomers!
- No question is too small
- We all started somewhere
- Be patient with yourself
- Contributing Guide - Detailed contribution guidelines
- Onboarding Guide - Technical onboarding
- Architecture - System design
- Start small - Pick an easy first issue
- Ask questions - We're here to help
- Test thoroughly - Run all checks before submitting
- Be patient - Reviews take time
- Learn from feedback - Every comment helps you improve
- Have fun - Contributing should be enjoyable!
- Don't skip tests - They catch bugs early
- Don't ignore linting - Code style matters
- Don't be afraid to ask - Confusion is normal
- Don't give up - First PR is always hardest
- Don't work on large features first - Start small
- Don't skip documentation - Future you will thank you
Thank you for contributing to rad.io! Your efforts help make this project better for everyone.
Every contribution matters, whether it's code, documentation, bug reports, or helping others. Welcome to the community!
Questions? Open a Discussion or ask in your PR!
Last updated: 2025-10-30