Contributing to Ovyxa
We welcome contributions from the community! Help us build the best privacy-first analytics platform.
Ways to Contribute
Documentation
Help improve these docs:
Fix typos or errors:
- Fork the docs repository
- Edit the markdown files in
/docs - Submit a pull request
Add examples:
- Integration guides for new frameworks
- Use case tutorials
- Best practices guides
- Code snippets and recipes
Improve clarity:
- Simplify complex explanations
- Add diagrams or screenshots
- Fill in missing information
- Update outdated content
Code Contributions
Contribute to the Ovyxa codebase:
Bug fixes:
- Check GitHub issues
- Look for issues labeled
bugorgood first issue - Fix and submit PR with tests
New features:
- Discuss in GitHub Discussions first
- Create RFC (Request for Comments) for major changes
- Implement with tests and documentation
- Submit PR referencing the RFC
Performance improvements:
- Profile and identify bottlenecks
- Optimize queries or algorithms
- Benchmark before and after
- Document improvements
Bug Reports
Found a bug? Help us fix it:
Search first:
- Check existing issues to avoid duplicates
- Search closed issues (might be already fixed)
Create detailed report:
**Description:**
Clear description of the bug
**Steps to Reproduce:**
1. Go to...
2. Click on...
3. See error
**Expected Behavior:**
What should happen
**Actual Behavior:**
What actually happens
**Environment:**
- Browser: Chrome 119
- OS: macOS 14.0
- Ovyxa version: 1.2.3
**Screenshots:**
[If applicable]
Feature Requests
Suggest new features:
Check roadmap:
- Review public roadmap
- Check if feature is already planned
Create proposal:
- Explain the problem it solves
- Describe your proposed solution
- Consider alternatives
- Explain why it fits Ovyxa' philosophy
Discussion:
- Engage with community feedback
- Iterate on the proposal
- Help refine the feature
Development Setup
Prerequisites
- Node.js 18+ or 20+
- PostgreSQL 14+
- ClickHouse 23+
- Git
Clone Repository
git clone https://github.com/ovyxa/core.git
cd core
Install Dependencies
npm install
Environment Setup
Create .env.local:
# Database
DATABASE_URL=postgresql://localhost:5432/ovyxa
CLICKHOUSE_URL=http://localhost:8123
# API
API_SECRET=your-secret-key-here
SITE_URL=http://localhost:3000
# Email (optional for development)
SMTP_HOST=localhost
SMTP_PORT=1025
Start Development
# Start database containers
docker-compose up -d
# Run migrations
npm run migrate
# Start dev server
npm run dev
Visit http://localhost:3000
Coding Standards
Code Style
We use automated formatters and linters:
# Format code
npm run format
# Lint code
npm run lint
# Type check
npm run type-check
Formatting:
- Prettier for code formatting
- 2 spaces for indentation
- Single quotes for strings
- Semicolons required
Linting:
- ESLint for JavaScript/TypeScript
- Strict mode enabled
- No unused variables
- No console logs in production code
Commit Messages
Follow conventional commits:
# Format
<type>(<scope>): <subject>
# Examples
feat(dashboard): add date range picker
fix(api): resolve rate limiting bug
docs(readme): update installation steps
test(events): add integration tests
refactor(tracking): simplify event handling
Types:
feat- New featurefix- Bug fixdocs- Documentation onlytest- Adding or updating testsrefactor- Code change that neither fixes a bug nor adds a featureperf- Performance improvementchore- Maintenance tasks
Testing
All code changes must include tests:
Unit tests:
npm run test
Integration tests:
npm run test:integration
E2E tests:
npm run test:e2e
Coverage:
- Aim for > 80% coverage
- All new features must have tests
- Bug fixes must have regression tests
Pull Request Process
Before Submitting
- Create an issue first (for features)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests
- Run linters and tests
- Update documentation
- Commit with conventional commits
Pull Request Template
## Description
Brief description of changes
## Motivation
Why is this change needed?
## Changes
- List of specific changes
- Another change
## Testing
How was this tested?
## Screenshots
[If applicable]
## Checklist
- [ ] Tests added/updated
- [ ] Documentation updated
- [ ] Linters pass
- [ ] No breaking changes (or documented)
Review Process
- Automated checks run (CI/CD)
- Code review by maintainers
- Requested changes (if any)
- Approval from at least one maintainer
- Merge to main branch
After Merge
- Your changes appear in next release
- Credited in release notes
- Added to contributors list
Code of Conduct
Our Standards
Be respectful:
- Welcome newcomers
- Accept constructive criticism
- Focus on what's best for the community
- Show empathy
Be professional:
- Use welcoming and inclusive language
- Respect differing viewpoints
- Give and receive feedback gracefully
- Accept responsibility for mistakes
Unacceptable Behavior
- Harassment or discrimination
- Trolling or insulting comments
- Personal or political attacks
- Publishing others' private information
- Other conduct inappropriate in a professional setting
Enforcement
Violations may result in:
- Warning
- Temporary ban
- Permanent ban
Report violations to: conduct@ovyxa.com
Community Channels
GitHub:
- Issues - Bug reports and feature requests
- Discussions - General questions and ideas
- Pull Requests - Code contributions
Discord:
- Join our Discord server
- #general - General chat
- #development - Development discussion
- #help - Get help from community
Email:
- General: hello@ovyxa.com
- Security: security@ovyxa.com
- Code of Conduct: conduct@ovyxa.com
Recognition
Contributors are recognized through:
- GitHub contributors page
- Release notes credits
- Annual contributor spotlight
- Swag for significant contributions (t-shirts, stickers)
Hall of Fame
Top contributors featured on our website:
- Most commits
- Most issues resolved
- Most helpful in community
- Best documentation contributions
License
By contributing, you agree that your contributions will be licensed under the same license as the project (AGPL-3.0 or BSL, depending on the component).
Getting Help
Need help contributing?
- Check development docs
- Ask in Discord #development
- Open a discussion on GitHub
- Email dev@ovyxa.com
First-Time Contributors
New to open source? We're here to help!
Good first issues:
- Look for
good first issuelabel - These are beginner-friendly tasks
- Maintainers will guide you through the process
Resources:
Thank you for contributing to Ovyxa!