Skip to content

Contributing to XRXP

Thank you for your interest in contributing to XRXP! This document provides guidelines for contributing to the project.

Getting Started

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Create a new branch for your feature or bug fix
  4. Make your changes
  5. Submit a pull request

Development Setup

See the self-hosting guide for the current local stack and startup flow.

Code Style

TypeScript/JavaScript

  • Use const by default, let only when reassignment is needed
  • Use semicolons consistently
  • Follow existing indentation and nearby project style
  • Prefer explicit types over any
  • Use async/await instead of callbacks

Dashboard Conventions

  • The dashboard lives in apps/dashboard/
  • Prefer SvelteKit and TypeScript patterns already used in the repo
  • Use kebab-case for route and component filenames
  • Preserve the current UI and data-flow conventions

Backend Conventions

  • apps/api/ uses TypeScript with ES-style imports
  • apps/websocket-ingestion/ uses CommonJS JavaScript
  • Layered architecture: controllers → services → Prisma
  • Route params and body fields use camelCase
  • Early returns for validation
  • Winston logging for all operations

Testing

Dashboard

pnpm --filter @xrxp/dashboard test

Backend

pnpm --filter @xrxp/api test
pnpm --filter @xrxp/websocket-ingestion test:retro

Pull Request Process

  1. Update documentation for any new features
  2. Add tests for new functionality
  3. Ensure all tests pass
  4. Update the README.md if needed
  5. Request review from maintainers

Reporting Issues

When reporting bugs, please include:

  • Clear description of the issue
  • Steps to reproduce
  • Expected vs actual behavior
  • Environment details (OS, Node version, etc.)
  • Relevant logs or screenshots

Code of Conduct

This project adheres to a code of conduct. By participating, you are expected to uphold this code:

  • Be respectful and inclusive
  • Welcome newcomers
  • Focus on constructive feedback
  • Respect different viewpoints and experiences

Questions?

Feel free to open an issue for questions or join our discussions.

License

By contributing, you agree that your contributions will be licensed under the MIT License.