静态地图与简历生成平台

一个基于Node.js/TypeScript的工具包,提供静态地图生成API和简历构建套件,支持多模板导出和持久化存储。

  • by VladimirTechLead
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 VladimirTechLead/wix-mcp-pdf-tools

使用说明

静态地图和简历生成器平台

强大的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用于容器化运行

快速开始

  1. 安装依赖项

    npm run install:all
    

    安装根包+ client/ 和 panel/ 工作空间。

  2. 配置环境

    • 复制 .env.example → .env.
    • 提供数据库凭据、磁贴提供程序密钥和恢复配置(请参阅 环境).
  3. 在开发中运行服务

    npm run dev
    
    • API开启 http://localhost:3000
    • 上的恢复/地图客户端 http://localhost:5173 (套 VITE_DEV_SERVER_PORT 更改)
    • 上的面板API/Admin http://localhost:4100 和 http://localhost:4173
  4. 构建和运行

    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.


贡献

  1. 分叉存储库并创建功能分支。
  2. 进行更改和匹配测试。
  3. 更新 CHANGELOG.md 和 CODEx_NOTES.md 每一个变化都有其背景。
  4. 跑 npx jest.
  5. 打开一个pull请求,描述动机、实施和测试策略。

欢迎提交错误报告、功能请求和文档修复。


许可证

GPL-3.0或更高版本。看 LICENSE 了解全部细节。