# opentoolmap **Repository Path**: self-testing-oxchen/opentoolmap ## Basic Information - **Project Name**: opentoolmap - **Description**: opentoolmap - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-13 - **Last Updated**: 2026-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🧰 OpenToolMap 开源工具展示平台 — 展示你的开源项目,提供多渠道下载与 Markdown 操作指南。 ## 功能特性 - **工具展示首页** — 卡片式网格布局,支持按名称、描述、标签搜索 - **工具详情页** — 多渠道下载入口(GitHub / Windows / macOS / npm / Docker 等)+ Markdown 操作指南渲染 - **后台管理** — JWT 登录认证,工具增删改查,动态编辑下载渠道 - **深色/浅色主题** — 一键切换,自动记忆偏好 - **Docker 一键部署** — docker-compose 编排 Nginx + Node + MongoDB ## 技术栈 | 层级 | 技术 | |------|------| | 前端 | Vue 3 (Composition API) · Vue Router 4 · Vite 5 · Axios · marked | | 后端 | Node.js · Express 4 · Mongoose · jsonwebtoken | | 数据库 | MongoDB 7 | | 部署 | Docker · docker-compose · Nginx · MongoDB 7 (bitnami) | ## 快速开始 ### 本地开发 ```bash # 1. 安装依赖 cd server && npm install && cd ../client && npm install # 2. 启动后端 (端口 3000,需要本地 MongoDB 运行在 27017) cd server && npm start # 3. 启动前端 (端口 5173,自动代理 /api -> 3000) cd client && npm run dev ``` ### Docker 部署 ```bash # 构建前端 cd client && npm run build # 启动全部服务(前端 + 后端 + MongoDB) docker compose up -d --build ``` 访问 `http://localhost:12345` 即可使用。 > **数据持久化**:MongoDB 数据存储在 `./mongo-data` 本地目录(bind mount),`docker compose down` 不会丢失数据。bitnami/mongodb 镜像要求目录归属 UID 1001,首次启动如遇权限错误,运行: > ```bash > docker run --rm -v $(pwd)/mongo-data:/data alpine chown -R 1001:1001 /data > ``` > **后端重试**:`app.js` 内置 30 次重试逻辑(每 2 秒),MongoDB 启动慢时后端不会崩溃。 ## 默认账号 | 字段 | 值 | |------|----| | 用户名 | `admin` | | 密码 | `admin123` | > 首次启动后端会自动 seed 示例数据(3 个工具 + admin 用户)。 ## API 接口 | Method | Path | Auth | Description | |--------|------|------|-------------| | POST | `/api/login` | ✗ | 登录,返回 JWT | | GET | `/api/tools` | ✗ | 获取所有工具 | | GET | `/api/tools/:id` | ✗ | 获取单个工具 | | POST | `/api/tools` | ✓ | 创建工具 | | PUT | `/api/tools/:id` | ✓ | 更新工具 | | DELETE | `/api/tools/:id` | ✓ | 删除工具 | 认证头:`Authorization: Bearer ` ## 项目结构 ``` opentoolmap/ ├── server/ │ ├── app.js # Express 主服务 (含 MongoDB 重试逻辑) │ └── models/ │ ├── Tool.js # 工具模型 │ └── User.js # 用户模型 ├── client/ │ ├── src/ │ │ ├── views/ # 页面:首页、详情、登录、后台 │ │ ├── components/ # 组件:工具卡片 │ │ ├── api/index.js # Axios 封装 │ │ └── router/index.js # 路由 │ ├── public/ # 静态资源 (logo 等) │ ├── Dockerfile # Nginx 镜像 │ └── nginx.conf # Nginx 配置 ├── docker-compose.yml # 三服务编排 (backend + frontend + mongo) ├── mongo-data/ # MongoDB 数据持久化 (bind mount, gitignore) └── CHANGELOG.md ``` ## 环境变量 | 变量 | 默认值 | 说明 | |------|--------|------| | `MONGO_URI` | `mongodb://localhost:27017/opentoolmap` | MongoDB 连接串 | | `JWT_SECRET` | `opentoolmap-secret-change-in-production` | JWT 签名密钥 | ## 版本历史 详见 [CHANGELOG.md](./CHANGELOG.md) ## License MIT