logo
3
1
WeChat Login

PyTool

全栈管理平台 — Python/FastAPI 后端 + Vue 3/TypeScript 前端,Docker 一键部署。

技术栈

技术
后端Python 3.13+ / FastAPI / SQLModel / PostgreSQL
前端Vue 3 + TypeScript + Vite + Element Plus + Tailwind CSS 4
部署Docker 多阶段构建 + nginx 反向代理

功能

  • 用户管理 — 用户/角色/菜单/部门 CRUD,权限控制
  • 登录认证 — 账号密码登录、QQ 登录、微信登录,JWT 鉴权
  • 系统监控 — 登录日志、操作日志、系统日志,支持条件筛选与批量删除
  • 系统设置 — 登录方式配置(QQ/微信 AppID 等)
  • 国际化 — 中文 / English 切换

本地开发

环境要求

  • Python ≥ 3.13 + uv
  • Node ≥ 20.19 + bun

启动后端

cd backend
cp ../.env.example ../.env    # 编辑 .env 配置数据库等
uv sync
uv run python main.py         # 监听 http://localhost:7001

启动前端

cd frontend
bun install
bun dev                       # 监听 http://localhost:7000

开发模式下前端 /api 请求自动代理到后端。

常用命令

# 后端
cd backend && uv run pytest          # 测试
cd backend && uv run pylint app/     # 代码检查

# 前端
cd frontend && bun run typecheck     # TS + Vue 类型检查
cd frontend && bun run lint          # ESLint + Prettier + Stylelint

Docker 部署

拉取镜像

docker pull docker.cnb.cool/pylover/pytool

Docker Compose(推荐)

docker compose up -d

访问:

docker compose down          # 停止
docker compose logs -f       # 查看日志

直接运行容器

docker run -d \
  --name pytool-app \
  -p 80:80 \
  -p 7001:7001 \
  docker.cnb.cool/pylover/pytool

配置

环境变量(.env

# 数据库
DB_SCHEME=postgresql
DB_SERVER=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_password

# QQ 登录(可选)
QQ_APP_ID=your_qq_app_id
QQ_APP_KEY=your_qq_app_key
QQ_REDIRECT_URI=http://localhost:7000/login/qq/callback

QQ/微信登录也可通过系统设置 → 登录设置页面在线配置,无需重启。

默认管理员

  • 用户名:admin
  • 密码:admin123456

项目结构

├── backend/          # FastAPI 后端(端口 7001)
│   ├── app/api/v1/   # API 路由
│   ├── app/models/   # SQLModel 数据模型
│   ├── app/settings/ # 配置(Pydantic + INI)
│   └── app/utils/    # JWT、密码、QQ/微信 OAuth
├── frontend/         # Vue 3 前端(端口 80)
│   ├── src/views/    # 页面(登录、系统管理、监控、设置)
│   ├── src/api/      # API 调用封装
│   └── locales/      # 国际化文案
├── docs/             # VitePress 文档站点
├── Dockerfile        # 多阶段构建
├── nginx.conf        # 前端代理 /api → 后端
└── docker-compose.yml

About

追光控制面板

10.30 MiB
3 forks1 stars3 branches2 TagREADMEMIT license
ZgAdminrepo-named
Language
JavaScript29.3%
TypeScript28%
Vue21.2%
Python16.5%
Others5%