Contributing to R-Shell
October 30, 2025 ยท View on GitHub
First off, thank you for considering contributing to R-Shell! ๐
๐ฏ Project Context
This is a learning and practice project for vibing coding methodology. The frontend is AI-generated from Figma designs, and development is powered by GitHub Copilot. We welcome contributions that align with this experimental approach!
๐ Table of Contents
- Code of Conduct
- How Can I Contribute?
- Development Setup
- Pull Request Process
- Style Guidelines
- Community
Code of Conduct
This project adheres to a code of conduct that all contributors are expected to follow. Please be respectful and constructive in all interactions.
How Can I Contribute?
๐ Reporting Bugs
Before creating bug reports, please check existing issues to avoid duplicates. When creating a bug report, include:
- Clear title and description
- Steps to reproduce the issue
- Expected vs actual behavior
- Screenshots if applicable
- Environment details (OS, Rust version, Node version)
๐ก Suggesting Enhancements
Enhancement suggestions are tracked as GitHub issues. When suggesting an enhancement:
- Use a clear and descriptive title
- Provide a detailed description of the suggested enhancement
- Explain why this enhancement would be useful
- Include mockups or examples if applicable
๐ง Pull Requests
- Fork the repo and create your branch from
main - If you've added code that should be tested, add tests
- Ensure the test suite passes
- Make sure your code follows the existing style
- Write a clear commit message
Development Setup
Prerequisites
- Node.js (v18+)
- pnpm
- Rust (latest stable)
- Tauri CLI dependencies
Installation
# Clone your fork
git clone https://github.com/your-username/r-shell.git
cd r-shell
# Install dependencies
pnpm install
# Run in development mode
pnpm tauri dev
Testing
# Run frontend tests
pnpm test
# Run Rust tests
cd src-tauri
cargo test
# Run E2E tests (configure credentials first)
pnpm playwright test
Pull Request Process
-
Update documentation - Update the README.md with details of changes if applicable
-
Follow commit conventions - Use conventional commits format:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changesstyle:- Code style changes (formatting, etc)refactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
-
Update tests - Add or update tests as needed
-
Keep commits focused - One logical change per commit
-
Write clear PR descriptions - Explain what and why
Example Commit Messages
feat: add SSH key authentication support
fix: resolve memory leak in terminal component
docs: update installation instructions for Windows
refactor: simplify connection profile management
Style Guidelines
TypeScript/React
- Use TypeScript for all new code
- Follow existing code formatting (Prettier)
- Use functional components and hooks
- Keep components focused and single-purpose
- Add JSDoc comments for complex functions
Rust
- Follow Rust standard style guidelines (rustfmt)
- Use
cargo clippyto catch common mistakes - Add documentation comments for public APIs
- Handle errors properly (don't unwrap in production code)
General
- Write self-documenting code with clear variable names
- Keep functions small and focused
- Add comments for complex logic
- Update documentation when changing behavior
Project Structure
r-shell/
โโโ src/ # React frontend
โ โโโ components/ # React components
โ โโโ lib/ # Utility functions
โ โโโ __tests__/ # Frontend tests
โโโ src-tauri/ # Rust backend
โ โโโ src/ # Rust source code
โ โโโ Cargo.toml # Rust dependencies
โโโ tests/ # E2E tests
โโโ docs/ # Documentation
Areas for Contribution
We especially welcome contributions in these areas:
High Priority
- ๐ Bug fixes
- ๐ Documentation improvements
- โจ UI/UX enhancements
- ๐งช Test coverage improvements
Feature Requests
- ๐ Additional authentication methods (SSH keys, 2FA)
- ๐ Enhanced system monitoring features
- ๐จ Theme customization
- ๐ Plugin system
- ๐ฆ Package management integration
- ๐ Search functionality in terminal history
Technical Debt
- โป๏ธ Code refactoring
- ๐ฏ Performance optimizations
- ๐ Security improvements
- โก Build optimization
Testing Guidelines
Frontend Testing
- Test user interactions
- Test component rendering
- Mock Tauri commands
- Test edge cases
Backend Testing
- Test SSH connection handling
- Test file operations
- Test command execution
- Test error scenarios
E2E Testing
- Test complete user workflows
- Test cross-platform compatibility
- Configure test credentials in test files
Community
Getting Help
- ๐ Read the README and documentation
- ๐ Search existing issues
- ๐ฌ Ask questions in Discussions
Recognition
Contributors will be recognized in our README and release notes!
License
By contributing, you agree that your contributions will be licensed under the same license as the project.
Thank you for contributing to R-Shell! ๐