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.
- Repo input — enter
owner/repoor a full GitHub URL to load open issues - 2-step Devin triage pipeline per issue:
- Scope — analyze the issue, create an implementation plan, and estimate complexity and confidence
- 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
- Node.js 18+
- A Devin API key and org ID
npm installYou must provide your own Devin API credentials to run this app.
Copy the template and fill in your values:
cp .env.template .env.localThen 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.
npm run devOpen http://localhost:3000.
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
- Next.js 16 (App Router)
- Tailwind CSS 4
- next-themes
- Lucide React
- Devin API
- 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.