学生数据管理系统
基于 Nuxt 3 + SQLite + Prisma 的全栈学生数据管理系统,支持 Docker 部署。
功能特性
- 📊 数据概览:班级统计、年龄段分布、目标小区统计
- 👨🎓 学生管理:增删改查、批量导入导出
- 🏠 目标小区分析:可配置观测小区列表
- 📤 数据导出:支持 Excel 格式导出
- 🐳 Docker 部署:开箱即用
快速开始
开发环境
# 安装依赖
npm install
# 初始化数据库
npx prisma db push
# 启动开发服务器
npm run dev
Docker 部署
使用 Docker Compose(推荐)
# 构建并启动
docker compose up --build -d
# 查看日志
docker compose logs -f
# 停止服务
docker compose down
使用 Dockerfile
# 构建镜像
docker build -t student-app .
# 运行容器
docker run -itd --name student_manger -p 3000:3000 docker.hanhan.baby/student_manger:latest
数据持久化
数据库文件存储在 Docker 匿名卷中,容器删除后数据保留。
如需手动备份数据库:
docker compose cp student-app:/app/data/student.db ./backup.db
项目结构
├── server/
│ ├── api/
│ │ ├── students/ # 学生 CRUD API
│ │ ├── stats/ # 统计数据 API
│ │ └── settings/ # 设置 API
│ └── utils/
│ └── prisma.ts # Prisma 客户端
├── pages/
│ ├── index.vue # 数据概览页
│ └── students.vue # 学生列表页
├── layouts/
│ └── default.vue # 默认布局
├── prisma/
│ └── schema.prisma # 数据库模型
├── assets/
│ └── css/
│ └── main.css # 全局样式
├── Dockerfile # Docker 构建文件
├── docker-compose.yml # Docker Compose 配置
└── .env # 环境变量
技术栈
- 前端:Nuxt 3, Vue 3, Tailwind CSS
- 后端:Nuxt Server Routes, Prisma ORM
- 数据库:SQLite
- 部署:Docker, Docker Compose
API 接口
| 方法 | 路径 | 描述 |
|---|---|---|
| GET | /api/students | 获取所有学生 |
| POST | /api/students | 添加学生 |
| PUT | /api/students/:id | 更新学生 |
| DELETE | /api/students/:id | 删除学生 |
| POST | /api/students/import | 批量导入 |
| POST | /api/students/clear | 清空数据 |
| GET | /api/stats | 获取统计数据 |
| GET | /api/settings | 获取设置 |
| POST | /api/settings/save | 保存设置 |
环境变量
| 变量 | 说明 | 默认值 |
|---|---|---|
| DATABASE_URL | SQLite 数据库路径 | file:./data/student.db |
| NODE_ENV | 运行环境 | development |
Description
Languages
Vue
78.7%
TypeScript
16.7%
Dockerfile
3%
CSS
1.6%