不收费、不加水印、数据归你:我做了个开源的在线简历工具

36 套 A4 模板、分页所见即所得、服务端导出 PDF------极简简历 MiniWho

在线使用:who.minims.cn | 源码:github.com/cosolar/min...


每次换工作,简历工具都要重新交一次"订阅费":免费版导出带水印,高级模板要开会员,导出的 PDF 和网页上看到的不是一回事;更别提手机号、住址、证件照都躺在别人的服务器上。

我前后做过好几版简历,最后决定自己写一个。现在它开源上线了:极简简历 MiniWho。

它只解决三个问题:排版别崩、导出别坑、数据别丢。

一、用结构代替排版:18 个模块 + 自定义,只管「写什么」

大部分简历工具让你先挑模板,再把内容往文本框里塞。MiniWho 反过来:内容是结构化的,版式是最后一步。

内置 18 个固定模块------基本信息、求职意向、教育背景、工作经历、项目经历、在校经历、个人技能、技能熟练度、论文发表、作品集、自我评价、考研信息、竞赛经历、获奖情况、资格证书、论文期刊、兴趣爱好------外加最多 5 个自定义模块。

每个模块可以拖拽排序、显示或隐藏、重命名;工作台右侧是实时预览,改一个字,纸面立刻跟着变。切换模板不会丢内容,换版式只是换一层皮。

几个细节:

  • 单模块独立保存,服务端用 contentVersion 乐观锁,开两个标签页编辑不会互相覆盖。
  • 刷新或误关页面后,可以恢复尚未保存的本地草稿。
  • 简历照片走独立通道,工作台内裁剪(证件照 / 圆形两种),上传后自动降采样重编码,不占附件额度。
  • 教育背景和工作经历可以挂院校 / 公司 LOGO,所有版式都会把它排进条目侧边的徽标栏。

二、分页所见即所得:屏幕上怎么断,PDF 就怎么断

这是我最在意的一处。

用 Word 或网页模板写简历,最常见的崩溃场景是:屏幕上一切正常,导出时标题被腰斩、表格裂成两半、第二页顶格没有页边距。

MiniWho 的做法是把分页算在纸面上:内容超过一页时,按 A4 高度实算断点,画出虚线和「第 N 页 · 共 M 页」标签。屏幕上的虚线、浏览器打印、服务端导出的 PDF,用的是同一批断点标记,续页会自动补齐页边距。双栏模板的正文列和侧栏列共用同一条页边界,侧栏底色铺满每一页。

所以你看到的最后一页,就是投出去的那一页。

三、模板不是一张皮,而是一个可以交换的文件

站内现在有 36 套模板:30 套随应用内置(12 套原创官方版式 + 18 套设计版式),加上模板中心里社区分享的版本。单栏、双栏、色带、居中、时间轴、通栏照片侧栏、页眉证件照......大部分版式在页眉留了照片位,没传照片时会自动回落到姓名首字徽标,不会留白。

比数量更有意思的是模板包:每一套模板------包括官方的------都是一个 JSON 文件,描述主题 token 和一段受约束的 CSS,可以一键导出、发给别人、在任意一份部署里导入。

导入后的模板和官方同权:能预览、能切页、能导 PDF、分页规则一致。安全上也没有留后门------CSS 会在服务端逐条规则重新生成后才注入页面,选择器强制限定在该模板的作用域类下,@import、expression()、!important、外链 url() 一律拒绝;这个格式里根本没有 HTML 和 JS 的位置,所以别人的模板拿不到执行能力,也改不坏你的简历。

如果你自己调过一套版式,可以把它分享到模板中心;也可以关掉导出权限,让别人只能选用、不能下载。

四、导出:服务端渲染 PDF,失败还能退回浏览器打印

点「下载 PDF」,服务端用无头 Chrome 把同一套 A4 版面渲染出来,结果按内容和样式版本缓存 24 小时,重复导出基本是瞬间完成。

机器上没有可用的浏览器时,前端会自动回落到「浏览器打印 → 另存为 PDF」,功能不中断。

打印和导出时恢复 210 × 297mm 物理尺寸;还可以调纸面滤镜(原色 / 暖纸 / 黑白)、字号与行距、页脚品牌标识。这些设置跟着简历存,不用每次重调。

五、分享链接与隐私:字段在服务端就被拿掉

找工作期间,简历要发给 HR、朋友、内推人,但不需要把全部个人信息摊给所有人。MiniWho 的分享是:

  • 高熵随机链接,可选 4--20 位访问密码;
  • 可选 1--365 天有效期,或者永久;
  • 可以选择是否允许打印和下载;
  • 手机号、邮箱、城市、个人主页等字段可以单独隐藏,隐藏的字段在服务端就被移除,根本不会发到访客的浏览器里;
  • 简历照片走带 HMAC 签名的短时效地址,猜不出来,也没法长期转发;
  • 能看查看次数,随时撤销;重新生成链接会让旧链接立即失效。

六、诊断不上传简历:规则评分,不调外部 AI

