DevKitly 是一个面向开发者提供常用开发工具的在线工具箱。
项目包含 QR 码生成、UUID 生成、随机密码、摘要计算、编码/解码、Token 生成、非对称加密、对称加密等实用功能。
DevKitly 采用 Monorepo 架构,包含 web 和 api 两个独立子项目,可以单独进行部署:
- Web 前端:所有工具均在浏览器本地完成计算和处理,无需调用后端接口。用户输入的文本、文件、密钥等数据不会上传至服务器,适合处理敏感信息和临时数据。
- API 后端:提供独立的接口服务,方便在脚本、自动化任务、后端系统或第三方应用中集成相关能力,适用于批量处理、服务端调用和业务系统接入等场景。
前端适合个人开发者直接使用,开箱即用、无需安装;API 则更适合工程化场景和自动化流程。二者功能独立、互不依赖,既兼顾了易用性,也保留了良好的扩展性和集成能力。
| 功能 | 说明 |
|---|---|
| QR 码生成 | 支持文本和 Wi-Fi 两种类型,生成 Base64 PNG 图片 |
| UUID 生成 | 支持 v4(随机)和 v5(命名空间+名称),可批量生成 1-100 个 |
| 随机密码生成 | 长度 4-256 位,可自定义大小写、数字、符号及自定义符号集 |
| 摘要计算 | 支持文本和文件两种输入,计算 MD5/SHA-256 摘要,文件最大支持 100MB |
| 编码/解码 | 支持 Base64、Hex、UTF-8、Unicode、URL 五种格式互转 |
| Token 生成 | 支持前缀、长度、数量配置,可批量生成 1-100 个 |
| 非对称加密 | RSA 密钥对生成(2048/4096)、公钥加密、私钥解密,采用 RSA-OAEP + SHA-256 填充 |
| 对称加密 | AES-256-GCM 对称加密与解密,使用口令通过 PBKDF2-SHA256(10 万次迭代)派生密钥,密文格式为 Base64(salt + iv + 密文 + tag) |
- 前端:Vue 3 + TypeScript + Vite + Naive UI + Pinia + vue-i18n
- 后端:Express 5 + TypeScript + serverless-http
- 包管理:pnpm(Monorepo 工作区)
- 加密/哈希:crypto-js(前端)/ Node.js crypto(后端)/ Web Crypto API(前端对称加密)
- 其他:qrcode、uuid、spark-md5、highlight.js
- Node.js >= 22
- pnpm
# 克隆仓库
git clone https://github.com/hreign/devkitly.git
cd devkitly
# 安装依赖
pnpm install
# 启动前端开发服务(默认端口 5173)
pnpm dev:web
# 启动后端开发服务(默认端口 3000)
pnpm dev:api
# 构建前端生产版本
pnpm build:web
# 构建后端生产版本
pnpm build:api点击上方按钮即可将项目快速部署到 Vercel 平台。项目采用 Monorepo 结构,部署时需注意:
- 前端(web):作为静态站点部署
- 后端(api):作为 Serverless Function 部署
| 变量名 | 位置 | 说明 | 示例 |
|---|---|---|---|
PASSWORD |
api | API 鉴权密码 | your_password_here |
PORT |
api | 服务端口,默认 3000 | 3000 |
VITE_BACKEND_URL |
web | 后端服务地址,设置后各功能页将显示 API 文档按钮 | https://api.example.com |
项目前后端均支持国际化,新增语言只需添加对应的 JSON 文件即可,无需修改任何代码。
- 在
api/src/i18n/目录下新建 JSON 文件,文件名即语言代码(如fr-fr.json、ja-jp.json) - 文件内容为消息键值对,可参考
zh-cn.json中的键名 - 启动或构建时自动加载,无需其他操作
请求头 x-api-lang 携带语言代码(如 fr-fr),未携带时默认 zh-cn。
- 在
web/src/i18n/目录下新建 JSON 文件,文件名即语言代码(如fr-fr.json、ja-jp.json) - 文件内容为嵌套的键值对,结构与
zh-cn.json完全对齐 - 构建时自动加载,无需其他操作
- 如需在语言切换菜单中展示新语言,修改
web/src/components/AppLayout.vue中的localeOptions