Contributions to Bedrud are welcome. This guide covers the process for submitting changes.

Note: The canonical contributing guide is at the repository root: CONTRIBUTING.md. This page is archived for reference only.

Getting Started

  1. Fork the repository
  2. Clone your fork
  3. Create a feature branch from main
  4. Make your changes
  5. Submit a pull request

Prerequisites

  • Go 1.22+
  • Bun (for web frontend)
  • Rust (for desktop app)
  • Make
  • Git

Development Setup

# After forking on GitHub, clone your fork
git clone https://github.com/<your-username>/bedrud.git
cd bedrud
make init
make dev

See the Development Workflow for detailed setup instructions.

Project Structure

DirectoryLanguageDescription
server/GoBackend API and embedded LiveKit
apps/web/TypeScript/ReactWeb frontend
apps/desktop/Rust + SlintDesktop app
apps/android/KotlinAndroid app
apps/ios/SwiftiOS app
agents/PythonBot agents
packages/TypeScriptShared type definitions
tools/cli/PythonDeployment CLI
docs/MarkdownDocumentation

Code Style

LanguageStandard
Gogofmt
TypeScript/ReactBiome
KotlinAndroid Studio defaults
SwiftXcode defaults
Pythonruff

Pull Request Process

  1. Branch naming: feature/description, fix/description, or docs/description
  2. Commit messages: <action> <what> for <why> (e.g., add user model for auth feature, fix login redirect for expired sessions)
  3. CI checks: All GitHub Actions checks must pass
  4. Description: Include what changed and why

CI Checks

Every PR runs these checks automatically:

CheckWhat it validates
Servergo vet, build, tests
WebTypeScript type check, build
AndroidLint, unit tests
iOSBuild, test (simulator)

Reporting Issues

File issues on GitHub Issues with:

  • Steps to reproduce
  • Expected vs actual behavior
  • Environment details (OS, browser, app version)

Documentation

Documentation lives in docs/ and is built with MkDocs Material.

Local Preview

pip install mkdocs-material
mkdocs serve

Then open http://localhost:8000 in your browser.

Structure

Documentation pages are organized by topic. The navigation is defined in mkdocs.yml at the project root.

License

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