Coder Social home page Coder Social logo

sshj1 / kinit Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vvandk/kinit

0.0 0.0 0.0 12.8 MB

FastAPI + Vue 3 frontend and backend separated admin system. Vue 3 + TypeScript, WeChat (uni-app). API (FastAPI + SQLAlchemy 2.0), asynchronous storage (Mysql 8.0, Redis, MongoDB).

Home Page: https://kinit.ktianc.top/

License: MIT License

Python 34.65% TypeScript 14.40% Handlebars 0.03% Mako 0.02% Vue 49.94% Dockerfile 0.02% SCSS 0.94%

kinit's Introduction

logo

[关于]

Kinit 是一套开箱即用的中后台解决方案,可以作为新项目的启动模版!

前后端分离架构,开箱即用,紧随前沿技术!

高性能,高效率,高颜值,易扩展

长期维护,积极更新!

介绍

Kinit 是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。

特别鸣谢

vue-element-plus-admin:基于vue3、element-plus、typescript 的后台集成方案

RuoYi 若依官方网站:RuoYi 是一个优秀的 Java 后台管理系统

django-vue-admin:django-vue-admin 是一个优秀的基于 Django 开发后台管理系统

小诺开源技术 (xiaonuo.vip):国内首个国密前后端分离快速开发平台

在线体验

PC端演示地址:https://kinit.ktianc.top

微信小程序端演示:

  • 搜索:kinit
  • 扫码:

logo

  • 账号:15020221010
  • 密码:kinit2022

源码地址

gitee地址(主推):https://gitee.com/ktianc/kinit

github地址:https://github.com/vvandk/kinit

PC端内置功能

  • 菜单管理:配置系统菜单,操作权限,按钮权限标识、后端接口权限等。

  • 角色管理:角色菜单权限分配。

  • 用户管理:用户是系统操作者,该功能主要完成系统用户配置。

  • 个人主页:配置用户个人信息,密码修改等。

  • 字典管理:对系统中经常使用的一些较为固定的数据进行维护。

  • 文件上传:对接阿里云OSS与本地存储。

  • 登录认证:目前支持用户使用手机号+密码登录方式,手机验证码登录方式。

    说明:新建用户密码默认为手机号后六位;

    说明:用户在第一次登录时,必须修改当前用户密码。

  • 系统配置:对本系统环境信息进行动态配置

    网站标题,LOGO,描述,ICO,备案号,底部内容,微信小程序信息,等等

  • 用户分布:接入高德地图显示各地区用户分布情况

  • 数据概览:提供两种数据统计展示模板,更直观的查看数据统计情况

  • 智慧大屏:大屏展示办公室空气质量实时检测数据分析

  • 登录日志:用户登录日志记录和查询。

  • 操作日志:系统用户每次操作功能时的详细记录。

  • 接口文档:提供自动生成的交互式 API 文档,与 ReDoc 文档

  • 导入导出:灵活支持数据导入导出功能

  • 已加入常见的RedisMySQLMongoDB数据库异步操作。

  • 命令行操作:新加入 Typer 命令行应用,简单化数据初始化,数据表模型迁移。

  • 定时任务:在线操作(添加、修改、删除)任务调度包含查看任务执行结果日志。

移动端内置功能

  • 登录认证:支持用户使用手机号+密码方式登录,微信手机号一键登录方式。

    说明:新建用户密码默认为手机号后六位;

    说明:用户在第一次登录时,必须修改当前用户密码。

  • 导航栏:首页、我的、工作台

  • 我的基础功能:编辑资料、头像修改、密码修改、常见问题、关于我们等

前序准备

后端技术

PC端

移动端

  • uni-app - 熟悉 uni-app 基本语法
  • Vue2 - 熟悉 Vue 基础语法
  • uView UI 2:uView UI 组件的基本使用
  • uni-read-pages :自动读取 pages.json 所有配置。
  • uni-simple-router :在uni-app中使用vue-router的方式进行跳转路由,路由拦截。

定时任务

安装和使用

获取代码

git clone https://gitee.com/ktianc/kinit.git

准备工作

Python == 3.10 (其他版本均未测试)
nodejs >= 14.0 (推荐使用最新稳定版)
Mysql >= 8.0
MongoDB (推荐使用最新稳定版)
Redis (推荐使用最新稳定版)

