# PrimeEdge Admin **Repository Path**: kok7/primeedge-admin ## Basic Information - **Project Name**: PrimeEdge Admin - **Description**: PrimeEdge主题管理后台 - **Primary Language**: NodeJS - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-24 - **Last Updated**: 2026-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PrimeEdge Admin - Hugo 博客后台管理系统 基于 EdgeOne Pages Functions 的全栈博客管理后台,通过 Gitee API 直接管理 Hugo 博客仓库内容。无需数据库,前后端一体化部署,支持深色/浅色主题、响应式布局、Markdown 实时预览编辑。 ## 功能概览 ### 内容管理 - **文章管理** - 创建/编辑/删除文章,支持分类、标签、首图、摘要,Markdown 编辑器 + 实时预览 - **笔记文章** - 轻量笔记发布,支持分类、标签、目录开关,搜索过滤 - **投资笔记** - 盘前计划(关注列表、持仓计划)+ 盘后复盘(收益率、交易记录、新闻、经验总结),Markdown 编辑器 - **好物推荐** - 好物管理,支持分类筛选、精选标记,Markdown 内容编辑 - **文档管理** - 多文档树形结构管理,左侧导航 + 右侧编辑器,支持拖拽排序 - **相册管理** - 照片上传与管理,支持又拍云图床 - **友链管理** - 友情链接增删改查 - **书签管理** - 分类书签管理,JSON 数据格式 - **分类管理** - 统一分类管理,支持按模块(文章/笔记/好物)分区,分类重命名自动同步关联文章 ### 系统功能 - **仪表盘** - 各模块数量统计 + 最近 Git 提交记录 + 版本检测 - **版本检测** - 自动检测后台程序和博客主题是否有新版本(通过 Gitee 仓库 `static/version.json` 比对) - **配置编辑** - 在线编辑 Hugo `config.toml` 配置文件 - **关于页面** - 编辑博客关于页面 - **留言板** - 编辑留言板页面 - **系统设置** - Gitee 仓库配置、连接测试、缓存管理 - **深色/浅色主题** - 一键切换,自动记忆用户偏好 - **响应式布局** - 适配 PC、平板、手机三端 ### 编辑器特性 - Markdown 工具栏(H1-H3、粗体、斜体、删除线、链接、图片、代码、引用、列表、分割线) - 实时预览 / 分屏模式 / 纯编辑模式切换 - 全屏编辑模式(ESC 退出) - 手机端优化编辑区域,最小高度 50vh - 文档编辑器支持 H1 标题按钮 ### 安全特性 - JWT Token 认证 - 登录失败锁定(5次失败后锁定15分钟) - 密码哈希存储 - 环境变量管理敏感信息 ## 技术栈 | 层级 | 技术 | |------|------| | 前端 | 原生 JavaScript + CSS Variables + Layui 2.13.5 布局 | | 后端 | EdgeOne Pages Functions (Serverless) | | 存储 | EdgeOne KV (缓存 + 设置持久化) | | Git | Gitee API v5 (仓库文件 CRUD) | | 图床 | 又拍云 Upyun (可选) | | 部署 | 腾讯云 EdgeOne Pages | ## 项目结构 ``` primeedge-admin/ ├── functions/ # EdgeOne Pages 边缘函数 │ ├── [[default]].js # 主路由(所有 API + 页面渲染) │ └── index.js # 入口重定向 ├── public/ # 静态资源 │ ├── css/ │ │ └── style.css # 全局样式(CSS Variables + 响应式) │ └── js/ │ ├── api.js # API 封装 + Markdown 编辑器 │ ├── app.js # 主应用路由 + 导航 + 主题切换 │ ├── dashboard.js # 仪表盘 + 版本检测 │ ├── posts.js # 文章管理 │ ├── notes.js # 笔记管理 │ ├── investing.js # 投资笔记 │ ├── goodthings.js # 好物推荐 │ ├── docs.js # 文档管理 │ ├── photos.js # 相册管理 │ ├── links.js # 友链管理 │ ├── bookmarks.js # 书签管理 │ ├── categories.js # 分类管理 │ ├── about.js # 关于页面 │ ├── comments.js # 留言板 │ ├── config.js # 配置编辑 │ └── settings.js # 系统设置 ├── _modules/ # 模块化参考代码(未使用) ├── edgeone.json # EdgeOne Pages 配置(KV 绑定) ├── .env.example # 环境变量示例 └── README.md ``` ## 部署指南 ### 前置要求 - 腾讯云 EdgeOne Pages 账号 - Gitee 账号 + 私人访问令牌(需 repo 权限) - Hugo 博客仓库(托管在 Gitee) ### 1. 准备仓库 ```bash git clone <本项目地址> cd primeedge-admin ``` ### 2. 部署到 EdgeOne Pages 1. 登录 [EdgeOne Pages 控制台](https://console.cloud.tencent.com/edgeone/pages) 2. 新建项目 → 导入 Git 仓库 3. 部署配置: - **构建命令**: 留空 - **输出目录**: `public` - **Functions 目录**: `functions` 4. 添加 KV 命名空间绑定:名称为 `ADMIN_KV` ### 3. 环境变量配置 在 EdgeOne Pages 控制台 → 项目设置 → 环境变量中添加: | 变量名 | 必填 | 说明 | |--------|------|------| | `ADMIN_PASSWORD` | 是 | 后台登录密码 | | `JWT_SECRET` | 是 | JWT 签名密钥(建议 `openssl rand -base64 32` 生成) | | `UPYUN_BUCKET` | 否 | 又拍云服务名(图片上传需要) | | `UPYUN_OPERATOR` | 否 | 又拍云操作员 | | `UPYUN_PASSWORD` | 否 | 又拍云操作员密码 | ### 4. 首次使用 1. 访问部署后的域名(如 `https://your-project.edgeone.cool/`) 2. 输入 `ADMIN_PASSWORD` 登录 3. 进入「系统设置」配置 Gitee 仓库信息: - **Gitee Token** - 在 Gitee → 设置 → 私人令牌 中生成 - **仓库所有者** - 你的 Gitee 用户名 - **仓库名称** - Hugo 博客仓库名 4. 点击「测试连接」验证配置 5. 保存设置后即可开始管理博客内容 ### 5. 版本检测配置 在 Hugo 博客仓库的 `static/` 目录下创建 `version.json`: ```json { "theme": "1.0.0", "admin": "1.0.0" } ``` 部署博客后,后台首页会自动读取该文件并与内置版本号进行比对,提示是否需要更新。 ## 数据存储说明 本系统不使用传统数据库,数据分布如下: | 数据类型 | 存储位置 | 说明 | |----------|----------|------| | 文章/笔记/好物等内容 | Gitee 仓库 Markdown 文件 | Hugo 标准 front matter 格式 | | 系统设置 | EdgeOne KV (`gitee_settings`) | Gitee Token、仓库信息 | | 列表缓存 | EdgeOne KV (`cache_*`) | 文件列表元数据缓存,避免频繁 API 调用 | | 登录状态 | 浏览器 localStorage | JWT Token | | 主题偏好 | 浏览器 localStorage | 深色/浅色模式 | ## 缓存策略 - 列表数据首次加载时全量扫描并存入 KV - 后续操作(新增/修改/删除)自动增量更新缓存 - 支持手动刷新缓存(设置页面) - 全量扫描按钮用于数据异常时重建缓存 ## API 路由 所有 API 均在 `/api/` 路径下,需携带 JWT Token(`Authorization: Bearer `): | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/auth/login` | 登录 | | GET | `/api/auth/verify` | 验证 Token | | GET | `/api/version` | 版本检测 | | GET | `/api/dashboard` | 仪表盘数据 | | GET/PUT | `/api/settings` | 系统设置 | | GET/POST/PUT/DELETE | `/api/posts[/:path]` | 文章 CRUD | | GET/POST/PUT/DELETE | `/api/notes[/:path]` | 笔记 CRUD | | GET/POST/PUT/DELETE | `/api/investing[/:path]` | 投资笔记 CRUD | | GET/POST/PUT/DELETE | `/api/goodthings[/:path]` | 好物 CRUD | | GET/POST/PUT/DELETE | `/api/categories[/:path]` | 分类 CRUD | | GET/PUT | `/api/bookmarks` | 书签管理 | | * | `/api/docs/*` | 文档管理 | | * | `/api/photos/*` | 相册管理 | | * | `/api/links/*` | 友链管理 | | GET/PUT | `/api/about` | 关于页面 | | GET/PUT | `/api/comments` | 留言板 | | GET/PUT | `/api/config` | 配置文件 | | POST/GET | `/api/scan` | 全量扫描 | | POST | `/api/{module}/refresh` | 刷新缓存 | ## 许可证 MIT