We welcome contributions to Mycelium Cloud! This document provides guidelines and instructions for contributing to the project.
Please be respectful and constructive in all interactions with the community. We're committed to providing a welcoming and inclusive environment.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/kubecloud.git cd kubecloud - Create a feature branch:
git checkout -b feature/your-feature-name
Follow the Getting Started Guide to set up your development environment.
- Follow Go Code Review Comments
- Run
gofmtbefore committing - Run
golintto check code style - Write clear, descriptive comments
- Use meaningful variable and function names
- Use ESLint configuration in the project
- Format code with Prettier
- Follow Vue 3 Composition API conventions
- Write clear component descriptions
- Use TypeScript for type safety
- Write unit tests for new functions
- Run tests:
go test ./... - Aim for >80% code coverage on new code
- Write tests for components and utilities
- Run tests:
npm run test - Test user interactions and edge cases
- Update relevant README files with new features
- Add JSDoc comments for JavaScript/TypeScript code
- Add godoc comments for Go code
- Update the main README if changing project structure
Write clear, descriptive commit messages:
git commit -m "feat: add support for cluster auto-scaling"Use conventional commit format:
feat:for new featuresfix:for bug fixesdocs:for documentation changesstyle:for code style changesrefactor:for code refactoringtest:for test additions/changeschore:for maintenance tasks
-
Ensure your branch is up to date:
git fetch origin git rebase origin/master
-
Push your changes:
git push origin feature/your-feature-name
-
Create a Pull Request on GitHub with:
- Clear title describing the changes
- Detailed description of what changed and why
- Reference to related issues (if any)
- Screenshots for UI changes
- Test results
-
Address review comments promptly
-
Ensure CI passes (tests, linting, etc.)
-
Rebase and squash commits if requested
- Code follows project style guidelines
- Tests written for new functionality
- All tests pass locally
- Documentation updated (README, comments, etc.)
- Commit messages are clear and descriptive
- No breaking changes (or documented if necessary)
- Docker builds successfully (if applicable)
When reporting bugs or suggesting features:
- Check existing issues to avoid duplicates
- Use clear, descriptive titles
- Provide detailed information:
- System information (OS, versions)
- Steps to reproduce
- Expected vs actual behavior
- Screenshots/logs if applicable
- Use labels to categorize the issue
- Feature development
- Performance optimization
- Bug fixes
- API improvements
- Database optimizations
- UI/UX improvements
- New features
- Bug fixes
- Accessibility improvements
- Performance optimization
- Guides and tutorials
- API documentation
- Architecture diagrams
- Troubleshooting guides
- Example configurations
- CI/CD improvements
- Docker/Kubernetes configurations
- Deployment automation
- Monitoring enhancements
kubecloud/
├── backend/ # Go backend API
├── frontend/kubecloud/ # Vue.js frontend
├── crd/ # Kubernetes CRDs
├── ingress-controller/ # Ingress controller
├── mycelium-cni/ # CNI plugin
├── mycelium-peer/ # Peer networking
├── k3s/ # K3s deployment
├── docs/ # Documentation
└── README.md # Main README
- Automated Checks: CI pipeline validates code quality
- Code Review: Maintainers review your changes
- Feedback: Address any comments or suggestions
- Approval: Once approved, your PR will be merged
- All CI checks pass
- At least one approval from maintainers
- Documentation updated
- No breaking changes (or clearly documented)
cd backend
go test ./... # Run tests
go build # Build binary
make run # Run locallycd frontend/kubecloud
npm test # Run tests
npm run build # Build for production
npm run dev # Run development serverdocker-compose up # Run all services- Go: golang.go
- Vue: Vue - Official
- ESLint: dbaeumer.vscode-eslint
- Prettier: esbenp.prettier-vscode
- Docker: ms-azuretools.vscode-docker
go fmt- Format Go codegofmt- Official Go formattergolint- Go linterprettier- Format JS/TS codeeslint- Lint JS/TS code
- Check existing documentation in
docs/ - Open a discussion on GitHub
- Create an issue for bugs
- Contact maintainers
By contributing to Mycelium Cloud, you agree that your contributions will be licensed under the Apache License 2.0.
Thank you for contributing to making Mycelium Cloud better!
For more information, see the main README and Architecture Overview.