Skip to content

Resolver-TNG/gitea-issuehound

Repository files navigation

πŸ• Gitea IssueHound

Sniff out issue dependencies β€” Interactive dependency graph visualizer for Gitea

Implements Gitea Feature Request #20838 β€” Issue dependency graph as an external tool

πŸ“– ζ—₯本θͺž | δΈ­ζ–‡ | ν•œκ΅­μ–΄


Why IssueHound?

Gitea lets you set dependencies between issues, but there's no way to see the big picture.

IssueHound turns dependency data into an interactive graph:

  • πŸ”΄ Find bottlenecks β€” High-dependency nodes glow red
  • πŸ”— Trace chains β€” See what blocks what at a glance
  • 🏝️ Spot orphans β€” Unconnected issues separated automatically
  • 🏒 Org-wide view β€” Cross-repository dependency map

Features

Feature Description
πŸ“Š Dependency graph D3.js force-directed + DAG hierarchical layout
πŸ” Filters ALL / OPEN / CLOSED state toggle
🏒 Cross-repo Visualize dependencies across all org repositories
πŸ“‹ Detail panel Click a node to preview body, labels, assignees
πŸ”΄ Priority coloring Nodes colored by inbound dependency count
🏝️ Orphan separation Unconnected issues aligned on the right
⌨️ Keyboard shortcuts R, F, 1-3, Q/W, Esc
🌐 8 languages EN, JA, ZH, KO, DE, FR, ES, RU
πŸ”’ Security CSP, rate limiting, token protection
🐳 Docker One-command setup

Quick Start

Docker (recommended)

git clone https://github.com/Resolver-TNG/gitea-issuehound.git
cd gitea-issuehound
cp .env.example .env
# Edit .env β€” set GITEA_URL and GITEA_TOKEN
docker compose up -d

Open http://localhost:3100

Node.js

npm install
GITEA_URL=http://your-gitea:3000 GITEA_TOKEN=your_token node server.js

Environment Variables

Variable Required Default Description
GITEA_URL βœ… β€” Gitea instance URL
GITEA_TOKEN βœ… β€” API token (⚠️ read-only recommended)
PORT β€” 3100 Server port
CACHE_TTL β€” 300 Cache TTL in seconds
ADMIN_TOKEN β€” β€” Auth token for cache clear API

Screenshots

DAG Layout DAG hierarchical layout β€” 10 issues, 5-layer dependency chain from Database β†’ Release


Keyboard Shortcuts

Key Action
R Refresh data (bypass cache)
F Fit graph to view
1 / 2 / 3 Filter: ALL / OPEN / CLOSED
Q / W Layout: Force / DAG
Esc Close detail panel

API

Method Path Description
GET /api/health Health check
GET /api/repos Repository list
GET /api/repos/:owner/:repo/graph Dependency graph
GET /api/orgs/:org/graph Org-wide dependency graph
DELETE /api/cache Clear cache (ADMIN_TOKEN auth)

Query params: ?state=open|closed|all ?refresh=true


Tech Stack

Layer Technology
Backend Node.js 22+ / Express 5
Graph D3.js v7 + dagre
Frontend Vanilla ES Modules
Container Docker (node:22-alpine)
Design Industrial HUD Design System

Requirements

  • Gitea 1.20+ (dependency API support)
  • Node.js 22+ or Docker

Development

npm install
GITEA_URL=http://your-gitea:3000 GITEA_TOKEN=your_token node server.js

# Docker dev mode (live reload via volume mount)
docker compose -f docker-compose.dev.yml up -d

# Deploy to NAS
./deploy.sh           # sync only (instant)
./deploy.sh --rebuild # rebuild image

Security

See SECURITY.md. GITEA_TOKEN should have read-only permissions only.


License

MIT β€” Resolver-TNG


Built by 404-squad 🦊

About

πŸ• Sniff out issue dependencies β€” Interactive dependency graph for Gitea

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors