Skip to content
All projects

GitHub · Case study

Developer Automation Platform

Event-driven platform for repository management and developer automation, built on GitHub Apps, webhooks, and GraphQL.

Illustration of streams of events flowing into a central glowing node that routes work to smaller workers and a database.
Illustration1 / 5
Illustration. The other images are screenshots of real public pages.
Role
Senior Software Engineer: architecture, backend services, GitHub integrations, and frontend.
Company
GitHub

Overview

A platform for automating repository management and developer workflows. GitHub Apps and Actions integrations react to repository events, apply automation, and expose state through GraphQL and REST APIs with a React interface on top.

Problem

Repository management and routine developer workflows involve repetitive manual steps across many repositories. Automating them means reacting reliably to a high volume of platform events while staying inside API rate limits.

Architecture

Developer Automation Platform system designIngestGitHubProductStorageGitHub webhooksRepository eventsWebhook receiverNode.js · HMAC checkJob queueRetries with backoffRepositoriesLabels · checks · PRsGraphQL APIAutomation stateWorkersTypeScript · OctokitGitHub APIGraphQL · RESTReact interfaceTeam visibilityRelational DBPostgreSQL · MySQLRedisCache · rate limitsPOSTenqueuedequeueOctokitapplybudgetstatereadGraphQL
RequestAsync eventData read / writeMoving dots show which way data flows.
  1. GitHub webhooks → Webhook receiver: request, POST
  2. Webhook receiver → Job queue: async event, enqueue
  3. Job queue → Workers: async event, dequeue
  4. Workers → GitHub API: request, Octokit
  5. GitHub API → Repositories: request, apply
  6. Workers ↔ Redis: data read / write, budget
  7. Workers → Relational DB: data read / write, state
  8. GraphQL API → Relational DB: data read / write, read
  9. React interface → GraphQL API: request, GraphQL

What made it hard

  • Absorbing bursts of webhook events without dropping or duplicating work.
  • Staying within GitHub API rate limits across GraphQL and REST calls.
  • Authenticating GitHub Apps securely across installations.
  • Keeping automation consistent when downstream calls fail or time out.

Solution

Webhooks are verified and handed to asynchronous processing, where Node.js and TypeScript workers act on events through Octokit. Redis backs caching and rate-limit coordination, retries absorb transient failures, and PostgreSQL and MySQL hold durable state. A React interface backed by GraphQL gives teams visibility into automation.

Skills used

  • Node.js
  • TypeScript
  • Python
  • React
  • GraphQL
  • REST
  • Webhooks
  • Octokit
  • PostgreSQL
  • MySQL
  • Redis
  • GitHub Actions

Impact

  • Replaced repetitive repository-management steps with event-driven automation.
  • Decoupled event intake from processing so traffic spikes queue instead of failing.
  • Established reusable patterns for GitHub Apps and Actions integrations.

Decisions

  1. 01Acknowledge webhooks quickly and do the real work asynchronously.
  2. 02Make jobs idempotent so retries are always safe.
  3. 03Coordinate rate-limit budgets centrally in Redis rather than per worker.
  4. 04Use GraphQL for batched reads and REST where endpoints are simpler.