Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/ geekhub Public

Self-hosted RSS reader with AI summarization and translation, built with Next.js.

Notifications You must be signed in to change notification settings

nocoo/geekhub

Repository files navigation

📰 GeekHub

GeekHub Preview

现代化的自托管 RSS 聚合阅读器,支持 AI 摘要与翻译

Next.js React TypeScript Supabase Test Coverage


📖 目录


✨ 特性亮点

🏠 完全自托管 🤖 AI 增强 🎨 阅读体验 🚀 技术特性
数据完全本地化 BYOM 自定义模型 沉浸式阅读器 智能代理检测
隐私优先 智能摘要 深色/浅色主题 实时 SSE 更新
无厂商锁定 一键翻译 自定义字体 图片防盗链代理

👉 详细功能介绍请查看 功能文档


🚀 快速开始

前置要求

安装与运行

# 1. 克隆项目
git clone https://github.com/yourusername/geekhub.git
cd geekhub
# 2. 安装依赖
bun install
# 3. 配置环境变量(复制模板并填写)
cp .env.example .env.local
# 4. 启动开发服务器
bun run dev

访问 http://localhost:3000 开始使用 🎉

👉 完整部署指南请查看 部署文档


📁 项目结构

geekhub/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── api/ # API 路由(36 个端点)
│ │ └── ... # 页面路由
│ ├── components/ # React 组件
│ │ ├── ui/ # shadcn/ui 基础组件
│ │ └── manage/ # 管理对话框
│ ├── contexts/ # React Context(Auth, SSE, FeedFetch)
│ ├── hooks/ # 自定义 Hooks
│ ├── lib/ # 核心业务逻辑
│ ├── schemas/ # 数据库 Schema
│ └── types/ # TypeScript 类型定义
├── supabase/
│ └── migrations/ # 数据库迁移文件
├── docs/ # 项目文档
└── data/ # 本地数据存储(生产环境)

👉 详细架构说明请查看 架构文档


🤖 Agent 开发指南

本节专为 AI Agent(如 Claude、Cursor、GitHub Copilot)编写

核心命令

命令 说明
bun run dev 启动开发服务器(Turbopack)
bun run build 生产构建
bun test 运行测试
bun run lint ESLint 检查

开发规范

1️⃣ 测试要求

  • 覆盖率目标: 90%
  • 测试框架: Bun Test
  • 测试文件命名: *.test.ts / *.test.tsx
  • 新增代码必须编写对应单元测试
# 运行测试
bun test
# 运行单个测试文件
bun test src/lib/rss.test.ts

2️⃣ 提交规范

  • 原子化提交: 每个 commit 只包含一个逻辑完整的变更
  • Conventional Commits: <type>: <description>
    • feat: 新功能
    • fix: 修复
    • docs: 文档
    • test: 测试
    • refactor: 重构
    • chore: 杂项
# 正确示例
git commit -m "feat: add article translation cache"
git commit -m "fix: resolve SSE connection leak"
git commit -m "test: add feed-fetcher unit tests"

3️⃣ 文档要求

  • 代码变更必须更新相应文档
  • 新增 API 需在 API 文档 中记录
  • 架构变更需更新 架构文档

4️⃣ 代码风格

  • TypeScript strict 模式: 禁止 any@ts-ignore
  • 路径别名: 使用 @/ 前缀导入
  • 组件规范: 函数组件 + Hooks
// ✅ 正确
import { ArticleRepository } from '@/lib/article-repository'
// ❌ 错误
import { ArticleRepository } from '../../../lib/article-repository'

关键文件索引

功能 文件路径
RSS 解析 src/lib/rss.ts
文章仓库 src/lib/article-repository.ts
Feed 抓取 src/lib/feed-fetcher.ts
AI 翻译 src/lib/translation-queue.ts
代理设置 src/lib/settings.ts
认证上下文 src/contexts/AuthContext.tsx
SSE 上下文 src/contexts/SSEContext.tsx

环境变量

# Supabase 配置(必填)
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_KEY=your-service-role-key
# AI 配置(可选)
OPENAI_API_KEY=sk-xxx
OPENAI_API_BASE=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini

📚 完整文档

文档 说明
📐 架构设计 系统架构、技术栈、数据流
✨ 功能详解 核心功能介绍
💻 开发指南 本地开发、调试技巧
🧪 测试规范 测试策略、覆盖率要求
🔌 API 参考 API 端点文档
🗄️ 数据库设计 表结构、关系、RLS
🚀 部署指南 生产环境部署

📄 开源协议

MIT License


🙏 致谢


如果这个项目对你有帮助,请给它一个 ⭐️

Made with ❤️ by lizheng

About

Self-hosted RSS reader with AI summarization and translation, built with Next.js.

Resources

Stars

Watchers

Forks

Contributors 2

AltStyle によって変換されたページ (->オリジナル) /