静态地图和简历生成器平台
强大的Node.js/TypeScript工具包,它公开了:
- 用于生成静态地图图像(标记、多段线、多边形、圆、标签、平铺缓存和速率限制)的Express API;
- 简历工作流程(从PDF导入、技能收获、多模板导出、持久简历状态);
- React/Vite客户端加上管理面板,用于探索和管理为这两种体验提供动力的数据。
这个存储库是一个活的monorepo。后端、前端、Prisma模式、Docker设置和文档一起发展,因此每个功能都附带了匹配的工具、测试和指导。
______________________________________________________________________
目录
______________________________________________________________________
亮点
- 静态地图渲染API –将光栅图块渲染为具有丰富覆盖和内置图像缓存的PNG。
- 简历构建器套件 –从URL或粘贴的文本中收集技能,通过以下方式解析现有的PDF
pdftotext,并导出抛光模板(现代、极简、高管、日出、简历、闪亮)。 - 持续恢复状态 –Prisma支持的存储使技能、语言、爱好、经验和教育在设备之间保持同步。
- 管理面板 –从专注的React仪表板管理技能/类别。
- 严格的验证和消毒 -控制器对每个字段进行标准化和封顶,以保持有效载荷的可预测性。
- 综合测试 Jest套件涵盖控制器、路由、中间件、集成、Prisma和实用程序。
- Docker优先 –通过轻量级容器运送API、面板和文档。
______________________________________________________________________
仓库的规划
| 路径 | 描述 |
|---|---|
src/ | Express API(静态地图、简历生成器、技能导入、实用程序)。 |
client/ | Vite+React体验公开演示和简历生成器。 |
panel/ | 管理API和管理类别/技能的UI。 |
__tests__/ | Jest测试套件(单元、集成、路由、控制器)。 |
prisma/ | Prisma模式和SQL迁移。 |
docs/ | Docusaurus驱动的文档网站。 |
docker/ | 编写定义和部署助手。 |
scripts/ | 实用程序脚本(安装、迁移等)。 |
______________________________________________________________________
需求
- Node.js 20+
- npm 10+
- PostgreSQL 15+(本地或通过Docker)
pdftotext(Poppler)恢复进口- 可选:Docker/Docker Compose用于容器化运行
______________________________________________________________________
快速开始
- 安装依赖项
npm run install:all安装根包+ client/ 和 panel/ 工作空间。
- 配置环境
- 复制 .env.example → .env. - 提供数据库凭据、磁贴提供程序密钥和恢复配置(请参阅 环境).
- 在开发中运行服务
npm run dev- API开启 http://localhost:3000 - 上的恢复/地图客户端 http://localhost:5173 (套 VITE_DEV_SERVER_PORT 更改) - 上的面板API/Admin http://localhost:4100 和 http://localhost:4173
- 构建和运行
npm run build # builds server + client bundles
npm start # serves the compiled API (dist/server.cjs)______________________________________________________________________
脚本
| 命令 | 描述 |
|---|---|
npm run dev | 同时运行API、客户端、面板API和面板管理员。 |
npm run dev:api / dev:client / dev:panel | 启动单个堆栈。 |
npm run prisma:generate | 在架构更改后重建Prisma客户端。 |
npm run prisma:migrate | 在本地应用迁移(prisma migrate dev). |
npm run prisma:deploy | 在生产环境中应用迁移。 |
npm run install:all | 跨嵌套包安装依赖项。 |
npm test / npx jest | 执行Jest套件(有或没有覆盖)。 |
npm run format | 通过Prettier格式化代码库。 |
______________________________________________________________________
测试
在提交更改之前,始终运行测试:
npx jest个人套房可以直接运行:
npx jest __tests__/controllers/resumeState.controller.test.ts
npx jest __tests__/controllers/skills.controller.test.ts --watch测试线束支持环境切换,例如 SHOW_TEST_ERRORS=true 在需要时显示详细日志。
______________________________________________________________________
关键服务
静态映射API
POST /api/maps/static
- 接受描述大小、缩放、中心、底图和覆盖的JSON。
- 支持自定义磁贴服务器,并添加了每个IP的速率限制。
- 磁贴被缓存以尽量减少提供者调用;渲染图像被缓存以供重复请求。
简历生成器API
/api/resume/state–加载/保存当前简历,对所有嵌套集合进行标准化。/api/resume/skills–从URL、粘贴文本或PDF导入中获取策划的技能。/api/resume/parse–将上传的PDF转换为结构化数据(需要pdftotext).
管理面板
- CRUD用于技能类别和技能
panel/api. - React管理用户界面
panel/admin用Vite建造;可共享组件位于公共客户端旁边。
______________________________________________________________________
环境
整个堆栈中使用的关键变量(请参见 .env 完整列表):
| 变量 | 目的 |
|---|---|
DATABASE_URL | Prisma的PostgreSQL连接字符串。 |
TILE_USER_AGENT | 请求图块/技能源时自定义UA标头。 |
STATICMAP_TILE_URL / STATICMAP_ATTRIBUTION | 默认磁贴源元数据。 |
RESUME_STORAGE_BUCKET (可选) | 生成资产的外部存储。 |
CORS_ALLOW_ORIGINS | API信任的逗号分隔的来源。 |
LOG_LEVEL | 控制API日志详细程度。 |
______________________________________________________________________
文档
- Markdown源代码位于
docs/. - 在本地构建:
npm install --prefix docs
npm run start --prefix docs- 生产文档通过中配置的CI工作流发布
docs/docusaurus.config.ts.
有关分步调试、分析和工作流说明,请阅读 DEBUG_GUIDE.md 和 CODEx_NOTES.md.
______________________________________________________________________
贡献
- 分叉存储库并创建功能分支。
- 进行更改和匹配测试。
- 更新
CHANGELOG.md和CODEx_NOTES.md每一个变化都有其背景。 - 跑
npx jest. - 打开一个pull请求,描述动机、实施和测试策略。
欢迎提交错误报告、功能请求和文档修复。
______________________________________________________________________
许可证
GPL-3.0或更高版本。看 LICENSE 了解全部细节。
