Skip to content

Ranqia Workspace

A bridge between the ranqialabs GitHub organization and the ranqialabs Discord server. It runs as a single bot process that keeps the two in sync and turns GitHub activity into Discord notifications — mentioning the right people.

What it does today (Phase 1)

  • Access, mirrored

Map a repo to a channel and the bot creates an access role, filling it with everyone who can reach the repo on GitHub — team members, direct collaborators, and org owners alike. GitHub is the source of truth.

Commands

  • Access follows the repo

Each mapped channel is visible only to its repo's access role — derived automatically from GitHub, no manual permissions.

Commands

  • Live notifications

When a PR is opened, a review is requested, or an issue is opened, the bridge posts to the repo's channel and @mentions the person involved.

Events

  • No IDs, ever

Map repos and users with mentions and GitHub-backed autocomplete. You never copy a snowflake ID, so you can't misconfigure it.

Concepts

How it hangs together

flowchart LR
  subgraph gh [GitHub]
    GH["🐙 org · repos · collaborators"]
  end

  subgraph bot [bridge · one process]
    direction TB
    W["webhook listener"]
    N["notifications"]
    S["repo access sync"]
    CFG[("#bot-config")]
    W --> N
    N -.-> CFG
    S -.-> CFG
  end

  subgraph dc [Discord]
    DC["📣 channels · roles"]
    A(["👤 admin"])
  end

  GH -- "webhook: PR / issue" --> W
  N -- "post + @mention" --> DC
  A -- "/map · /sync roles" --> S
  S -- "read repo collaborators" --> GH
  S -- "create roles · sync members · gate channels" --> DC

The webhook listener and the Discord bot run in one process, one event loop — no cron, no separate web service, no polling. And the mappings live in a Discord channel, so there's no database and no disk to manage either.

Next steps