English | 简体中文
All-in-one management for your GitHub Stars, Pull Requests, Issues & Release subscriptions
Local Tags & Notes · Lists Sync · AI Analysis · Full Privacy Protection
Live Demo · Features · Quick Start · Configuration · FAQ
|
Card/List dual views · Language filter · Multi-sort Virtual scrolling for massive repos · Batch operations |
Custom colored tags · Personal notes Data stored in browser, fully private |
|
Seamless sync with GitHub native Lists Organize by topic/purpose flexibly |
Timeline view of version updates Never miss important releases |
|
Centralized view of all your PR/Issues Status filter · Full-text search |
Auto-categorization · Tag recommendations Project summaries · Semantic search |
|
Dashboard - Overview & Quick Access |
Stars Management - Card View & Local Tags |
|
AI Analysis - Smart Categorization & Tags |
Dark Mode - Eye-friendly Theme |
Zero config, ready to use — GitHub Token and AI Key are configured by users in the frontend UI, stored in browser localStorage.
# Install dependencies
pnpm install
# Frontend dev mode
pnpm dev
# → http://localhost:8081
# API server (Express)
pnpm dev:server
# → http://localhost:3001
# Full stack (frontend + API)
pnpm dev:fullVite proxies /api/* to http://localhost:3001 in development.
# Build frontend and API server
pnpm build
pnpm build:server
# Run API server
pnpm start:server
# Preview frontend build
pnpm previewGo to GitHub Settings → Tokens to create a Personal Access Token:
| Permission | Purpose |
|---|---|
read:user |
Read user profile |
repo |
Access repos, Stars, GitHub Lists |
Privacy: Token is stored only in browser
localStorage. API requests go directly from browser to GitHub.
Configure in app Settings → AI Service:
| Field | Description |
|---|---|
| Base URL | OpenAI-compatible endpoint, e.g., https://api.openai.com/v1 |
| API Key | Provider's secret key |
| Model | Model name, e.g., gpt-4o |
Supports OpenAI, Azure OpenAI, and any OpenAI-compatible API providers.
| Variable | Default | Description |
|---|---|---|
PORT |
3001 |
Express API server port |
ALLOWED_ORIGINS |
empty | Comma-separated CORS allowlist for cross-origin API calls |
VITE_USE_GRAPHQL |
true |
Set to false to force REST-only mode instead of GraphQL-first + fallback |
Note: Same-origin requests are always allowed. If
ALLOWED_ORIGINSis empty, cross-origin is allowed only in non-production environments.
- Active app icons:
public/pwa-512x512.png,public/pwa-192x192.png,public/apple-touch-icon.png,public/favicon.ico - Shortcut/badge icons:
public/shortcut-stars.png,public/shortcut-dashboard.png,public/badge-72x72.png - Source image used for current icon set:
public/icon-source.png
Install error: ENOTFOUND registry.npmmirror.com
Switch to official registry:
pnpm config set registry https://registry.npmjs.org/404 on sub-routes after deployment
Configure SPA fallback rules to redirect unmatched routes to index.html. Already configured in vercel.json for Vercel.
How to clear local data
Option 1: In-app Settings → Clear Data Option 2: Browser DevTools → Application → Local Storage → Delete domain data
Uses a frontend + same-origin API proxy model:
- GitHub Token / AI Key stored only in browser localStorage
- GitHub API requests are sent from frontend with user token
- AI requests go through same-origin
/api/*stateless proxy (Express/Vercel Function) - API does not persist provider API keys
- Supports
ALLOWED_ORIGINSfor cross-origin API restrictions
Use minimal permission tokens and only in trusted environments. For enterprise-grade security, consider evolving to BFF architecture.
| Frontend | Backend | Tooling |
|---|---|---|
| React 18 · TypeScript 5 | Express 5 · Vercel Functions | Vitest · ESLint · Prettier |
| Vite 5 · Tailwind CSS 3 | GitHub GraphQL API | pnpm · PWA |
| shadcn/ui · Radix UI | OpenAI-compatible API | React Query |
MIT © 2026 thornboo