站内的简历诊断是五维规则评分:完整度 25 分、岗位匹配 25 分、表达质量 20 分、成果量化 15 分、格式规范 15 分。输出等级、维度明细和最多 12 条可执行建议,建议按优先级排序,可以直接跳到对应模块去改。

它不依赖任何外部 AI 服务,结果可复现------同一份内容,今天和下周跑出来的分数是一样的。在自己的服务器上部署时,整个诊断过程连外网都不用出。

七、账号与数据:能带走,也能删干净

  • 用户名密码注册登录,密码 BCrypt 哈希;
  • 邮箱注册可选,6 位验证码走标准 SMTP,验证码加密存储、10 分钟有效、一次即废;
  • 也可以接 GitHub 登录(需要自己填 Client ID / Secret);
  • 支持邮箱验证码找回密码;
  • 账号数据可以打包成 zip 一次性导出;
  • 自助注销带宽限期,到期后附件、头像、简历全部硬删除。

管理后台也不只是"看看统计":注册通道开关、邮件与 GitHub 凭据、内容宽度(1100--1600px,全站页面跟着变)、首页示例简历、意见反馈、单账号存储配额,以及一张运行环境自检卡片(数据库、上传目录、PDF 渲染、邮件通道、磁盘空间)。

免费、开源、可自部署

  • 全部功能免费:没有会员体系,没有付费模板,没有隐藏的导出限制。
  • Apache 2.0 :可以自用、修改、商用与再分发,保留 LICENSE 与 NOTICE 即可。
  • 单镜像:前端页面打进同一个 jar,一个容器 + 一个数据库就能跑;默认 SQLite,也可以换 MySQL 8。
  • 前端 Vue 3 + Element Plus,后端 Java 17 + Spring Boot 3,接口和数据结构都写在文档里,方便二次开发。

最省事的自部署方式,一条命令:

bash 复制代码
docker run -d --name miniwho \
  -p 8088:8080 \
  -v miniwho-uploads:/app/uploads \
  -e MINIWHO_DB=/app/uploads/miniwho.db \
  -e MINIWHO_ADMIN_PASSWORD='换成你的强密码' \
  -e MINIWHO_MEDIA_SECRET="$(openssl rand -hex 32)" \
  --shm-size=512m \
  cosolar/miniwho:latest

打开 http://localhost:8088,用 admin 和你设置的密码登录。要允许别人自助注册,去后台「站点设置」打开对应通道即可(邮箱注册需要先把 SMTP 配好)。

三个部署提醒:

  1. 服务端 PDF 依赖无头 Chromium,镜像里已经带了,容器建议至少给 1GB 内存;
  2. MINIWHO_MEDIA_SECRET 要填一个固定值,否则每次重启后历史头像链接会失效;
  3. 暴露到公网时在前面放一层 HTTPS 反向代理,并给管理员设一个强密码。

适合谁,不适合谁

适合:

  • 正在找工作、不想为"导出 PDF"付费的人;
  • 在意隐私,不想把完整履历和证件照传到陌生服务器的人;
  • 有 NAS 或 VPS、喜欢自己托管服务的开发者;
  • 想统一版式、把调好的模板分享给朋友或团队的人。

不太适合:

  • 需要投递渠道、企业对接、ATS 打分报告的求职平台用户;
  • 期待"一键生成几百套花哨模板"的人;
  • 完全不想碰命令行、也不打算用官方站点的用户(自部署需要会一点 Docker)。

上手三步

  1. 打开 who.minims.cn ,在模板中心挑一套顺眼的版式(免登录可预览);
  2. 按模块把内容填进去,右侧实时看分页;
  3. 导出 PDF,或者生成一条带密码和有效期的分享链接。

简历这件事,本不该有会员墙。

站点:who.minims.cn 源码:github.com/cosolar/min...

自部署踩到坑、想要某套版式,或者只是想聊聊简历该怎么写,都欢迎在 GitHub 提 issue。

相关推荐
行走的陀螺仪2 小时前
【转型攻略】2026 年,后端 / 全栈工程师转 AI Agent 方向:能力地图、按周学习路线与面试要点
人工智能·面试·职场和发展
小蒜学长2 小时前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统
陈随易3 小时前
下载神器!Motrix 停更三年后重写回归
前端·后端·程序员
每天一道题3 小时前
CAP、Raft 与多数派:分布式系统如何达成一致?
分布式·后端·微服务
考研保研资料分享3 小时前
法学保研中国人民大学诉讼法:英语讨论、辩论与两校笔试
面试
前端的日常3 小时前
一个人+AI做情侣食谱小程序,0 费用的服务器
前端·后端
IT_陈寒4 小时前
Vue的v-for里用了个临时变量,页面直接挂了
前端·人工智能·后端
kyriewen4 小时前
我把 10 道面试题答案真跑了一遍:6 道是错的
前端·javascript·面试
ServBay5 小时前
本地模型已经跑起来了,Copilot Fusion 为什么还要联网?
后端·ai编程·github copilot