Contributing to Kryvea
Thank you for your interest in contributing to Kryvea! This guide will help you get started.
Table of Contents
- How to Contribute
- Development Setup
- Coding Standards
- Submitting Changes
- Reporting Bugs
- Suggesting Features
How to Contribute
Types of Contributions
We welcome:
- Bug fixes
- New features
- Documentation improvements
- Translations
- Tests
- UI/UX enhancements
- Performance improvements
Development Setup
Prerequisites
- Go 1.24+
- Node.js 18+
- Docker & Docker Compose (for testing)
- NPM (for hot reload)
Backend Setup (Recommended Docker)
bash
sudo docker compose up --buildFrontend Setup
bash
cd web
# Install dependencies
npm install
# Run development server with hot reload
npm run devCoding Standards
Go (Backend)
Style Guide:
- Follow standard Go conventions
- Use
gofmtfor formatting - Keep code clean, small and simple without too many nested functions calls
TypeScript/React (Frontend)
Style Guide:
- Use the provided Prettier config for formatting (.vscode)
- Use functional components
- Write readable TypeScript types for complex props
- Use meaningful and explicit variable names
Commit Messages
Follow conventional commits:
<type>(<scope>): <subject>
<body>
<footer>Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting)refactor: Code refactoringtest: Adding/updating testschore: Maintenance tasks
Examples:
feat(api): add CVSS v4 support to vulnerability endpoint
Implements CVSS v4.0 scoring in addition to existing v2/v3/v3.1.
Includes parser, validator, and API integration.
Closes #123fix(frontend): resolve session timeout on idle
Previously, sessions would expire during active use due to
incorrect timeout calculation. Now properly resets on activity.
Fixes #456Submitting Changes
Pull Request Process
- Create a branch:
bash
git checkout -b feature/amazing-feature- Make your changes:
- Write code
- Add tests for new functionalities, following single responsibility principle
- Update documentation accordingly
- Push to your fork:
bash
git push origin feature/amazing-feature- Create Pull Request:
- Go to GitHub
- Click "New Pull Request"
- Fill in the template (provided below)
- Link related issues
Pull Request Template
markdown
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Checklist
- [ ] Code follows style guidelines
- [ ] Self-reviewed the code
- [ ] Commented complex code
- [ ] Updated documentation
- [ ] No new warningsReview Process
- Maintainers will review your PR
- Address any requested changes
- Once approved, your PR will be merged
- Celebrate!
Reporting Bugs
Before Submitting
- Check existing issues
- Verify it's actually a bug
- Collect debug information
Bug Report Template
markdown
**Describe the bug**
Clear description of the bug
**To Reproduce**
Steps to reproduce:
1. Go to '...'
2. Click on '...'
3. See error
**Expected behavior**
What you expected to happen
**Screenshots**
If applicable, add screenshots
**Environment:**
- OS: [e.g., Ubuntu 22.04]
- Docker version: [e.g., 24.0.0]
- Kryvea version: [e.g., 1.0.0]
**Additional context**
Any other relevant informationProviding Logs
bash
# Collect logs
docker logs kryvea-app > app.log
docker logs kryvea-db > db.log
docker logs kryvea-web > web.log
# Attach to issueSuggesting Features
Feature Request Template
markdown
**Is your feature request related to a problem?**
Clear description of the problem
**Describe the solution you'd like**
What you want to happen
**Describe alternatives you've considered**
Other solutions you've thought about
**Additional context**
Mockups, examples, etc.Feature Discussion
Before implementing large features:
- Open a discussion on GitHub
- Describe the feature
- Get feedback from maintainers
- Once approved, create an issue
- Start implementation
Documentation
Adding Documentation
- Update relevant
.mdfiles indocs/ - Include code examples
- Add screenshots for UI changes
Documentation Standards
- Clear and concise
- Include examples
- Keep updated with code
- Use proper markdown formatting
Getting Help
- Discussions - Ask questions
- Issues - Report problems
Recognition
Contributors will be:
- Mentioned in release notes
- Forever appreciated! ❤️
Thank you for contributing to Kryvea!