|
1 | | -# GitHub Issues Viewer |
| 1 | +# GitHub Issues Tracker |
2 | 2 |
|
3 | | -A simple web app to view GitHub issues and pull requests across multiple repositories in a unified dashboard. |
| 3 | +A simple, privacy-focused web app to view GitHub issues and pull requests across multiple repositories in a unified dashboard. **100% client-side** - no server, no data collection, no tracking. |
4 | 4 |
|
5 | 5 | ## Features |
6 | 6 |
|
7 | | -- 🔍 View issues and PRs from multiple repositories |
8 | | -- 🏊 Swimlane layout with one section per repository or by type |
9 | | -- 🐛 Automatic bug/feature/task classification |
10 | | -- 📋 Collapsible repository sections |
11 | | -- 💬 View issue details with comments inline |
12 | | -- 🔀 PRs open directly on GitHub for detailed review |
13 | | -- 🎯 Milestone support |
14 | | -- 🌐 Query string support for dynamic repo lists |
15 | | -- ⚡ **15-minute cache** to reduce GitHub API calls and stay within rate limits |
| 7 | +### Views & Organization |
| 8 | +- 🏊 **Two view modes**: By Repository (swimlane per repo) or By Type (swimlanes for PRs, bugs, features, tasks) |
| 9 | +- 📋 Collapsible sections for better navigation |
| 10 | +- 🔍 View issues and PRs from multiple repositories simultaneously |
| 11 | +- 📅 **Issue dates displayed**: Created and last updated dates on each card |
| 12 | +- 🎨 **Color-coded counts**: |
| 13 | + - Bugs: Red when present (>0), green when none (=0) |
| 14 | + - PRs: Purple when present (>0) |
| 15 | + |
| 16 | +### Issue Management |
| 17 | +- 🐛 **Automatic classification**: Bugs, features, tasks based on types and labels |
| 18 | +- 🎯 Milestone support with progress tracking |
| 19 | +- 💬 **Inline issue details**: View full issue body and comments without leaving the page |
| 20 | +- 🔀 PRs open directly on GitHub for detailed code review |
| 21 | +- 🔗 **Sorted by type**: Issues organized by bug/feature/task priority |
| 22 | + |
| 23 | +### Performance & Caching |
| 24 | +- ⚡ **1-hour intelligent cache** to reduce API calls and stay within rate limits |
| 25 | +- 📊 **Cache status panel**: Collapsible view showing cache age and expiration per repository |
| 26 | +- 🔄 **Force refresh option**: Bypass cache when you need fresh data |
| 27 | +- 🗑️ **Manual cache control**: Clear cache button for complete reset |
| 28 | + |
| 29 | +### Integration |
| 30 | +- 🌐 **Query string support**: Share URLs with pre-configured repository lists |
| 31 | +- 🔗 **Deep linking**: Direct access to specific repository combinations |
| 32 | +- 📱 **Responsive design**: Works on desktop and mobile devices |
16 | 33 |
|
17 | 34 | ## Usage |
18 | 35 |
|
19 | | -Visit the [live demo](https://hodpub.github.io/issues-viewer/) or open `index.html` locally. |
| 36 | +### Quick Start |
| 37 | + |
| 38 | +Visit the [live demo](https://hodpub.github.io/github-issues-tracker/) or open `index.html` locally in your browser. No installation or build process required! |
20 | 39 |
|
21 | 40 | ### Query String Parameters |
22 | 41 |
|
23 | | -You can specify repositories via URL: |
| 42 | +You can specify repositories via URL for easy sharing: |
24 | 43 | - `?repos=owner/repo1,owner/repo2` (comma-separated) |
25 | 44 | - `?repos=owner/repo1|owner/repo2` (pipe-separated) |
26 | 45 |
|
27 | | -Example: `https://hodpub.github.io/issues-viewer/?repos=facebook/react,microsoft/vscode` |
| 46 | +**Examples:** |
| 47 | +- Multiple repos: `https://hodpub.github.io/github-issues-tracker/?repos=hodpub/coriolis-tgd,hodpub/invincible,fvtt-fria-ligan/vaesen-foundry-vtt` |
| 48 | +- Single repo: `https://hodpub.github.io/github-issues-tracker/?repos=hodpub/invincible` |
| 49 | + |
| 50 | +The URL updates automatically when you load repositories, making it easy to bookmark or share specific configurations. |
| 51 | + |
| 52 | +### View Modes |
| 53 | + |
| 54 | +**By Repository** (`index.html`): Each repository gets its own swimlane showing all its issues and PRs together. |
| 55 | + |
| 56 | +**By Type** (`by-type.html`): Issues and PRs are grouped across all repositories by type (PRs, Bugs, Features, Tasks, Other). |
28 | 57 |
|
29 | 58 | ### GitHub Token |
30 | 59 |
|
31 | | -For higher rate limits (5000 requests/hour instead of 60), provide a GitHub Personal Access Token with: |
| 60 | +For higher rate limits (5000 requests/hour instead of 60) or to see issues from private repositories, provide a GitHub Personal Access Token with: |
32 | 61 | - `public_repo` scope for public repositories |
33 | 62 | - `repo` scope for private repositories |
34 | 63 |
|
| 64 | +**🔒 Privacy Note**: Your token is stored only in your browser's localStorage and never sent to any server. All API calls go directly from your browser to GitHub. |
| 65 | + |
| 66 | +## Privacy & Security |
| 67 | + |
| 68 | +**This app is 100% client-side** - there is no backend server: |
| 69 | +- ✅ **No data collection**: We don't collect, store, or transmit any of your data |
| 70 | +- ✅ **No tracking**: No analytics, no cookies, no third-party scripts |
| 71 | +- ✅ **Local storage only**: Your GitHub token and cached data stay in your browser's localStorage |
| 72 | +- ✅ **Direct API calls**: All requests go directly from your browser to GitHub's API |
| 73 | +- ✅ **Open source**: Full source code available for inspection |
| 74 | +- ✅ **No accounts**: No sign-up, no login, no personal information required |
| 75 | + |
| 76 | +Your privacy is protected because the app runs entirely in your browser. When you close the tab, nothing persists except the localStorage cache (which you can clear at any time). |
| 77 | + |
35 | 78 | ### Caching |
36 | 79 |
|
37 | | -The app automatically caches repository data for **15 minutes** in your browser's localStorage to: |
| 80 | +The app automatically caches repository data for **1 hour** in your browser's localStorage to: |
38 | 81 | - Reduce GitHub API calls |
39 | 82 | - Stay within rate limits (60 requests/hour without token, 5000 with token) |
40 | 83 | - Speed up repeated page loads |
| 84 | +- Work offline with recently loaded data |
41 | 85 |
|
42 | 86 | **Cache Controls:** |
43 | 87 | - **Force refresh** checkbox: Ignore cache and fetch fresh data |
44 | 88 | - **Clear Cache** button: Manually clear all cached data |
45 | | -- Cache status shows how many repositories are cached |
| 89 | +- **Cache status panel**: Shows per-repository cache age and expiration time (click to expand/collapse) |
| 90 | + |
| 91 | +## Technical Details |
| 92 | + |
| 93 | +- **Pure vanilla JavaScript** - No frameworks, no dependencies, no build step |
| 94 | +- **Modern ES6 modules** - Clean, maintainable code structure |
| 95 | +- **Responsive CSS** - Mobile-friendly design with flexbox |
| 96 | +- **localStorage API** - Client-side caching for performance |
| 97 | +- **GitHub REST API v3** - Direct integration with GitHub |
| 98 | +- **Markdown rendering** - Preserves HTML in issue bodies and comments |
| 99 | + |
| 100 | +## Browser Compatibility |
| 101 | + |
| 102 | +Works in all modern browsers that support: |
| 103 | +- ES6 modules |
| 104 | +- localStorage |
| 105 | +- Fetch API |
| 106 | +- CSS Flexbox |
46 | 107 |
|
47 | | -## Deploy to GitHub Pages |
| 108 | +## Contributing |
48 | 109 |
|
49 | | -1. Push this repository to GitHub |
50 | | -2. Go to Settings → Pages |
51 | | -3. Set source to "main" branch, root directory |
52 | | -4. Your site will be available at `https://hodpub.github.io/issues-viewer/` |
| 110 | +Issues and pull requests are welcome! This is an open-source project maintained for the community. |
53 | 111 |
|
54 | 112 | ## License |
55 | 113 |
|
56 | | -MIT |
| 114 | +MIT - Feel free to use, modify, and distribute as you wish. |
0 commit comments