{"id":14989314,"url":"https://github.com/lx-gqg/onlyblog","last_synced_at":"2026-02-05T19:34:42.646Z","repository":{"id":191084608,"uuid":"683890378","full_name":"LX-GQG/onlyBlog","owner":"LX-GQG","description":"基于koa和sequelize 开发的result api 后台 ，使用bcryptjs对密码进行加密，并进行了权限控制，分配权限，根据权限进行路由拦截。  使用sequelize对数据库进行操作，jwt对token进行封装，log4js进行日志监控，https访问，文件上传，跨域","archived":false,"fork":false,"pushed_at":"2024-04-01T11:28:27.000Z","size":20184,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-26T15:47:56.048Z","etag":null,"topics":["koa","log4j","nodejs","rbac","sequelize"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LX-GQG.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-28T02:06:28.000Z","updated_at":"2024-11-14T08:09:22.000Z","dependencies_parsed_at":"2024-10-14T01:21:53.490Z","dependency_job_id":"d650a8db-75be-4f8f-b410-14c794b2895c","html_url":"https://github.com/LX-GQG/onlyBlog","commit_stats":{"total_commits":25,"total_committers":2,"mean_commits":12.5,"dds":"0.16000000000000003","last_synced_commit":"4cc3a758252de96de657574a7a6ae9e453c550b6"},"previous_names":["lx-gqg/onlyblog"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LX-GQG%2FonlyBlog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LX-GQG%2FonlyBlog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LX-GQG%2FonlyBlog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LX-GQG%2FonlyBlog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LX-GQG","download_url":"https://codeload.github.com/LX-GQG/onlyBlog/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235726305,"owners_count":19035830,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["koa","log4j","nodejs","rbac","sequelize"],"created_at":"2024-09-24T14:18:07.285Z","updated_at":"2026-02-05T19:34:42.608Z","avatar_url":"https://github.com/LX-GQG.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# onlyBlog\r\n使用node.js技术，基于koa和sequelize开发的result api后台 ，使用bcryptjs对密码进行加密，并进行了权限控制，分配权限，根据权限进行路由拦截。\r\n\r\n使用sequelize对数据库进行操作，jwt对token进行封装，log4js进行日志监控，https访问，文件上传，跨域，使用pm2进行进程守护，docker部署，使用cluster集群提高服务器效率，使用限流中间件，提高并发处理能力。\r\n\r\nKoa 框架做服务端 API 接口，只做了简单的基础，其余内容可以根据代码进行扩展\r\n\r\n访问地址 https://ad.gqgwr.cn 账号是lx 密码123456\r\n\r\n后台管理系统地址：https://github.com/LX-GQG/onlyBlogAdmin\r\n\r\n## 1.1 项目功能\r\n- 文章管理（包含文章评论，点赞等）\r\n- 标签管理\r\n- 用户管理\r\n- 权限管理\r\n    - 用户管理\r\n    - 用户组管理\r\n- 埋点统计 （是我个人网站的埋点数据，可以查看我网站的访问量，访问人数，访问设备，访问地区，访问来源，访问页面等）\r\n  - 埋点数据\r\n  - 埋点图表\r\n\r\n## 1.2 项目结构\r\n```\r\n├─app.js (入口文件)\r\n├─package-lock.json\r\n├─package.json\r\n├─README.md\r\n├─utils (工具库)\r\n|   ├─auth.js (登录权限的中间件)\r\n|   ├─log4.js (封装日志)\r\n|   ├─token.js (验证token jwt)\r\n|   └─utils.js (封装的函数，方法库)\r\n├─ssl(存放https证书)\r\n├─router (路由)\r\n|   ├─index.js (封装路由) \r\n|   └─router.js (路由列表)\r\n├─public (上传文件)\r\n├─models (业务逻辑映射成数据模型)\r\n├─middleware (中间件)\r\n|     ├─error.js (封装统一返回错误)\r\n|     ├─index.js (封装统一)\r\n|     └─response.js (封装统一返回内容)\r\n├─logs (日志记录)\r\n├─controllers (控制层，数据处理)\r\n├─config (配置)\r\n|   ├─config.js (数据库配置)\r\n|   ├─db.js (连接数据库)\r\n|   ├─dbContent.js (封装数据库方法)\r\n|   └─secret.js (密钥)\r\n├─Dockerfile.js (docker部署文件)\r\n```\r\n\r\n## 1.4 启动项目\r\n```\r\n# 进入项目根目录\r\n\r\ncd onlyBlog\r\n\r\n# 安装依赖包\r\n\r\nnpm install 或者 yarn install\r\n\r\n# 启动 Node.js Koa2 项目\r\n\r\nnpm run dev 或者 yarn dev\r\n```\r\n\r\n## 1.5 使用Docker部署\r\n```\r\n# 进入项目根目录\r\n\r\ncd onlyBlog\r\n# 构建镜像\r\ndocker build -t onlyblog .\r\n# 启动容器\r\n\r\ndocker run -d -p 3658:3658 onlyblog\r\n\r\n# 确认是否成功\r\ndocker ps -a\r\n```\r\n\r\napi接口文档地址：https://console-docs.apipost.cn/preview/6aabac7f4427a4ca/8a7c5e8c98f2b42a\r\n这里的接口可以使用 api.gqgwr.cn 直接调用\r\n\r\n本项目有权限控制，需登录，请求头上需要Authorization: Bearer + token才可以访问，Bearer和token需要用空格隔开。\r\n超级管理员拥有全部权限 \r\n账号：admin\r\n密码：123456\r\n\r\n端口号设置在根目录下的app.js文件中\r\n默认端口为3658，\r\n即可通过 https://localhost:3658/admin/xxx 调用后台接口(需要token，以及根据token的权限)\r\nhttps://localhost:3658/api/xxx 调用前台接口(目前只有登录接口，文章接口，后续会继续完善)\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flx-gqg%2Fonlyblog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flx-gqg%2Fonlyblog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flx-gqg%2Fonlyblog/lists"}