Skip to content

NeoWeb3Nova/pencil_dev

Repository files navigation

Web3 Jobs

🚀 连接全球区块链开发者与顶级项目的去中心化招聘平台

Platform Backend Database TypeScript License


📖 项目简介

Web3 Jobs 是一个专为区块链和加密货币行业打造的人才招聘平台。我们连接全球 Web3 开发者与顶尖项目,提供去中心化身份验证、加密货币薪资展示和智能匹配服务。

💡 核心价值

🎯 精准匹配 🔐 去中心化身份 💰 加密货币支付
AI 驱动的职位推荐算法 支持钱包签名登录 (SIWE) 薪资支持 USD/ETH 双标价
技能标签智能匹配 保护用户隐私与数据安全 集成主流加密货币支付
实时更新职位推送 无需传统账号密码 透明可信的薪酬体系

📱 应用预览

🏠 首页 💼 职位列表 📝 发布职位
首页 职位列表 发布职位
💬 消息 👤 个人中心 📝 注册
消息 个人中心 注册

✨ 核心功能

👤 求职者功能

🔐 身份认证 📄 简历管理
• 邮箱密码登录 • 在线编辑简历
• Web3 钱包签名 • 技能标签展示
• SIWE 去中心化登录 • 作品集链接
💼 职位探索 📬 申请追踪
• 智能推荐算法 • 申请状态实时更新
• 多维度筛选 • 面试通知推送
• 薪资透明展示 • Offer 管理

🏢 招聘方功能

📝 职位发布 🎯 人才匹配
• 快速创建职位 • 候选人智能推荐
• 加密货币薪资 • 技能标签筛选
• 远程/现场选择 • 活跃度评分
💬 即时沟通 📊 数据看板
• 在线消息系统 • 申请职位统计
• 面试安排 • 职位曝光分析
• 批量通知 • 招聘漏斗

🔗 Web3 特色功能

功能 描述
🦊 钱包连接 支持 MetaMask 等主流钱包,一键连接身份
✍️ SIWE 登录 Sign In with Ethereum,去中心化身份验证
💎 加密货币薪资 职位薪资支持 ETH/USDC 等加密货币展示
⛓️ 链上验证 可选集成链上作品验证 (NFT/Gitcoin)
🏷️ 技能 NFT 未来支持技能认证 NFT 化

🛠 技术架构

系统架构图

flowchart TB
    subgraph Frontend["📱 Frontend - React Native"]
        FN1[Zustand - 状态管理]
        FN2[React Query - 数据获取]
        FN3[NativeWind - Tailwind CSS]
    end

    subgraph Backend["🔧 Backend - NestJS"]
        BN1[Prisma ORM]
        BN2[JWT + Passport 认证]
        BN3[ethers.js + SIWE]
        BN4[PostgreSQL 数据库]
    end

    Frontend <==>|REST API| Backend
    BN1 --- BN4
Loading

前端技术栈

技术 版本 用途
React Native 0.83.2 跨平台移动应用框架
Expo 55.0.3 开发与构建工具链
TypeScript 5.9.2 类型安全的 JavaScript
Zustand 5.0.11 轻量级状态管理
React Query 5.90.21 服务端状态管理
NativeWind 4.2.2 Tailwind CSS for RN
Expo Router 55.0.3 文件系统中路由
Lucide Icons 0.575.0 美观图标系统
Zod 4.3.6 TypeScript 验证库

后端技术栈

技术 版本 用途
NestJS 11.0.1 高效的 Node.js 框架
Prisma 6.19.2 下一代数据库 ORM
PostgreSQL - 关系型数据库
JWT - JSON Web Token 认证
Passport 0.7.0 认证中间件
ethers.js 6.16.0 以太坊交互库
SIWE 3.0.0 以太坊签名登录
bcrypt 6.0.0 密码哈希加密

📦 项目结构

