一个现代化的 GitHub Star 管理工具,帮助你高效管理和组织收藏的仓库。支持智能分析、标签管理、增量同步,提供 Web UI、CLI 和 REST API 三种使用方式。
Star Manager 采用前后端分离的现代化架构,由三个核心模块组成:
┌─────────────────────────────────────────────────────────┐
│ Star Manager │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ Web UI │ │ CLI │ │ REST API │ │
│ │ (React) │ │(Commander)│ │ (Express) │ │
│ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ │
│ │ │ │ │
│ └──────────────────┼────────────────────┘ │
│ │ │
│ ┌──────▼──────┐ │
│ │ Core Layer │ │
│ │ (Business) │ │
│ └──────┬──────┘ │
│ │ │
│ ┌──────▼──────┐ │
│ │ Database │ │
│ │ (Prisma) │ │
│ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
前端 (packages/web)
后端 (packages/api)
命令行 (packages/cli)
核心逻辑 (packages/core)
部署方案
开发环境(前后端分离)
浏览器 (localhost:3800)
│
↓
Vite Dev Server (3800) ─── 代理 ───→ Express API (3801)
│ │
└────── 热重载 ──────┘ │
↓
Database
生产环境(Docker 单镜像)
浏览器 (localhost:3800)
│
↓
nginx (3800) ─── 静态文件
│
└─── /api/* ───→ Express API (3801)
│
↓
Database
最快的方式,适合生产环境或快速体验。
我们提供两个镜像源,任选其一:
# 从 Docker Hub 拉取(国内推荐)
docker pull huby11111/star-man:latest
# 或从 GitHub Container Registry 拉取
docker pull ghcr.io/2ue/star-man:latest
📦 镜像仓库:
创建 .env 文件:
GITHUB_TOKEN=ghp_your_github_token_here
DATABASE_URL=file:/app/data/star-man.db
API_PORT=3801
API_HOST=0.0.0.0
💡 获取 GitHub Token:
- 访问 GitHub Settings → Personal Access Tokens
- 创建新 token,至少需要
public_repo权限- 复制 token 到
.env文件
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
docker run -d \
--name star-man \
-p 3800:3800 \
--env-file .env \
-v $(pwd)/data:/app/data \
huby11111/star-man:latest
容器启动后(需 10-30 秒初始化),访问:
适合开发者进行二次开发或调试。
# 克隆项目
git clone https://github.com/2ue/star-man.git
cd star-man
# 运行初始化脚本
pnpm setup
初始化脚本会自动:
.env 配置文件(需手动填入 GitHub Token)编辑 .env 文件,填入你的 GitHub Token:
GITHUB_TOKEN=ghp_your_github_token_here
DATABASE_URL=./data/star-man.db
API_PORT=3801
API_HOST=localhost
pnpm dev
这会同时启动:
单独启动:
pnpm dev:web # 只启动前端
pnpm dev:api # 只启动后端
pnpm dev:cli # 只启动 CLI 监听模式
# 增量同步(推荐)
pnpm cli sync
# 完整同步
pnpm cli sync --full
# 基本统计
pnpm cli stats
# 详细统计(包含分类、语言分布)
pnpm cli stats --detailed
# 列出前 20 个仓库
pnpm cli list
# 搜索仓库
pnpm cli list --search "react"
# 按语言筛选
pnpm cli list --language "TypeScript"
# 按分类筛选
pnpm cli list --category "Frontend"
pnpm cli --help
启动服务后访问 Swagger UI:
仓库相关
GET /api/repos - 获取仓库列表(支持分页、筛选、搜索)GET /api/repos/search?q=keyword - 搜索仓库统计相关
GET /api/stats - 获取统计概览GET /api/stats/categories - 获取分类统计GET /api/stats/languages - 获取语言统计同步相关
POST /api/sync - 触发同步GET /api/sync/status - 获取同步状态示例:
# 获取仓库列表
curl "http://localhost:3800/api/repos?limit=10"
# 搜索 React 相关仓库
curl "http://localhost:3800/api/repos/search?q=react"
# 触发增量同步
curl -X POST "http://localhost:3800/api/sync" \
-H "Content-Type: application/json" \
-d '{"incremental": true}'
star-man/
├── packages/
│ ├── web/ # Web 前端
│ │ ├── src/
│ │ │ ├── components/ # React 组件
│ │ │ ├── routes/ # 路由页面
│ │ │ └── lib/ # 工具函数
│ │ └── vite.config.ts # Vite 配置
│ │
│ ├── api/ # REST API 服务
│ │ └── src/
│ │ ├── server.ts # Express 服务器
│ │ └── routes/ # API 路由
│ │
│ ├── cli/ # 命令行工具
│ │ └── src/
│ │ ├── bin.ts # CLI 入口
│ │ └── commands/ # 命令实现
│ │
│ └── core/ # 核心业务逻辑
│ ├── src/
│ │ ├── star-manager.ts # 主管理类
│ │ ├── github.ts # GitHub API 封装
│ │ ├── analyzer.ts # 仓库智能分析
│ │ └── database.ts # 数据库操作
│ └── prisma/
│ └── schema.prisma # 数据库 Schema
│
├── .github/workflows/ # GitHub Actions
├── Dockerfile # 生产镜像构建
├── docker-compose.yml # Docker Compose 配置
├── nginx.conf # nginx 配置
└── README.md # 本文档
| 变量 | 必需 | 说明 | 示例 |
|---|---|---|---|
GITHUB_TOKEN | ✅ | GitHub Personal Access Token | ghp_xxxx |
DATABASE_URL | ✅ | 数据库连接字符串 | ./data/star-man.db |
API_PORT | ❌ | API 服务端口 | 3801 |
API_HOST | ❌ | API 监听地址 | 0.0.0.0 |
SQLite(默认,推荐)
# 相对路径(推荐)
DATABASE_URL=./data/star-man.db
# file: 协议
DATABASE_URL=file:./data/star-man.db
MySQL
DATABASE_URL=mysql://user:password@localhost:3306/star_man
packages/core/src/ 实现packages/api/src/routes/ 添加路由packages/cli/src/commands/ 添加命令packages/web/src/routes/ 添加路由# 修改 schema 后生成 Prisma Client
pnpm --filter @star-man/core db:generate
# 推送数据库变更(开发环境)
pnpm --filter @star-man/core db:push
# 创建迁移文件(生产环境)
pnpm --filter @star-man/core db:migrate
# 构建所有包
pnpm build
# 运行测试
pnpm test
# 代码检查
pnpm lint
# 构建镜像
docker build -t star-man:latest .
# 运行本地镜像
docker-compose -f docker-compose.local.yml up -d
容器无法启动
# 查看日志
docker-compose logs star-man
# 检查健康状态
docker inspect star-man | grep Health
数据库问题
./data 目录有写权限DATABASE_URL 配置是否正确GitHub API 限制
public_repo 权限端口冲突
.env 中的端口配置路径问题
DEBUG=1 pnpm cli syncservices:
star-man:
image: huby11111/star-man:latest
container_name: star-man
restart: unless-stopped
ports:
- "3800:3800"
environment:
GITHUB_TOKEN: ${GITHUB_TOKEN}
DATABASE_URL: file:/app/data/star-man.db
volumes:
- ./data:/app/data
国内用户推荐使用 Docker Hub:
docker pull huby11111/star-man:latest
国外用户或需要最新版本:
docker pull ghcr.io/2ue/star-man:latest
isStarred: false,不删除自动分析每个仓库:
MIT License - 详见 LICENSE 文件
欢迎提交 Issue 和 Pull Request!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)查看 Releases 获取完整更新历史。
Made with ❤️ by 2ue
Content type
Image
Digest
sha256:b8c3808fc…
Size
160.6 MB
Last updated
10 months ago
docker pull huby11111/star-man