Tip
如果有合适的职位数据源,欢迎👏提 issues, 我们将视情况开发。
项目使用 Monorepo、turbo、pnpm 管理
pnpm install
.
├── apps
│ ├── jobs
│ └── www
├── package.json
├── packages
│ ├── db
│ ├── eslint-config
│ └── tsconfig
├── pnpm-workspace.yaml
└── turbo.json
- jobs:抓取任务
- www:网站
- db:公共数据服务
数据抓取独立服务(和
apps/jobs
同步-支持 node 16), x-hiring grab
apps/jobs
下.env.example
文件复制,名称修改为.env
内容自行修改apps/www
下.env.example
文件复制,名称修改为.env
内容自行修改packages/db
下.env.example
文件复制,名称修改为.env
内容自行修改(为了prisma migrate
)
# Prisma postgresql 数据库
DATABASE_URL="postgresql://x-hiring:password@0.0.0.0:5432/x-hiring"
# Google Gemini AI
GEMINI_AI_API_KEY="api_token"
# GithubToken
GITHUB_TOKEN="ghp_xxx"
# 本地代理 (可选)
LOCAL_FETCH_PROXY="http://127.0.0.1:7890"
# Redis Upstash
# https://upstash.com/blog/nextjs-ratelimiting
UPSTASH_REDIS_REST_URL="https://xxx.upstash.io"
UPSTASH_REDIS_REST_TOKEN="xxx"
pnpm run dev:web
pnpm run dev:jobs
打开 http://localhost:3000
网站和抓取分析,为什么分为了两个服务?
- 抓取是长时运行任务, @vercel 免费版最大运行时长 10s, cron 的是每日一次,最小单位为小时,任务运行时长也有最大限制
- #Gemini 有地域限制,且未直接在业务中使用,所以结合抓取实现摘要保存更合适
接下来的计划是什么?
- RSS 服务:
https://x-hiring.hehehai.cn/feed.xml
- (搁置)相关职位推荐 - 每个职位详情下方展示最新 6 个类似职位
- 上次查看标识 - 下一次打开时,列表滚动到上次打开时的第一条数据时,标记上次查看标识
- 新增 team 入口, 展示中文社区开发团队和独立开发者列表
- 支持登录 - 使用 clerk 登录账号
- 支持职位信息发布 - 发布职位后默认状态为待审核, 审核成功或失败将发送邮件到发布人邮箱
- 职位群请加我的微信,不直接放二维码了,有乱打广告的!
职位群 |
---|