📁 点击展开完整目录结构
web3-jobs/
├── web3-job-app/                 # React Native 前端应用
│   ├── app/                      # Expo Router 路由系统
│   │   ├── (tabs)/              # 底部 Tab 导航页面
│   │   │   ├── index.tsx        # 🏠 首页
│   │   │   ├── jobs.tsx         # 💼 职位列表
│   │   │   ├── post.tsx         # 📝 发布职位
│   │   │   ├── messages.tsx     # 💬 消息中心
│   │   │   └── profile.tsx      # 👤 个人中心
│   │   ├── job/
│   │   │   └── [id].tsx         # 职位详情页
│   │   ├── _layout.tsx          # 根布局
│   │   └── +not-found.tsx       # 404 页面
│   ├── components/               # 可复用 UI 组件
│   │   ├── ui/                  # 基础组件 (Button, Card, Input...)
│   │   ├── job/                 # 职位相关组件
│   │   ├── home/                # 首页组件
│   │   ├── messages/            # 消息组件
│   │   └── profile/             # 个人中心组件
│   ├── lib/                      # 工具函数与配置
│   │   ├── api.ts               # API 客户端
│   │   ├── utils.ts             # 通用工具
│   │   └── constants.ts         # 常量定义
│   ├── store/                    # Zustand 状态管理
│   │   └── authStore.ts         # 认证状态
│   ├── hooks/                    # 自定义 Hooks
│   └── app.json                  # Expo 配置
│
├── web3-api/                     # NestJS 后端 API
│   ├── src/
│   │   ├── app.module.ts        # 根模块
│   │   ├── main.ts              # 入口文件
│   │   ├── auth/                # 🔐 认证模块
│   │   │   ├── auth.controller.ts
│   │   │   ├── auth.service.ts
│   │   │   ├── strategies/      # Passport 策略
│   │   │   └── dto/             # 数据传输对象
│   │   ├── users/               # 👥 用户模块
│   │   ├── jobs/                # 💼 职位模块
│   │   ├── applications/        # 📋 申请模块
│   │   ├── messages/            # 💬 消息模块
│   │   ├── wallet-profiles/     # 🦊 钱包档案
│   │   └── web3/                # ⛓️ Web3 集成
│   ├── prisma/
│   │   ├── schema.prisma        # 数据库模型
│   │   ├── migrations/          # 数据库迁移
│   │   └── seed.ts              # 种子数据
│   ├── test/                     # E2E 测试
│   └── docker-compose.yml       # Docker 配置
│
├── assets/                       # 🖼️ 项目资源
│   └── screenshots/             # 应用截图
│
├── README.md                     # 项目文档
├── CLAUDE.md                     # 开发指南
└── LICENSE                       # 开源协议

🚀 快速开始

环境要求

软件 版本要求 说明
Node.js >= 18.x JavaScript 运行时
npm >= 9.x 包管理器
Docker 最新 数据库容器
Git 最新 版本控制

1️⃣ 克隆项目

git clone https://github.com/your-username/web3-jobs.git
cd web3-jobs

2️⃣ 启动数据库

cd web3-api
docker-compose up -d

# 验证容器状态
docker ps

3️⃣ 配置后端

cd web3-api

# 安装依赖
npm install

# 复制环境变量
cp .env.example .env

# 生成 Prisma Client
npm run prisma:generate

# 运行数据库迁移
npm run prisma:migrate

# 插入测试数据
npm run prisma:seed

# 启动开发服务器
npm run start:dev

4️⃣ 启动前端

cd web3-job-app

# 安装依赖
npm install

# 启动 Expo Dev Server
npm start

# 扫描屏幕二维码
# - 按 a → Android 模拟器
# - 按 i → iOS 模拟器
# - 扫描二维码 → 真机测试

📖 API 文档

认证接口

方法 端点 描述 认证
POST /api/auth/register 用户注册
POST /api/auth/login 邮箱密码登录
POST /api/auth/siwe 钱包签名登录
GET /api/auth/profile 获取用户信息
PUT /api/auth/profile 更新用户信息

职位接口

方法 端点 描述 认证
GET /api/jobs 获取职位列表
GET /api/jobs/:id 获取职位详情
POST /api/jobs 发布职位
PUT /api/jobs/:id 更新职位
DELETE /api/jobs/:id 删除职位

申请接口

方法 端点 描述 认证
POST /api/applications 申请职位
GET /api/applications/my 我的申请
GET /api/applications/:id 申请详情

消息接口

方法 端点 描述 认证
GET /api/messages 获取消息列表
POST /api/messages 发送消息
PUT /api/messages/:id/read 标记已读

🧪 测试账户

项目包含预置的测试账户,方便快速体验:

账户类型 信息
管理员账户
📧 邮箱 admin@web3jobs.com
🔑 密码 password123
👑 角色 admin
账户类型 信息
普通用户
📧 邮箱 user@web3jobs.com
🔑 密码 password123
👤 角色 user

🔒 生产环境部署

⚠️ 重要: 部署到生产环境前,请务必完成以下安全配置

1. 生成强随机 JWT 密钥

# 使用 OpenSSL
openssl rand -base64 32

# 或使用 Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

2. 修改环境变量

编辑 web3-api/.env:

# 生产环境 JWT 密钥 (必须修改!)
JWT_SECRET=<生成的强随机密钥>

# 数据库密码 (必须修改!)
POSTGRES_PASSWORD=<你的强密码>

# JWT 过期时间
JWT_EXPIRATION=7d

3. 配置 HTTPS

# 使用 Nginx 反向代理
# 或使用 Vercel/Render 等托管服务

🧪 开发指南

数据库操作

cd web3-api

# 打开 Prisma Studio (数据库可视化)
npm run prisma:studio

# 创建新的数据库迁移
npx prisma migrate dev --name <描述>

# 重置数据库 (开发环境)
npx prisma migrate reset

# 查看迁移状态
npx prisma migrate status

前端调试

cd web3-job-app

# 清除缓存并重启
npx expo start -c

# Android 真机/模拟器
npx expo run:android

# iOS (仅 macOS)
npx expo run:ios

# Web 预览
npx expo start --web

代码规范

# 格式化代码
npm run format

# 运行 Lint
npm run lint

# 运行测试
npm run test
npm run test:cov  # 带覆盖率

🤝 贡献指南

欢迎贡献代码!请遵循以下步骤:

  1. 🍴 Fork 本仓库
  2. 🌿 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. ✅ 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 🚀 推送到分支 (git push origin feature/AmazingFeature)
  5. 📬 开启 Pull Request

开发前请阅读


📄 开源协议

MIT License - 详见 LICENSE 文件


👨 关于作者

Neo Web3 - Web3 全栈开发者

专注链上 AI 的底层逻辑探索者,热衷于构建去中心化未来

联系方式 信息
🌐 网站 amshe.fun
📧 邮箱 neo.web3.nova@gmail.com
🐦 Twitter @NeoWeb3Nova
💻 GitHub @NeoWeb3Nova
📺 YouTube @NeoYun-Web3.0
✈️ Telegram @neo_web3_nova
💬 Discord neo_web3_nova

🛠 技术栈

领域 技术
⛓️ 区块链 Solidity, Ethereum, Smart Contracts, DeFi, NFT, Layer 2
🎨 前端 React, TypeScript, Web3.js, Ethers.js, Next.js
🔧 后端 Node.js, GraphQL, The Graph, IPFS
🧰 工具 Hardhat, Foundry, Git, Docker, Chainlink, Uniswap, Aave

📊 成就

  • 50+ 智能合约部署
  • 20+ DApps 构建
  • 5+ 年开发经验
  • $10M+ TVL 保护

🙏 致谢

本项目使用了以下优秀的开源项目:

  • 🦑 NestJS - 构建高效 Node.js 应用
  • 🔮 Prisma - 下一代数据库工具
  • ⚛️ Expo - React Native 开发平台
  • 🔷 Ethers.js - 以太坊开发库
  • 🪪 SIWE - 去中心化身份认证

Made with ❤️ by Neo Web3

🌟 如果这个项目对你有帮助,请给一个 Star!

Star History

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors