一个用于浏览 Hacker News 文章的现代化网页应用,具备强大的搜索和过滤功能,采用 Zen-iOS Hybrid 设计理念打造精美界面。
- 现代化UI:采用 Zen-iOS Hybrid 设计理念,提供高端视觉体验
- 实时数据:从 Hacker News API 获取最新文章
- 智能搜索:按关键词搜索文章标题和内容
- 类型过滤:按文章类型筛选(新闻、招聘、Ask HN、投票)
- AI 内容摘要:使用 OpenAI API 生成文章智能摘要
- 本地数据库:SQLite 数据库缓存文章和 AI 摘要
- 响应式布局:大屏幕下采用双栏布局
- 紧凑设计:优化间距的高密度信息显示
- 响应式适配:支持所有设备尺寸
- 高性能:优化的加载和渲染性能,支持缓存
- 前端:原生 JavaScript,支持现代 ES6+ 特性
- 后端:Node.js + Express.js
- 样式:Tailwind CSS
- 数据库:SQLite3
- 浏览器自动化:Puppeteer(用于提取 JavaScript 渲染的页面内容)
- DOM 操作:JSDOM
- HTTP 请求:node-fetch
- 设计风格:采用 Zen-iOS Hybrid 设计语言
- Node.js 18 或更高版本
- npm 包管理器
-
克隆项目仓库
git clone <your-repo-url> cd hacker-news-quick-read
-
安装依赖
npm install
-
配置环境变量
- 复制
.env.example文件为.env - 编辑
.env文件,添加你的 OpenAI API 密钥:OPENAI_API_KEY=your_openai_api_key_here OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_MODEL=gpt-3.5-turbo
⚠️ 安全提醒:.env文件不会被 Git 跟踪,保护你的 API 密钥安全 - 复制
-
启动应用
- 开发模式:
npm run dev(需要 nodemon) - 生产模式:
npm start或node server.js
- 开发模式:
-
打开浏览器访问
http://localhost:3000
应用支持以下环境变量:
OPENAI_API_KEY- OpenAI API 密钥(AI 摘要功能必需)OPENAI_BASE_URL- OpenAI 服务地址(默认:https://api.openai.com/v1)OPENAI_MODEL- OpenAI 模型(默认:gpt-3.5-turbo)PORT- 服务端口(默认:3000)
应用提供了以下后端 API 接口:
GET /api/articles- 获取缓存的文章列表- 参数:
limit(限制数量,默认100)、offset(偏移量)
- 参数:
GET /api/article/:id- 获取特定文章详情POST /api/article- 保存文章到数据库
POST /api/generate-summary- 生成文章 AI 摘要- 参数:
content(文章内容)、title(文章标题)
- 参数:
POST /api/ai-summary- 保存 AI 摘要到数据库- 参数:
articleId、summary、model
- 参数:
GET /api/ai-summary/:articleId- 获取特定文章的 AI 摘要
GET /api/render-url-content- 渲染并提取 URL 内容(使用 Puppeteer)- 参数:
url(目标 URL)
- 参数:
GET /api/url-content- 提取 URL 内容(使用 JSDOM)- 参数:
url(目标 URL)
- 参数:
本应用采用 Zen-iOS Hybrid 设计语言,具有以下特点:
- 玻璃态效果:使用 backdrop-filter 实现毛玻璃效果
- 双重边框:物理感的内外边框设计
- iOS 式圆角:遵循 iOS 设计规范的圆角
- 高对比度:深色模式启发的深空灰黑色调
- 触觉反馈:交互元素具有缩放反馈
- 呼吸空间:合理的内边距和留白提升可读性
应用已配置通过 GitHub Actions 部署到 GitHub Pages。
应用包含 Dockerfile,支持容器化部署:
# 构建镜像
docker build -t hacker-news-quick-read .
# 运行容器
docker run -p 3000:3000 -e OPENAI_API_KEY=your_openai_api_key_here hacker-news-quick-read支持一键部署到 Heroku,或手动部署:
heroku login
heroku create
git push heroku main
heroku open设置环境变量:
heroku config:set OPENAI_API_KEY=your_openai_api_key_here
heroku config:set OPENAI_BASE_URL=https://api.openai.com/v1
heroku config:set OPENAI_MODEL=gpt-3.5-turbo- 前端代码位于
src/app.js - 后端代码位于
server.js - 数据库操作封装在
database.js - 用户界面位于
src/index.html
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。