后端

  1. 安装依赖

    cd kinit-api
    
    pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
    
  2. 修改项目环境配置

    修改 application/settings.py 文件

    # 安全警告: 不要在生产中打开调试运行!
    DEBUG = True # 如果当前为开发环境则改为 True,如果为生产环境则改为 False
  3. 修改项目数据库配置信息

    application/config 目录中

    • development.py:开发环境

    • production.py:生产环境

    # Mysql 数据库配置项
    # 连接引擎官方文档:https://www.osgeo.cn/sqlalchemy/core/engines.html
    # 数据库链接配置说明:mysql+asyncmy://数据库用户名:数据库密码@数据库地址:数据库端口/数据库名称
    
    SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://数据库用户名:数据库密码@数据库地址:数据库端口/数据库名称"
    SQLALCHEMY_DATABASE_TYPE = "mysql"
    
    
    # Redis 数据库配置
    REDIS_DB_ENABLE = True
    REDIS_DB_URL = "redis://:密码@地址:端口/数据库"
    
    # MongoDB 数据库配置
    MONGO_DB_ENABLE = True
    MONGO_DB_NAME = "数据库名称"
    MONGO_DB_URL = f"mongodb://用户名:密码@地址:端口/?authSource={MONGO_DB_NAME}"
    
    # 阿里云对象存储OSS配置
    # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,
    # Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    #  *  [accessKeyId] {String}:通过阿里云控制台创建的AccessKey。
    #  *  [accessKeySecret] {String}:通过阿里云控制台创建的AccessSecret。
    #  *  [bucket] {String}:通过控制台或PutBucket创建的bucket。
    #  *  [endpoint] {String}:bucket所在的区域, 默认oss-cn-hangzhou。
    ALIYUN_OSS = {
        "accessKeyId": "accessKeyId",
        "accessKeySecret": "accessKeySecret",
        "endpoint": "endpoint",
        "bucket": "bucket",
        "baseUrl": "baseUrl"
    }
    
    # 获取IP地址归属地
    # 文档:https://user.ip138.com/ip/doc
    IP_PARSE_ENABLE = True
    IP_PARSE_TOKEN = "IP_PARSE_TOKEN"
  4. 并在alembic.ini文件中配置数据库信息,用于数据库映射

    # mysql+pymysql://数据库用户名:数据库密码@数据库地址:数据库端口/数据库名称
    
    [dev]
    # 开发环境
    version_locations = %(here)s/alembic/versions_dev
    sqlalchemy.url = sqlalchemy.url = mysql+pymysql://root:123456@127.0.0.1/kinit
    
    
    [pro]
    # 生产环境
    version_locations = %(here)s/alembic/versions_pro
    sqlalchemy.url = sqlalchemy.url = mysql+pymysql://root:123456@127.0.0.1/kinit
  5. 创建数据库

    mysql> create database kinit;             # 创建数据库
    mysql> use kinit;                         # 使用已创建的数据库 
    mysql> set names utf8;                    # 设置编码
    
  6. 初始化数据库数据

    # 项目根目录下执行,需提前创建好数据库
    # 会自动将模型迁移到数据库,并生成初始化数据
    # 执行前请确认执行的环境与settings.py文件中配置的DEBUG一致
    
    # (生产环境)
    python3 main.py init
    
    # (开发环境)
    python3 main.py init --env dev
  7. 修改项目基本配置信息

    修改数据库表 - vadmin_system_settings 中的关键信息

    # 阿里云短信配置
    sms_access_key
    sms_access_key_secret
    sms_sign_name_1
    sms_template_code_1
    sms_sign_name_2
    sms_template_code_2
    
    # 高德地图配置
    map_key
    
    # 微信小程序配置
    wx_server_app_id
    wx_server_app_secret
    
    # 邮箱配置
    email_access
    email_password
    email_server
    email_port
    
  8. 启动

    # 进入项目根目录下执行
    python3 main.py run
    

PC端

  1. 安装依赖
cd kinit-admin

pnpm install
  1. 运行
pnpm run dev
  1. 打包
pnpm run build:pro

定时任务

  1. 安装依赖

    # 安装依赖库
    pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
    
    # 第三方源:
    1. 阿里源: https://mirrors.aliyun.com/pypi/simple/
    
  2. 修改项目数据库配置信息

    application/config 目录中

    • development.py:开发环境

    • production.py:生产环境

    # MongoDB 数据库配置
    # 与接口是同一个数据库
    MONGO_DB_NAME = "数据库名称"
    MONGO_DB_URL = f"mongodb://用户名:密码@地址:端口/?authSource={MONGO_DB_NAME}"
    
    
    # Redis 数据库配置
    # 与接口是同一个数据库
    REDIS_DB_URL = "redis://:密码@地址:端口/数据库名称"
  3. 启动

    python3 main.py
    

访问项目

Docker Compose 生产环境部署

