Skip to main content

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:

  1. Fork the docs repository
  2. Edit the markdown files in /docs
  3. 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 bug or good 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:

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 feature
  • fix - Bug fix
  • docs - Documentation only
  • test - Adding or updating tests
  • refactor - Code change that neither fixes a bug nor adds a feature
  • perf - Performance improvement
  • chore - 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

  1. Create an issue first (for features)
  2. Fork the repository
  3. Create a feature branch (git checkout -b feature/amazing-feature)
  4. Make your changes
  5. Add tests
  6. Run linters and tests
  7. Update documentation
  8. 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

  1. Automated checks run (CI/CD)
  2. Code review by maintainers
  3. Requested changes (if any)
  4. Approval from at least one maintainer
  5. 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:

Discord:

  • Join our Discord server
  • #general - General chat
  • #development - Development discussion
  • #help - Get help from community

Email:

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?

First-Time Contributors

New to open source? We're here to help!

Good first issues:

  • Look for good first issue label
  • These are beginner-friendly tasks
  • Maintainers will guide you through the process

Resources:

Thank you for contributing to Ovyxa!