Thank you for your interest in contributing to CodeRunner! We welcome contributions from the community.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Process
- Coding Standards
- Testing
- Commit Message Guidelines
- Questions?
This project adheres to a Code of Conduct that all contributors are expected to follow. Please read CODE_OF_CONDUCT.md before contributing.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/CodeRunner.git cd CodeRunner - Add upstream remote:
git remote add upstream https://github.com/ORIGINAL_OWNER/CodeRunner.git
- Create a branch for your changes:
git checkout -b feature/your-feature-name
- Node.js v18+
- Docker (for runtime containers)
- npm
-
Run the setup script:
./setup.sh
This will build all Docker runtime images and install dependencies.
-
Start the development servers:
# Terminal 1 - Backend cd server && npm run dev # Terminal 2 - Frontend cd client && npm run dev
-
Access the application:
- Frontend: http://localhost:5173
- Backend: http://localhost:3000
Before submitting a bug report:
- Check if the issue has already been reported
- Verify the bug exists in the latest version
- Collect information about your environment
When submitting a bug report, include:
- Clear and descriptive title
- Steps to reproduce the issue
- Expected vs actual behavior
- Screenshots or error messages
- Environment details (OS, Node version, Docker version)
Feature suggestions are welcome! Please:
- Use a clear and descriptive title
- Provide detailed description of the proposed feature
- Explain why this feature would be useful
- Consider implementation details if possible
We welcome code contributions! Here are areas where you can help:
- Bug fixes: Check open issues labeled
bug - Features: Look for issues labeled
enhancementorgood first issue - Documentation: Improve README, docs, or code comments
- Tests: Add or improve test coverage
- Performance: Optimize existing code
- Infrastructure: Improve Docker configurations, build scripts
-
Update your fork with the latest upstream changes:
git fetch upstream git rebase upstream/main
-
Make your changes in your feature branch:
- Write clean, readable code
- Follow the coding standards
- Add tests for new functionality
- Update documentation as needed
-
Test your changes:
./run-tests.sh
-
Commit your changes following the commit message guidelines:
git add . git commit -m "feat: add new feature"
-
Push to your fork:
git push origin feature/your-feature-name
-
Open a Pull Request:
- Use a clear and descriptive title
- Fill out the PR template completely
- Link related issues
- Ensure all CI checks pass
- Request review from maintainers
- Maintainers will review your PR within a few days
- Address any requested changes promptly
- Keep the PR focused on a single feature/fix
- Be patient and respectful during the review process
- Use TypeScript for type safety
- Follow existing code style (we use ESLint)
- Use meaningful variable and function names
- Add comments for complex logic
- Keep functions small and focused
// ✅ Good
const executeCode = async (
code: string,
language: string,
): Promise<ExecutionResult> => {
// Implementation
};
// ❌ Bad
const exec = async (c: string, l: string) => {
// Implementation
};- Place components in
client/src/components/ - Place utilities in respective
lib/orutils/directories - Add tests next to the files they test with
.test.tsor.test.tsxextension - Update documentation when adding new features
All contributions should include appropriate tests:
cd client
npm run test:run # Run tests once
npm run test:watch # Watch mode
npm run test:coverage # Coverage reportcd server
npm test # Run all tests
npm test -- --coverage # With coverage./run-tests.sh # Run all tests including integration- Write unit tests for all new functions
- Add integration tests for new endpoints
- Ensure test coverage remains high
- Test edge cases and error scenarios
We follow conventional commits for clear commit history:
<type>(<scope>): <subject>
<body>
<footer>
feat: New featurefix: Bug fixdocs: Documentation changestest: Adding or updating testsrefactor: Code refactoringperf: Performance improvementschore: Build process or tooling changesstyle: Code style changes (formatting, missing semicolons, etc.)
feat(client): add keyboard shortcuts modal
Added a modal that displays all available keyboard shortcuts.
Users can access it by pressing Ctrl+K or clicking the help icon.
Closes #123
fix(server): resolve memory leak in container pool
Fixed issue where containers weren't being properly cleaned up
after timeout, causing memory leak during high load.
Fixes #456
If you have questions about contributing:
- Open an issue with the
questionlabel - Check existing issues for similar questions
- Review the documentation in the
docs/directory
Contributors will be recognized in:
- GitHub's contributor list
- Project documentation (if making significant contributions)
Thank you for contributing to CodeRunner! 🚀