Skip to content

chdeskur/github-issues

Repository files navigation

GitHub Issues Triage

A Next.js app that lets you browse open issues for any public GitHub repository and triage them using Devin — scoping work and actioning fixes via PR.

Features

  • Repo input — enter owner/repo or a full GitHub URL to load open issues
  • 2-step Devin triage pipeline per issue:
    1. Scope — analyze the issue, create an implementation plan, and estimate complexity and confidence
    2. Implement — Devin creates a branch, implements the fix, and opens a PR
  • Dark / light mode with system default and manual toggle
  • Rate limiting — 5 Devin API calls per minute (client + server enforced)
  • Graceful error handling for private repos, 404s, and GitHub rate limits
  • Persisted state — selected repo and triage progress saved to localStorage

Getting Started

Prerequisites

Setup

npm install

Credentials

You must provide your own Devin API credentials to run this app.

Copy the template and fill in your values:

cp .env.template .env.local

Then edit .env.local with your actual credentials:

DEVIN_API_KEY=your_devin_api_key_here
DEVIN_ORG_ID=your_devin_org_id_here

You can find these in your Devin dashboard. The API key is kept server-side via the /api/devin proxy route and is never exposed to the client.

Run

npm run dev

Open http://localhost:3000.

Architecture

src/
├── app/
│   ├── layout.tsx            # Root layout with ThemeProvider
│   ├── page.tsx              # Main dashboard
│   ├── globals.css           # Tailwind + dark mode config
│   └── api/devin/route.ts    # Server-side Devin API proxy
├── components/
│   ├── ThemeProvider.tsx      # next-themes wrapper
│   ├── ThemeToggle.tsx        # Dark/light toggle
│   ├── RepoInput.tsx          # Repo URL input + validation
│   ├── IssueList.tsx          # Issue list with pagination
│   ├── IssueCard.tsx          # Expandable issue card
│   ├── DevinPipeline.tsx      # 2-step triage orchestrator
│   └── DevinStepCard.tsx      # Individual pipeline step UI
├── hooks/
│   └── usePersistedRepo.ts    # Persists selected repo to localStorage
├── lib/
│   ├── github.ts              # Unauthenticated GitHub API client
│   ├── devin.ts               # Client-side Devin API calls
│   ├── rate-limiter.ts        # Token bucket rate limiter (5/min)
│   ├── styles.ts              # Tailwind class utilities
│   └── prompts.ts             # Devin step prompts & structured output schemas
└── types/
    └── index.ts               # Shared TypeScript types

Tech Stack

Notes

  • The GitHub API is used unauthenticated (60 requests/hour). A clear error is shown if rate limited.
  • Devin sessions are polled every 5 seconds until they reach a terminal status.
  • Only public repositories are supported.

About

Triage GitHub Issues with Devin

Resources

Stars

Watchers

Forks

Contributors