准备工作

  1. 获取代码

    git clone https://gitee.com/ktianc/kinit.git
    
  2. 修改项目环境配置:

    1. 修改 API 端:

      文件路径为:kinit-api/application/settings.py

      # 安全警告: 不要在生产中打开调试运行!
      DEBUG = False # 生产环境应该改为 False
    2. 修改定时任务端:

      文件路径为:kinit-task/application/settings.py

      # 安全警告: 不要在生产中打开调试运行!
      DEBUG = False # 生产环境应该改为 False
  3. 如果已有 Mysql 或者 Redis 或者 MongoDB 数据库,请修改如下内容,如果没有则不需要修改:

    1. 修改 API 端配置文件:

      文件路径为:kinit-api/application/config/production.py

      # Mysql 数据库配置项
      # 连接引擎官方文档:https://www.osgeo.cn/sqlalchemy/core/engines.html
      # 数据库链接配置说明:mysql+asyncmy://数据库用户名:数据库密码@数据库地址:数据库端口/数据库名称
      SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://root:[email protected]:3306/kinit"
      
      # Redis 数据库配置
      # 格式:"redis://:密码@地址:端口/数据库名称"
      REDIS_DB_ENABLE = True
      REDIS_DB_URL = "redis://:[email protected]:6379/1"
      
      # MongoDB 数据库配置
      # 格式:mongodb://用户名:密码@地址:端口/?authSource=数据库名称
      MONGO_DB_ENABLE = True
      MONGO_DB_NAME = "kinit"
      MONGO_DB_URL = f"mongodb://kinit:[email protected]:27017/?authSource={MONGO_DB_NAME}"
    2. 修改定时任务配置文件

      文件路径为:kinit-task/application/config/production.py

      # Redis 数据库配置
      # 与接口是同一个数据库
      # 格式:"redis://:密码@地址:端口/数据库名称"
      REDIS_DB_ENABLE = True
      REDIS_DB_URL = "redis://:[email protected]:6379/1"
      
      # MongoDB 数据库配置
      # 与接口是同一个数据库
      # 格式:mongodb://用户名:密码@地址:端口/?authSource=数据库名称
      MONGO_DB_ENABLE = True
      MONGO_DB_NAME = "kinit"
      MONGO_DB_URL = f"mongodb://kinit:[email protected]:27017/?authSource={MONGO_DB_NAME}"
    3. 将已有的数据库在 docker-compose.yml 文件中注释

  4. 配置阿里云 OSS 与 IP 解析接口地址(可选)

    文件路径:kinit-api/application/config/production.py

    # 阿里云对象存储OSS配置
    # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,
    # Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    #  *  [accessKeyId] {String}:通过阿里云控制台创建的AccessKey。
    #  *  [accessKeySecret] {String}:通过阿里云控制台创建的AccessSecret。
    #  *  [bucket] {String}:通过控制台或PutBucket创建的bucket。
    #  *  [endpoint] {String}:bucket所在的区域, 默认oss-cn-hangzhou。
    ALIYUN_OSS = {
        "accessKeyId": "accessKeyId",
        "accessKeySecret": "accessKeySecret",
        "endpoint": "endpoint",
        "bucket": "bucket",
        "baseUrl": "baseUrl"
    }
    
    # 获取IP地址归属地
    # 文档:https://user.ip138.com/ip/doc
    IP_PARSE_ENABLE = False
    IP_PARSE_TOKEN = "IP_PARSE_TOKEN"
  5. 前端项目打包:

    cd kinit-admin
    
    # 安装依赖包
    pnpm install
    
    # 打包
    pnpm run build:pro

启动并初始化项目

# 启动并创建所有容器
docker-compose up -d

# 初始化数据
docker-compose exec kinit-api python3 main.py init

# 重启所有容器
docker-compose restart


# 其他命令:

# 停止所有容器
docker-compose down

# 查看所有容器状态
docker-compose ps -a

访问项目

  • 访问地址:http://localhost (默认为此地址,如有修改请按照配置文件)
  • 账号:15020221010 密码:kinit2022
  • 接口地址:http://localhost:9000/docs (默认为此地址,如有修改请按照配置文件)

如何贡献

你可以提一个 issue 或者提交一个 Pull Request。

Pull Request:

  1. Fork 代码
  2. 创建自己的分支: git checkout -b feat/xxxx
  3. 提交你的修改: git commit -am 'feat(function): add xxxxx'
  4. 推送您的分支: git push origin feat/xxxx
  5. 提交 pull request

浏览器支持

本地开发推荐使用 Chrome 80+ 浏览器

支持现代浏览器, 不支持 IE

IE Edge Firefox Chrome Safari
not support last 2 versions last 2 versions last 2 versions last 2 versions

许可证

MIT

PC端演示图

image-20221010214526082

image-20221010214526082

image-20221010214526082

image-20221010214526082

image-20221010214526082

1688392266702

image-20221010214526082

image-20221010214526082

image-20221010214526082

image-20221010214526082

image-20221010214526082

image-20221010214526082

另一种布局演示图

图1

image-20221010214526082

图2

image-20221010214526082

图3

image-20221010214526082

图4

image-20221010214526082

微信小程序端演示图

kinit's People

Contributors

ktianc avatar vvandk avatar liujianzh avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.