Future Pulse 是一个个人 AI 技术情报与机会匹配工作台。它不是面向大众的 AI 周报 SaaS,而是把固定信源、个人能力画像、时间范围和报告结构产品化,用来持续追踪 AI 技术变化,并把变化转译成可执行的学习、项目和职业行动。
Portfolio note: this project demonstrates AI workflow productization, frontend implementation, prompt architecture, bilingual UI, deployment tradeoff handling, and a calm editorial interface system.
普通 LLM 已经可以生成“一份 AI 周报”。Future Pulse 的价值不在于替代聊天框,而在于把一个长期重复的个人工作流固定下来:
- 保存个人能力画像、关注方向和报告结构
- 按 3 天 / 1 周 / 1 个月 / 3 个月生成不同粒度的技术情报
- 将 AI 进展映射到个人机会、能力差距和下一步行动
- 支持中英文报告、能力画像编辑和 Markdown 导出
- 用统一 UI 降低每次整理情报的上下文切换成本
- AI workflow productization: 把 prompt、用户画像、时间范围和输出格式封装成可重复使用的工作台
- Personalization layer: 简历 / 技能 / 关注领域参与报告生成,而不是通用新闻摘要
- Local-first privacy: 个人画像在浏览器端编辑,无数据库、无用户追踪
- Provider abstraction: DeepSeek / Gemini / OpenAI / Claude / Moonshot 的统一调用接口
- User-owned API key flow: 公开演示不内置模型 API Key,用户在浏览器中手动输入并本地保存
- Editorial interface design: 森林绿、暖纸色、衬线标题和紧凑控制台布局
- 权威信源提示:官方博客、创始人 X/Twitter、arXiv、GitHub Trending、Hugging Face
- 能力画像输入:粘贴简历、项目经历、技能栈和当前目标
- 时间范围选择:3 天 / 1 周 / 1 个月 / 3 个月
- 双语报告:中文 / English
- 流式输出:实时查看生成过程
- 导出能力:Markdown / 纯文本 / 剪贴板 / 打印 PDF
- 暗色模式:自动跟随系统 + 手动切换
- API Key 管理:公开演示和本地开发都可在浏览器端保存自己的 Provider Key
![]() |
![]() |
![]() |
![]() |
![]() |
|
npm install
cp .env.example .env.local
npm run dev默认本地端口:
http://localhost:3000
本地开发可以使用两种方式:
- 在
.env.local中配置服务端 Key,例如DEEPSEEK_API_KEY - 或在应用内打开 API Key 配置弹窗,填入自己的 Provider Key
This is primarily a personal workflow and portfolio project. The public GitHub Pages demo does not embed a private model API key. Each user enters their own key in the browser when they want to generate a report.
GitHub Pages 是静态托管。当前作品集演示版使用浏览器端手动输入的 API Key 调用 DeepSeek,不依赖 workers.dev,也不会把维护者自己的 Key 打进前端 bundle:
# .env
VITE_PUBLIC_MODE=true
npm run buildThen publish dist/ to the gh-pages branch.
In public mode, provider/model controls are simplified for the demo, while the API Key modal remains available. The key is stored in browser localStorage on the user's own device.
Vercel 可使用 Serverless Functions 保存服务端密钥:
vercel --prodRequired environment variable:
DEEPSEEK_API_KEY=...
- Personal/local use: using your own DeepSeek quota is acceptable.
- Public portfolio demo: do not ship your private API key in the website. Ask users to enter their own key.
- Browser storage: user-entered keys are stored locally in that browser and can be replaced from the API Key modal.
- Never commit
.env.
| Category | Technology |
|---|---|
| Framework | React 19 + TypeScript 5.8 |
| Build | Vite 6 |
| Styling | Tailwind CSS 4 |
| Animation | Motion |
| AI | DeepSeek API by default, multi-provider abstraction |
| Markdown | react-markdown + remark-gfm |
| Optional proxy | Vercel Serverless |
src/
components/
Header.tsx
ApiKeyModal.tsx
ExportMenu.tsx
layout/MainLayout.tsx
sidebar/UserProfilePanel.tsx
output/
ReportOutput.tsx
ReportContent.tsx
ReportEmptyState.tsx
ReportLoadingState.tsx
ReportErrorState.tsx
hooks/
useGenerateReport.ts
useLocale.ts
i18n/
zh.ts / en.ts / index.ts
utils/
providers.ts
ThemeContext.tsx
types/
report.ts
api/
deepseek.ts
gemini.ts
worker/
worker.js
wrangler.toml
- User profile text stays in the browser unless submitted for report generation.
- No backend database is required.
- No analytics or user tracking is included.
MIT





