Skip to content

XingjianLee/JobLink

Repository files navigation

JobLink

一个专注于连接求职者和企业的在线招聘平台。简单来说,就是让找工作变得更高效,让招人变得更精准。

这个项目是做什么的?

JobLink 是一个双端招聘系统,主要解决两个问题:

对求职者来说

  • 不用再海投简历了,AI 会帮你匹配合适的职位
  • 可以管理多份简历,随时更新
  • 追踪所有投递记录,不会错过任何反馈
  • 参加线上招聘会,直接和 HR 沟通
  • 还能找兼职,学生党友好

对企业来说

  • 发布职位很简单,几分钟搞定
  • 主动搜索人才,不等人投简历
  • 数据看板很直观,知道哪些职位受欢迎
  • 管理申请流程,从收到简历到面试安排
  • 收藏心仪候选人,方便后续联系

技术栈

  • 前端:React 19 + TypeScript + Vite
  • UI 组件:shadcn/ui + Tailwind CSS
  • 后端:Supabase(数据库 + 认证)
  • 状态管理:TanStack Query
  • 路由:React Router
  • 包管理:Bun

快速开始

前置要求

需要安装 Bun,其他依赖会自动处理。

安装和运行

# 克隆项目
git clone https://github.com/XingjianLee/JobLink.git
cd JobLink

# 安装依赖
bun install

# 启动开发服务器
bun run dev

然后打开浏览器访问 http://localhost:5173 就能看到首页了。

构建生产版本

bun run build

构建好的文件在 dist 目录,可以直接部署。

项目结构

JobLink/
├── src/
│   ├── components/        # 组件库
│   │   ├── home/         # 首页组件
│   │   ├── jobseeker/    # 求职者相关组件
│   │   ├── layout/       # 布局组件(Header、Footer等)
│   │   └── ui/           # 基础 UI 组件(shadcn/ui)
│   ├── pages/            # 页面组件
│   │   ├── auth/         # 登录注册
│   │   ├── company/      # 企业端页面
│   │   └── jobseeker/    # 求职者端页面
│   ├── hooks/            # 自定义 Hooks
│   ├── integrations/     # 第三方集成(Supabase)
│   └── lib/              # 工具函数
├── supabase/             # Supabase 配置和迁移文件
└── public/               # 静态资源

主要功能

求职者功能

  • ✅ 职位搜索和筛选
  • ✅ 简历管理和编辑
  • ✅ 申请追踪
  • ✅ 职位收藏
  • ✅ 接收企业邀请
  • ✅ 招聘会参与
  • ✅ 兼职工作搜索
  • ✅ 职业指导

企业功能

  • ✅ 职位发布和管理
  • ✅ 人才搜索
  • ✅ 申请管理
  • ✅ 数据分析看板
  • ✅ 人才收藏
  • ✅ 主动邀请候选人
  • ✅ 账户设置

说明

环境变量

需要配置 Supabase 和 OpenAI 的环境变量,在项目根目录创建 .env.local

VITE_SUPABASE_URL=你的_supabase_url
VITE_SUPABASE_PUBLISHABLE_KEY=你的_supabase_anon_key
VITE_OPENAI_API_KEY=你的_openai_api_key

一些细节

  • 支持深色/浅色主题切换
  • 响应式设计,手机端也能用
  • 使用 React Query 做数据缓存,减少不必要的请求
  • 路由有权限控制,未登录会自动跳转

AI 智能匹配算法

JobLink 使用多维度匹配算法,自动计算求职者与职位的匹配度,为双方推荐最优路径。

匹配度计算方式

匹配度总分 100 分,由以下 5 个维度组成:

1. 技能匹配(40 分,权重最高)

  • 计算方式:比较求职者的技能列表与职位要求的技能列表
  • 匹配逻辑
    • 使用模糊匹配(不区分大小写,支持部分匹配)
    • 匹配度 = (匹配的技能数 / 职位要求的技能总数) × 40
  • 示例:职位要求 5 项技能,求职者匹配 4 项 → 得分 = (4/5) × 40 = 32 分

2. 位置匹配(20 分)

  • 完全匹配:求职者所在城市 = 职位所在城市 → 20 分
  • 部分匹配:城市名称包含关系(如"北京"包含"北京市") → 10 分
  • 不匹配:0 分

3. 薪资匹配(20 分)

  • 完全匹配:期望薪资在职位薪资范围内 → 20 分
  • 接近匹配:期望薪资在职位薪资范围的 80%-100% → 10 分
  • 不匹配:0 分

4. 工作类型匹配(10 分)

根据求职者当前状态推荐合适的工作类型:

求职者状态 推荐工作类型 匹配得分
待业 (unemployed) 全职、兼职 10 分
在校学生 (student) 实习、兼职 10 分
在职 (employed) 全职、合同工 10 分
自由职业 (freelance) 自由职业、合同工 10 分

5. 教育背景匹配(10 分)

  • 计算方式:比较求职者学历与职位要求的学历
  • 匹配逻辑:求职者学历 ≥ 职位要求学历 → 10 分
  • 学历等级:高中及以下 < 大专 < 本科 < 硕士 < 博士

匹配结果展示

  • 匹配度百分比:显示 0-100% 的匹配分数
  • 匹配因素标注:显示具体匹配点,如"技能匹配:4/5"、"位置匹配"、"薪资匹配"等
  • 智能排序:按匹配度降序排列,优先展示最匹配的职位
  • 筛选机制:只显示匹配度 > 0 的职位,最多显示前 20 个

算法特点

  • 多维度综合:不仅看关键词,还综合分析技能、位置、薪资、工作类型、学历
  • 智能排序:企业端收到的简历按匹配度降序排列,优先查看最合适的人选
  • 可解释性:不仅给出分数,还标注关键匹配点,辅助人工决策
  • 实时更新:根据用户资料变化,实时重新计算匹配度

后续计划

  • 增加消息系统,让求职者和企业可以直接沟通
  • 优化 AI 匹配算法(引入机器学习模型)
  • 添加更多数据分析维度
  • 支持视频面试预约
  • 多语言支持

许可证

MIT License


如果有什么问题或者建议,欢迎提 Issue 或者 PR。

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors