零知识简历平台的monorepo项目架构
resume_zk/
├── packages/
│ ├── web/ # Next.js 前端应用
│ ├── contracts/ # Foundry 智能合约
│ ├── ui/ # 共享UI组件
│ ├── types/ # 共享TypeScript类型
│ └── utils/ # 共享工具函数
└── docs/ # 文档
- 框架: Next.js 14.1.0 + React 18 + TypeScript 5
- UI组件库: Shadcn UI + 共享UI组件
- 样式: Tailwind CSS
- 状态管理: Jotai
- Web3: wagmi + viem
- 开发框架: Foundry
- 语言: Solidity ^0.8.13
- packages/ui/: 可复用的UI组件库
- packages/types/: TypeScript类型定义
- packages/utils/: 通用工具函数
# 安装所有workspace的依赖
npm run install:all# 启动前端开发服务器
npm run dev
# 构建智能合约
npm run contract:build
# 运行智能合约测试
npm run contract:test# 构建前端应用
npm run build
# 构建智能合约
npm run contract:buildnpm run dev- 启动前端开发服务器npm run build- 构建前端应用npm run start- 启动生产服务器npm run test- 运行所有测试npm run clean- 清理所有node_modulesnpm run contracts:build- 构建智能合约npm run contracts:test- 运行智能合约测试npm run contracts:deploy- 部署智能合约
cd packages/web
npm run dev # 开发服务器
npm run build # 构建生产版本
npm run start # 启动生产服务器
npm run lint # 代码检查
npm run type-check # TypeScript 类型检查cd packages/contracts
npm run build # 构建合约
npm run test # 运行测试
npm run test:verbose # 详细测试输出
npm run coverage # 测试覆盖率
npm run deploy:sepolia # 部署到Sepolia测试网
npm run deploy:mainnet # 部署到主网
npm run clean # 清理构建文件
npm run fmt # 格式化代码
npm run lint # 代码检查- 复制环境变量文件:
cp packages/web/.env.example packages/web/.env.local
cp packages/contracts/.env.example packages/contracts/.env- 配置必要的环境变量:
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID- WalletConnect项目IDPRIVATE_KEY- 部署合约用的私钥ETHERSCAN_API_KEY- Etherscan API密钥
主要合约 ResumeZK.sol 提供以下功能:
- 提交简历哈希和Merkle根
- 验证简历
- 查询用户简历
- 事件日志记录
- 遵循现有的代码风格和TypeScript类型声明
- 使用Tailwind CSS进行样式开发
- 利用Jotai进行状态管理
- 智能合约开发遵循Solidity最佳实践
- 编写相应的测试用例
前端应用可以部署到Vercel、Netlify等平台。
使用Foundry部署到指定网络:
npm run contracts:deploy:sepolia # 测试网部署
npm run contracts:deploy:mainnet # 主网部署