Skip to content

Contributing Guide

This document describes how to contribute to the DuraGraph project.


  1. Clone the repo:

    Terminal window
    git clone https://github.com/Duragraph/duragraph.git
    cd duragraph
  2. Install dependencies:

    • Go: go mod tidy
    • Task: Install Task runner
  3. Run services locally:

    Terminal window
    task up

Common task commands are provided:

  • task build:server – build Go server binary
  • task test – run all tests
  • task lint:go – run linting
  • task up – start local environment via Docker Compose
  • task down – stop local environment
  • task health – check health of all services

We use Conventional Commits:

  • feat: for new features
  • fix: for bug fixes
  • docs: for documentation changes
  • chore: for maintenance
  • test: for adding tests

Example:

feat(api): add SSE streaming endpoint

  • Go: enforced via gofmt, goimports, and golangci-lint in CI.
  • Python: linted with ruff, type-checked with mypy, formatted with black.
  • TypeScript: linted with eslint, formatted with prettier.

Consistency is enforced with pre-commit hooks.


  • All new features must include corresponding unit tests.
  • Conformance tests must pass before merging.
  • Integration tests validate API ↔ Database ↔ Event streaming.

Run full Go tests:

Terminal window
task test

Run unit tests only:

Terminal window
task test:unit

To run conformance tests across adapters:

Terminal window
make conformance

These verify that both Go and Python workers conform to the activity contract.