{"id":23661075,"url":"https://github.com/vvandk/kinit","last_synced_at":"2025-05-15T07:07:56.187Z","repository":{"id":63338794,"uuid":"549394967","full_name":"vvandk/kinit","owner":"vvandk","description":"FastAPI + vue3 前后端分离后台管理系统，包含PC端，微信小程序端。接口使用：FastAPI+Pydantic+SQLAlchemy 2.0+Mysql，PC 端使用：Vue3+Typescript+Vite+Element Plus，小程序使用：Uni-APP + uview ui。异步存储，RBAC 权限管理，定时任务，部门管理等功能。","archived":false,"fork":false,"pushed_at":"2025-03-25T01:36:44.000Z","size":14279,"stargazers_count":655,"open_issues_count":11,"forks_count":157,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-14T13:07:11.365Z","etag":null,"topics":["apscheduler","element-plus","fastapi","mongodb","mysq","redis","sqlalchemy","typescript","uniapp","vite","vue","vue3"],"latest_commit_sha":null,"homepage":"https://kinit.ktianc.top/","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vvandk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2022-10-11T05:52:51.000Z","updated_at":"2025-04-13T18:33:54.000Z","dependencies_parsed_at":"2023-02-16T08:01:52.738Z","dependency_job_id":"4f6fcf71-27bd-4105-9242-f1cc752d3ed0","html_url":"https://github.com/vvandk/kinit","commit_stats":null,"previous_names":[],"tags_count":75,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vvandk%2Fkinit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vvandk%2Fkinit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vvandk%2Fkinit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vvandk%2Fkinit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vvandk","download_url":"https://codeload.github.com/vvandk/kinit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254292042,"owners_count":22046426,"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":["apscheduler","element-plus","fastapi","mongodb","mysq","redis","sqlalchemy","typescript","uniapp","vite","vue","vue3"],"created_at":"2024-12-29T04:40:33.030Z","updated_at":"2025-05-15T07:07:51.178Z","avatar_url":"https://github.com/vvandk.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cp align=\"center\"\u003e\n        \u003cimg src=\"https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/logo.png\" height=\"150\" alt=\"logo\"/\u003e\n    \u003c/p\u003e\n\u003c/div\u003e\n\n\n\n\n## [关于]\n\n\u003cdiv align=\"center\"\u003e\u003ch3 align=\"center\"\u003eKinit 是一套开箱即用的中后台解决方案，可以作为新项目的启动模版！\u003c/h3\u003e\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\u003ch3 align=\"center\"\u003e前后端分离架构，开箱即用，紧随前沿技术！\u003c/h3\u003e\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\u003ch3 align=\"center\"\u003e高性能，高效率，高颜值，易扩展\u003c/h3\u003e\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\u003ch3 align=\"center\"\u003e长期维护，积极更新！\u003c/h3\u003e\u003c/div\u003e\n\n## 介绍\n\nKinit 是一套全部开源的快速开发平台，毫无保留给个人及企业免费使用。\n\n- 后端采用现代、快速（高性能） [FastAPI](https://fastapi.tiangolo.com/zh/) 异步框架 + 自动生成交互式API文档 + （强制类型约束）[Pydantic](https://docs.pydantic.dev/1.10/) + （高效率）[SQLAlchemy 2.0](https://docs.sqlalchemy.org/en/20/index.html)；\n- PC端采用 [vue-element-plus-admin](https://gitee.com/kailong110120130/vue-element-plus-admin) 、[Vue3](https://cn.vuejs.org/guide/introduction.html)、[Element Plus](https://element-plus.gitee.io/zh-CN/guide/design.html)、[TypeScript](https://www.tslang.cn/)等主流技术开发；\n- 移动端采用 [uni-app](https://uniapp.dcloud.net.cn/component/)，[Vue2](https://v2.cn.vuejs.org/v2/guide/)，[uView 2](https://www.uviewui.com/components/intro.html)为主要技术开发；\n- 后端加入 [Typer](https://typer.tiangolo.com/) 命令行应用，简单化数据初始化，数据表模型迁移等操作；\n- 后端新加入根据配置的 ORM 模型，自动生成 CRUD 代码；\n- 定时任务功能，采用 [APScheduler](https://github.com/agronholm/apscheduler) 定时任务框架 + [Redis](https://redis.io/)  消息队列 + [MongoDB](https://www.mongodb.com/) 持久存储；\n- 权限认证使用[（哈希）密码和 JWT Bearer 令牌的 OAuth2](https://fastapi.tiangolo.com/zh/tutorial/security/oauth2-jwt/)，支持多终端认证系统。\n- 支持加载动态权限菜单，多方式轻松权限控制，按钮级别权限控制。\n- 已加入常见的 [MySQL](https://www.mysql.com/) + [MongoDB](https://www.mongodb.com/) + [Redis](https://redis.io/)  数据库异步操作。\n- 支持 [docker-compose](https://docs.docker.com/compose/) 部署方式\n- 开箱即用的中后台解决方案，可以用来作为新项目的启动模版，也可用于学习参考。并且时刻关注着最新技术动向，尽可能的第一时间更新。\n- 与 [vue-element-plus-admin](https://gitee.com/kailong110120130/vue-element-plus-admin) 前端框架时刻保持同步更新。\n\n## 特别鸣谢\n\n[vue-element-plus-admin](https://gitee.com/kailong110120130/vue-element-plus-admin)：基于vue3、element-plus、typescript 的后台集成方案\n\n[RuoYi 若依官方网站](http://www.ruoyi.vip/)：RuoYi 是一个优秀的 Java 后台管理系统\n\n[django-vue-admin](https://gitee.com/liqianglog/django-vue-admin)：django-vue-admin 是一个优秀的基于 Django 开发后台管理系统\n\n[小诺开源技术 (xiaonuo.vip)](https://www.xiaonuo.vip/)：国内首个国密前后端分离快速开发平台\n\n## 微信群\n\n提供一个技术交流群，现在还没什么人哈哈哈哈哈，真心希望大家能够加入，积极讨论，因为本项目中还没有详细使用文档（一直在欠着，我也挺不好意思的），所以大家加入后，也可以很方便的一起讨论在使用中遇到各种问题，也可以提一些你想加入的功能，让我们更近一点，欢迎大家的加入。\n\n\n\n2024-4-25 目前群聊已经达到 200 人，只能通过邀请进群，不能再直接扫描群二维码进群，需要进群的可以先加我，备注进群，我就拉你进群。\n\n\u003cdiv align=\"center\"\u003e\n    \u003cp align=\"center\"\u003e\n        \u003cimg src=\"https://ktianc.oss-cn-beijing.aliyuncs.com/kinit/public/images/WechatIMG285.jpg\" height=\"500\" alt=\"logo\"/\u003e\n    \u003c/p\u003e\n\u003c/div\u003e\n\n\n\n\n\n\n\n\n## 在线体验\n\nPC端演示地址：https://kinit.ktianc.top\n\n微信小程序端演示：\n\n- 搜索：kinit\n- 扫码：\n\n\u003cdiv align=\"center\"\u003e\n    \u003cp align=\"center\"\u003e\n        \u003cimg src=\"https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/gh_5566dcf85bf0_860.jpg\" height=\"150\" alt=\"logo\"/\u003e\n    \u003c/p\u003e\n\u003c/div\u003e\n\n\n管理员账户：\n\n- 账号：15020221010\n- 密码：kinit2022\n\n测试账户：\n\n- 账号：15020240125\n- 密码：test\n\n## 接口 CURD 代码自动生成\n\n1. 目前只支持生成接口代码\n2. 目前只支持使用脚本方式运行，后续会更新到页面操作\n3. 代码是根据手动配置的 ORM 模型来生成的，支持参数同步，比如默认值，是否为空...\n\n脚本文件地址：`scripts/crud_generate/main.py`\n\n\n\n该功能首先需要手动创建出 ORM 模型，然后会根据 ORM 模型依次创建代码，包括如下代码：\n\n1. schema 序列化代码\n\n   schema 文件名称会使用设置的 en_name 名称，如果文件已经存在会先执行删除，再创建。\n\n   schema 代码内容生成完成后，同时会将新创建的 class 在 `__init__.py` 文件中导入。\n\n2. dal 数据操作代码\n\n   dal 文件名称会使用默认的 `crud.py` 文件名称，目前不支持自定义。\n\n   如果 dal 文件已经存在，并且已经有代码内容，那么会将新的模型 dal class 追加到文件最后，并会合并文件内导入的 module。\n\n3. param 请求参数代码\n\n   param 文件名取名方式与 schema 一致。\n\n   会创建出默认最简的 param class。\n\n4. view 视图代码\n\n   view 文件名称同样会使用默认的 `view.py` 文件名称，目前不支持自定义。\n\n   如果 view 文件已经存在，与 dal 执行操作一致。\n\n\n\n脚本中目前有两个方法：\n\n```python\nif __name__ == '__main__':\n    from apps.vadmin.auth.models import VadminUser\n\n    crud = CrudGenerate(VadminUser, \"用户\", \"user\")\n    # 只打印代码，不执行创建写入\n    crud.generate_codes()\n    # 创建并写入代码\n    crud.main()\n```\n\n目前不会去检测已有的代码，比如 `UserDal` 已经存在，还是会继续添加的。\n\nB站 视频演示：https://www.bilibili.com/video/BV19e411a7zP/\n\n## 源码地址\n\ngitee地址(主推)：https://gitee.com/ktianc/kinit\n\ngithub地址：https://github.com/vvandk/kinit\n\n## PC端内置功能\n\n- [x] 菜单管理：配置系统菜单，操作权限，按钮权限标识、后端接口权限等。\n\n- [x] 部门管理：支持无限层级部门配置。\n\n- [x] 角色管理：角色菜单权限，角色部门权限分配。\n\n- [x] 用户管理：用户是系统操作者，该功能主要完成系统用户配置。\n\n- [x] 个人主页：配置用户个人信息，密码修改等。\n\n- [x] 字典管理：对系统中经常使用的一些较为固定的数据进行维护。\n\n- [x] 文件上传：对接阿里云OSS与本地存储。\n\n- [x] 登录认证：目前支持用户使用手机号+密码登录方式，手机验证码登录方式。\n\n  说明：新建用户密码默认为手机号后六位；\n\n  说明：用户在第一次登录时，必须修改当前用户密码。\n\n- [x] 系统配置：对本系统环境信息进行动态配置\n\n  网站标题，LOGO，描述，ICO，备案号，底部内容，微信小程序信息，等等\n\n- [x] 用户分布：接入高德地图显示各地区用户分布情况\n\n- [x] 数据概览：提供两种数据统计展示模板，更直观的查看数据统计情况\n\n- [x] 智慧大屏：大屏展示`办公室空气质量实时检测`数据分析\n\n- [x] 登录日志：用户登录日志记录和查询。\n\n- [x] 操作日志：系统用户每次操作功能时的详细记录。\n\n- [x] 接口文档：提供自动生成的交互式 API 文档，与 ReDoc 文档\n\n- [x] 导入导出：灵活支持数据导入导出功能\n\n- [x] 已加入常见的`Redis`、`MySQL`、`MongoDB`数据库异步操作。\n\n- [x] 命令行操作：新加入 `Typer` 命令行应用，简单化数据初始化，数据表模型迁移。\n\n- [x] 定时任务：在线操作（添加、修改、删除)任务调度包含查看任务执行结果日志。\n\n## 移动端内置功能\n\n- [x] 登录认证：支持用户使用手机号+密码方式登录，微信手机号一键登录方式。\n\n  说明：新建用户密码默认为手机号后六位；\n\n  说明：用户在第一次登录时，必须修改当前用户密码。\n\n- [x] 导航栏：首页、我的、工作台\n\n- [x] 我的基础功能：编辑资料、头像修改、密码修改、常见问题、关于我们等\n\n##  前序准备\n\n### 后端技术\n\n- [Python3](https://www.python.org/downloads/windows/)：熟悉 python3 基础语法\n- [FastAPI](https://fastapi.tiangolo.com/zh/) - 熟悉后台接口 Web 框架\n- [SQLAlchemy 2.0](https://docs.sqlalchemy.org/en/20/index.html) - 数据数据库操作\n- [Typer](https://typer.tiangolo.com/) - 熟悉命令行工具的使用\n- [MySQL](https://www.mysql.com/) 和 [MongoDB](https://www.mongodb.com/) 和 [Redis](https://redis.io/)  - 熟悉数据存储数据库\n- [iP查询接口文档](https://user.ip138.com/ip/doc)：IP查询第三方服务，有1000次的免费次数\n\n### PC端\n\n- [node](https://gitee.com/link?target=http%3A%2F%2Fnodejs.org%2F) 和 [git](https://gitee.com/link?target=https%3A%2F%2Fgit-scm.com%2F) - 项目开发环境\n- [Vite](https://gitee.com/link?target=https%3A%2F%2Fvitejs.dev%2F) - 熟悉 vite 特性\n- [Vue3](https://gitee.com/link?target=https%3A%2F%2Fv3.vuejs.org%2F) - 熟悉 Vue 基础语法\n- [TypeScript](https://gitee.com/link?target=https%3A%2F%2Fwww.typescriptlang.org%2F) - 熟悉 `TypeScript` 基本语法\n- [Es6+](https://gitee.com/link?target=http%3A%2F%2Fes6.ruanyifeng.com%2F) - 熟悉 es6 基本语法\n- [Vue-Router-Next](https://gitee.com/link?target=https%3A%2F%2Fnext.router.vuejs.org%2F) - 熟悉 vue-router 基本使用\n- [Element-Plus](https://gitee.com/link?target=https%3A%2F%2Felement-plus.org%2F) - element-plus 基本使用\n- [vue3-json-viewer](https://gitee.com/isfive/vue3-json-viewer)：简单易用的json内容展示组件,适配vue3和vite。\n- [高德地图API (amap.com)](https://lbs.amap.com/api/jsapi-v2/guide/webcli/map-vue1)：地图 JSAPI 2.0 是高德开放平台免费提供的第四代 Web 地图渲染引擎。\n\n### 移动端\n\n- [uni-app](https://uniapp.dcloud.net.cn/component/) - 熟悉 uni-app 基本语法\n- [Vue2](https://v2.cn.vuejs.org/v2/guide/) - 熟悉 Vue 基础语法\n- [uView UI 2](https://www.uviewui.com/components/intro.html)：uView UI 组件的基本使用\n- [uni-read-pages](https://github.com/SilurianYang/uni-read-pages) ：自动读取 `pages.json` 所有配置。\n- [uni-simple-router](https://hhyang.cn/v2/start/quickstart.html) ：在uni-app中使用vue-router的方式进行跳转路由，路由拦截。\n\n### 定时任务\n\n- [Python3](https://www.python.org/downloads/windows/) -熟悉 python3 基础语法\n- [APScheduler](https://github.com/agronholm/apscheduler) - 熟悉定时任务框架\n- [MongoDB](https://www.mongodb.com/) 和 [Redis](https://redis.io/)  - 熟悉数据存储数据库\n\n## 安装和使用\n\n获取代码\n\n```\ngit clone https://gitee.com/ktianc/kinit.git\n```\n\n### 准备工作\n\n```\n后端依赖版本：\nPython == 3.10.x (其他版本均未测试)\n前端依赖版本：\nnodejs \u003e= 18.0 \u003c 19\npnpm \u003e= 8.1.0 \u003c 9\n数据库版本：\nMysql \u003e= 8.0 (8 以上未测试，以下版本未测试，postgresql 未测试，更换可能会涉及调整)\nMongoDB \u003e= 7.0.12 \u003c 8 (7 以上或以下版本均未测试)\nRedis (推荐使用最新稳定版)\n```\n\n### 后端\n\n1. 安装依赖\n\n   ```\n   cd kinit-api\n   \n   pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/\n   ```\n\n2. 修改项目环境配置\n\n   修改 `application/settings.py` 文件\n\n   ```python\n   # 安全警告: 不要在生产中打开调试运行!\n   DEBUG = True # 如果当前为开发环境则改为 True，如果为生产环境则改为 False\n   ```\n\n3. 修改项目数据库配置信息\n\n   在 `application/config` 目录中\n\n   - development.py：开发环境\n\n   - production.py：生产环境\n\n   ```python\n   # Mysql 数据库配置项\n   # 连接引擎官方文档：https://www.osgeo.cn/sqlalchemy/core/engines.html\n   # 数据库链接配置说明：mysql+asyncmy://数据库用户名:数据库密码@数据库地址:数据库端口/数据库名称\n   \n   SQLALCHEMY_DATABASE_URL = \"mysql+asyncmy://数据库用户名:数据库密码@数据库地址:数据库端口/数据库名称\"\n   SQLALCHEMY_DATABASE_TYPE = \"mysql\"\n   \n   \n   # Redis 数据库配置\n   REDIS_DB_ENABLE = True\n   REDIS_DB_URL = \"redis://:密码@地址:端口/数据库\"\n   \n   # MongoDB 数据库配置\n   MONGO_DB_ENABLE = True\n   MONGO_DB_NAME = \"数据库名称\"\n   MONGO_DB_URL = f\"mongodb://用户名:密码@地址:端口/?authSource={MONGO_DB_NAME}\"\n   \n   # 阿里云对象存储OSS配置\n   # 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。\n   # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，\n   # Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。\n   #  *  [accessKeyId] {String}：通过阿里云控制台创建的AccessKey。\n   #  *  [accessKeySecret] {String}：通过阿里云控制台创建的AccessSecret。\n   #  *  [bucket] {String}：通过控制台或PutBucket创建的bucket。\n   #  *  [endpoint] {String}：bucket所在的区域， 默认oss-cn-hangzhou。\n   ALIYUN_OSS = {\n       \"accessKeyId\": \"accessKeyId\",\n       \"accessKeySecret\": \"accessKeySecret\",\n       \"endpoint\": \"endpoint\",\n       \"bucket\": \"bucket\",\n       \"baseUrl\": \"baseUrl\"\n   }\n   \n   # 获取IP地址归属地\n   # 文档：https://user.ip138.com/ip/doc\n   IP_PARSE_ENABLE = True\n   IP_PARSE_TOKEN = \"IP_PARSE_TOKEN\"\n   ```\n\n4. 并在`alembic.ini`文件中配置数据库信息，用于数据库映射\n\n   ```python\n   # mysql+pymysql://数据库用户名:数据库密码@数据库地址:数据库端口/数据库名称\n   \n   [dev]\n   # 开发环境\n   version_locations = %(here)s/alembic/versions_dev\n   sqlalchemy.url = mysql+pymysql://root:123456@127.0.0.1/kinit\n   \n   \n   [pro]\n   # 生产环境\n   version_locations = %(here)s/alembic/versions_pro\n   sqlalchemy.url = mysql+pymysql://root:123456@127.0.0.1/kinit\n   ```\n\n5. 创建数据库\n\n   ```\n   mysql\u003e create database kinit;             # 创建数据库\n   mysql\u003e use kinit;                         # 使用已创建的数据库 \n   mysql\u003e set names utf8;                    # 设置编码\n   ```\n\n6. 初始化数据库数据\n\n   ```python\n   # 项目根目录下执行，需提前创建好数据库\n   # 会自动将模型迁移到数据库，并生成初始化数据\n   # 执行前请确认执行的环境与settings.py文件中配置的DEBUG一致\n   \n   # （生产环境）\n   python3 main.py init\n   \n   # （开发环境）\n   python3 main.py init --env dev\n   ```\n\n7. 修改项目基本配置信息\n\n   修改数据库表 - vadmin_system_settings 中的关键信息\n\n   ```\n   # 阿里云短信配置\n   sms_access_key\n   sms_access_key_secret\n   sms_sign_name_1\n   sms_template_code_1\n   sms_sign_name_2\n   sms_template_code_2\n   \n   # 高德地图配置\n   map_key\n   \n   # 微信小程序配置\n   wx_server_app_id\n   wx_server_app_secret\n   \n   # 邮箱配置\n   email_access\n   email_password\n   email_server\n   email_port\n   ```\n\n8. 启动\n\n   ```\n   # 进入项目根目录下执行\n   python3 main.py run\n   ```\n\n### PC端\n\n1. 安装依赖\n\n```\ncd kinit-admin\n\npnpm install\n```\n\n2. 运行\n\n```\npnpm run dev\n```\n\n3. 打包\n\n```\npnpm run build:pro\n```\n\n### 定时任务\n\n1. 安装依赖\n\n   ```\n   # 安装依赖库\n   pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/\n   \n   # 第三方源：\n   1. 阿里源： https://mirrors.aliyun.com/pypi/simple/\n   ```\n\n2. 修改项目数据库配置信息\n\n   在 `application/config` 目录中\n\n   - development.py：开发环境\n\n   - production.py：生产环境\n\n   ```python\n   # MongoDB 数据库配置\n   # 与接口是同一个数据库\n   MONGO_DB_NAME = \"数据库名称\"\n   MONGO_DB_URL = f\"mongodb://用户名:密码@地址:端口/?authSource={MONGO_DB_NAME}\"\n   \n   \n   # Redis 数据库配置\n   # 与接口是同一个数据库\n   REDIS_DB_URL = \"redis://:密码@地址:端口/数据库名称\"\n   ```\n   \n3. 启动\n\n   ```\n   python3 main.py\n   ```\n\n\n### 访问项目\n\n- 访问地址：http://localhost:5000 (默认为此地址，如有修改请按照配置文件)\n- 账号：`15020221010` 密码：`kinit2022`\n- 接口地址：http://localhost:9000/docs (默认为此地址，如有修改请按照配置文件)\n\n## Docker Compose 生产环境部署\n\n### 准备工作\n\n1. 获取代码\n\n   ```\n   git clone https://gitee.com/ktianc/kinit.git\n   ```\n\n2. 修改项目环境配置：\n\n   1. 修改 API 端：\n\n      文件路径为：`kinit-api/application/settings.py`\n\n      ```python\n      # 安全警告: 不要在生产中打开调试运行!\n      DEBUG = False # 生产环境应该改为 False\n      ```\n\n   2. 修改定时任务端：\n\n      文件路径为：`kinit-task/application/settings.py`\n\n      ```python\n      # 安全警告: 不要在生产中打开调试运行!\n      DEBUG = False # 生产环境应该改为 False\n      ```\n\n3. （**如果没有安装数据库则不需要这一操作**）如果已有 Mysql 或者 Redis 或者 MongoDB 数据库，请执行以下操作：\n\n   请先在对应数据库中创建用户名以及数据库，并修改以下数据库连接改为已有的数据库连接\n\n   1. 修改 API 端配置文件：\n\n      文件路径为：`kinit-api/application/config/production.py`\n\n      ```python\n      # Mysql 数据库配置项\n      # 连接引擎官方文档：https://www.osgeo.cn/sqlalchemy/core/engines.html\n      # 数据库连接配置说明：mysql+asyncmy://数据库用户名:数据库密码@数据库地址:数据库端口/数据库名称\n      SQLALCHEMY_DATABASE_URL = \"mysql+asyncmy://root:123456@177.8.0.7:3306/kinit\"\n      \n      # Redis 数据库配置\n      # 格式：\"redis://:密码@地址:端口/数据库名称\"\n      REDIS_DB_ENABLE = True\n      REDIS_DB_URL = \"redis://:123456@177.8.0.5:6379/1\"\n      \n      # MongoDB 数据库配置\n      # 格式：mongodb://用户名:密码@地址:端口/?authSource=数据库名称\n      MONGO_DB_ENABLE = True\n      MONGO_DB_NAME = \"kinit\"\n      MONGO_DB_URL = f\"mongodb://kinit:123456@177.8.0.6:27017/?authSource={MONGO_DB_NAME}\"\n      ```\n      \n   2. 修改定时任务配置文件\n\n      文件路径为：`kinit-task/application/config/production.py`\n\n      ```python\n      # Redis 数据库配置\n      # 与接口是同一个数据库\n      # 格式：\"redis://:密码@地址:端口/数据库名称\"\n      REDIS_DB_ENABLE = True\n      REDIS_DB_URL = \"redis://:123456@177.8.0.5:6379/1\"\n      \n      # MongoDB 数据库配置\n      # 与接口是同一个数据库\n      # 格式：mongodb://用户名:密码@地址:端口/?authSource=数据库名称\n      MONGO_DB_ENABLE = True\n      MONGO_DB_NAME = \"kinit\"\n      MONGO_DB_URL = f\"mongodb://kinit:123456@177.8.0.6:27017/?authSource={MONGO_DB_NAME}\"\n      ```\n      \n   3. 将已有的数据库在 `docker-compose.yml` 文件中注释\n\n4. 配置阿里云 OSS 与 IP 解析接口地址（可选）\n\n   文件路径：`kinit-api/application/config/production.py`\n\n   ```python\n   # 阿里云对象存储OSS配置\n   # 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。\n   # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，\n   # Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。\n   #  *  [accessKeyId] {String}：通过阿里云控制台创建的AccessKey。\n   #  *  [accessKeySecret] {String}：通过阿里云控制台创建的AccessSecret。\n   #  *  [bucket] {String}：通过控制台或PutBucket创建的bucket。\n   #  *  [endpoint] {String}：bucket所在的区域， 默认oss-cn-hangzhou。\n   ALIYUN_OSS = {\n       \"accessKeyId\": \"accessKeyId\",\n       \"accessKeySecret\": \"accessKeySecret\",\n       \"endpoint\": \"endpoint\",\n       \"bucket\": \"bucket\",\n       \"baseUrl\": \"baseUrl\"\n   }\n   \n   # 获取IP地址归属地\n   # 文档：https://user.ip138.com/ip/doc\n   IP_PARSE_ENABLE = False\n   IP_PARSE_TOKEN = \"IP_PARSE_TOKEN\"\n   ```\n\n5. 前端项目打包：\n\n   ```shell\n   cd kinit-admin\n   \n   # 安装依赖包\n   pnpm install\n   \n   # 打包\n   pnpm run build:pro\n   ```\n\n### 启动并初始化项目\n\n```shell\n# 启动并创建所有容器\ndocker-compose up -d\n\n# 初始化数据\ndocker-compose exec kinit-api python3 main.py init\n\n# 重启所有容器\ndocker-compose restart\n\n\n# 其他命令：\n\n# 停止所有容器\ndocker-compose down\n\n# 查看所有容器状态\ndocker-compose ps -a\n```\n\n### 访问项目\n\n- 访问地址：http://localhost (默认为此地址，如有修改请按照配置文件)\n- 账号：`15020221010` 密码：`kinit2022`\n- 接口地址：http://localhost:9000/docs (默认为此地址，如有修改请按照配置文件)\n\n## 如何贡献\n\n你可以[提一个 issue](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Fkailong321200875%2Fvue-element-plus-admin%2Fissues%2Fnew) 或者提交一个 Pull Request。\n\n**Pull Request:**\n\n1. Fork 代码\n2. 创建自己的分支: `git checkout -b feat/xxxx`\n3. 提交你的修改: `git commit -am 'feat(function): add xxxxx'`\n4. 推送您的分支: `git push origin feat/xxxx`\n5. 提交 `pull request`\n\n## 浏览器支持\n\n本地开发推荐使用 `Chrome 80+` 浏览器\n\n支持现代浏览器, 不支持 IE\n\n| IE          | Edge            | Firefox         | Chrome          | Safari          |\n| ----------- | --------------- | --------------- | --------------- | --------------- |\n| not support | last 2 versions | last 2 versions | last 2 versions | last 2 versions |\n\n## 许可证\n\n[MIT](https://gitee.com/kailong110120130/vue-element-plus-admin/blob/master/LICENSE)\n\n## PC端演示图\n\n![image-20221010214526082](https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1687232679892.jpg)\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695373476/1695373476b028a6f9.jpg)\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695373476/16953734768af98563.jpg)\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695373476/169537347630c0e225.jpg)\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695373476/1695373476da1a414f.jpg)\n\n![1688392266702](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695373475/1695373475fca1d7b8.jpg)\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695373475/16953734756617d25d.jpg)\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695373477/169537347735257fe5.jpg)\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695373478/1695373478511f21e3.jpg)\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695373477/16953734770decc360.jpg)\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695373477/169537347735257fe5.jpg)\n\n![image-20221010214526082](https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1687233000595-10.jpg)\n\n## 另一种布局演示图\n\n图1\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695375057/1695375057ebef7bd9.jpg)\n\n\n\n\n\n图2\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695375057/1695375057abf3dcf6.jpg)\n\n\n\n\n\n图3\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695375057/16953750571f2f9f7e.jpg)\n\n\n\n\n\n图4\n\n![image-20221010214526082](https://ktianc.oss-cn-beijing.aliyuncs.com/resource/images/1695375058/1695375058542fcf76.jpg)\n\n\n\n## 微信小程序端演示图\n\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg src=\"https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1670077811740.jpg\"/\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1670077826257.jpg\"/\u003e\u003c/td\u003e\n\t\t\u003ctd\u003e\u003cimg src=\"https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1670077835024.jpg\"/\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\t\u003ctr\u003e\n        \u003ctd\u003e\u003cimg src=\"https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1670077849753.jpg\"/\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1670077860987.jpg\"/\u003e\u003c/td\u003e\n\t\t\u003ctd\u003e\u003cimg src=\"https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1670077870240.jpg\"/\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvvandk%2Fkinit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvvandk%2Fkinit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvvandk%2Fkinit/lists"}