areibman / areibman/bottleneck
Feature: Unified dashboard for all active PRs/issues/branches across repositories
- Dominant language
- TypeScript
- Stars
- 156
- Forks
- 21
- PR merge metrics
- No merged PRs in 30d
Description
## Feature Request
Create a unified dashboard that provides a comprehensive view of all active work items (PRs, issues, branches) across all repositories, offering a better alternative to GitHub's notifications page.
## Description
A centralized dashboard that aggregates and displays all your open pull requests, active issues, and working branches across multiple repositories in a clean, organized interface. This solves the problem of having to navigate between multiple repos to track ongoing work.
## Core Features
### 1. Unified Work Items View
#### Display Categories
- **Pull Requests**
- Open PRs you authored
- PRs awaiting your review
- PRs where you're mentioned
- Draft PRs in progress
- PR approval status
- CI/CD check status
- **Issues**
- Issues assigned to you
- Issues you created
- Issues you're mentioned in
- Issues you're watching
- Issue labels and milestones
- **Branches**
- Your active branches
- Recently pushed branches
- Branches with uncommitted changes
- Stale branches (no activity >30 days)
- Branch protection status
### 2. Smart Organization
#### Grouping Options
```javascript
const groupingStrategies = {
byRepository: {
"org/repo-1": {
prs: [...],
issues: [...],
branches: [...]
},
"org/repo-2": {...}
},
byType: {
pullRequests: [...],
issues: [...],
branches: [...]
},
byPriority: {
urgent: [...],
high: [...],
medium: [...],
low: [...]
},
byStatus: {
needsAction: [...],
inProgress: [...],
blocked: [...],
readyToMerge: [...]
},
byDate: {
today: [...],
thisWeek: [...],
older: [...]
}
};
```
### 3. Rich Information Display
#### PR Card Information
```typescript
interface PRCard {
// Basic Info
title: string;
number: number;
repository: string;
author: User;
// Status
state: 'open' | 'draft' | 'ready';
checks: {
passed: number;
failed: number;
pending: number;
};
reviews: {
approved: number;
changesRequested: number;
pending: number;
};
// Metadata
createdAt: Date;
updatedAt: Date;
lastActivity: string; // "2 hours ago"
// Stats
additions: number;
deletions: number;
filesChanged: number;
comments: number;
// Actions
mergeable: boolean;
conflicts: boolean;
behindBase: number; // commits behind
}
```
### 4. Real-time Updates
#### Live Sync
- WebSocket connection for instant updates
- Polling fallback (configurable interval)
- Push notifications for important events
- Background sync when app regains focus
- Offline queue for actions
#### Update Indicators
- New activity badges
- Unread comment counts
- Status change animations
- Time since last update
- Auto-refresh countdown
### 5. Advanced Filtering & Search
#### Filter Options
```javascript
class WorkItemFilters {
constructor() {
this.filters = {
// Repository filters
repositories: ['specific-repos'],
organizations: ['specific-orgs'],
// Type filters
itemTypes: ['pr', 'issue', 'branch'],
// Status filters
prStatus: ['open', 'draft', 'approved'],
issueStatus: ['open', 'in-progress'],
checkStatus: ['passing', 'failing'],
// Assignment filters
assignee: ['me', 'team', 'specific-user'],
author: ['me', 'others'],
reviewer: ['pending-my-review'],
// Time filters
updatedWithin: '7d',
createdWithin: '30d',
stale: true,
// Label filters
labels: ['bug', 'feature', 'urgent'],
// Other
hasConflicts: false,
needsRebase: false,
readyToMerge: true
};
}
}
```
### 6. Quick Actions
#### Inline Actions
- Merge PR (with merge strategy selection)
- Approve/Request changes
- Close/Reopen issue
- Assign/Unassign
- Add/Remove labels
- Mark as draft/ready
- Rebase/Update branch
- View diff
- Open in browser
- Copy link
#### Bulk Operations
- Select multiple items
- Bulk close issues
- Bulk label assignment
- Mass notification management
- Archive old branches
### 7. UI/UX Design
#### Layout Modes
**Compact View**
```
┌─────────────────────────────────────────────┐
│ 🔵 PR #123 | repo-name | ✅ 3/3 checks │
│ Fix authentication bug │
│ @author | 2 approved | +45 -12 | 2h ago │
├─────────────────────────────────────────────┤
│ 🟡 PR #456 | other-repo | ⏳ 1/3 checks │
│ Add new feature │
│ @author | Changes requested | +120 -5 | 5h │
└─────────────────────────────────────────────┘
```
**Card View**
```
┌──────────────────┐ ┌──────────────────┐
│ PR #123 │ │ Issue #789 │
│ ✅ Ready │ │ 🐛 Bug │
│ │ │ │
│ 3 approvals │ │ High Priority │
│ All checks ✓ │ │ 2 comments │
│ │ │ │
│ [Merge] [View] │ │ [View] [Close] │
└──────────────────┘ └──────────────────┘
```
**List View**
- Traditional table format
- Sortable columns
- Inline expansion
- Keyboard navigation
### 8. Customization
#### User Preferences
```json
{
"dashboard": {
"defaultView": "compact",
"groupBy": "repository",
"sortBy": "updated",
"showClosed": false,
"autoRefresh": 30,
"theme": "auto",
"columns": [
"status",
"title",
"repository",
"checks",
"reviews",
"updated"
],
"quickFilters": [
"needs-my-review",
"my-prs",
"failing-checks"
],
"notifications": {
"desktop": true,
"sound": false,
"mentions": true,
"statusChanges": true
}
}
}
```
### 9. Analytics & Insights
#### Personal Metrics
- PR velocity (PRs merged/week)
- Average review time
- Issue resolution rate
- Code contribution trends
- Review participation
- Most active repositories
#### Team Metrics
- Team PR throughput
- Review bottlenecks
- Issue backlog trends
- Collaboration patterns
### 10. Integration Features
#### IDE Integration
- VS Code extension
- JetBrains plugin
- Vim/Neovim plugin
- Sublime Text package
#### Communication Tools
- Slack notifications
- Discord webhooks
- Email digests
- Microsoft Teams
#### Project Management
- Jira sync
- Linear integration
- Notion updates
- Trello cards
## Implementation Architecture
```javascript
class UnifiedDashboard {
constructor() {
this.dataSource = new GitHubDataAggregator();
this.cache = new WorkItemCache();
this.realtime = new WebSocketManager();
}
async loadDashboard() {
const items = await this.aggregateWorkItems();
const grouped = this.groupItems(items);
const filtered = this.applyFilters(grouped);
return this.enrichWithMetadata(filtered);
}
async aggregateWorkItems() {
const [prs, issues, branches] = await Promise.all([
this.fetchAllPRs(),
this.fetchAllIssues(),
this.fetchAllBranches()
]);
return this.mergeAndDeduplicate(prs, issues, branches);
}
}
```
## Benefits
- **Single Source of Truth**: All active work in one place
- **Time Saving**: No need to check multiple repos
- **Better Organization**: Smart grouping and filtering
- **Improved Workflow**: Quick actions without context switching
- **Team Visibility**: See what everyone is working on
- **Reduced Noise**: Better than GitHub notifications
- **Productivity Insights**: Track your work patterns
## Acceptance Criteria
- [ ] Dashboard loads all PRs across repositories
- [ ] Dashboard loads all assigned issues
- [ ] Dashboard shows active branches
- [ ] Real-time updates work
- [ ] Filtering system is functional
- [ ] Grouping options work correctly
- [ ] Quick actions execute properly
- [ ] Search functionality works
- [ ] Performance with 100+ items
- [ ] Responsive design for all screen sizes
- [ ] Keyboard navigation support
- [ ] Customization preferences persist
- [ ] Export functionality works
- [ ] Offline mode handles gracefully
- [ ] Integration with GitHub API is robust
## Mockup Reference
Similar to GitHub notifications but better:
- Cleaner interface
- More information density
- Better grouping
- Inline actions
- Custom filters
- Multiple view modes
- Cross-repository visibility
## Future Enhancements
- AI-powered prioritization
- Predictive issue/PR categorization
- Automated PR description generation
- Code review summaries
- Sprint/milestone tracking
- Time tracking integration
- Custom workflows
- Mobile app
🤖 Generated with [Claude Code](https://claude.ai/code)
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reviewing the UnifiedDashboard entry point and its aggregateWorkItems flow, including GitHubDataAggregator, WorkItemCache, and WebSocketManager. Define a smaller implementation boundary from the listed acceptance criteria, then verify the selected dashboard behavior against the relevant loading, filtering, and update requirements.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, github, typescript
- Domain
- api, desktop, frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 18/100