Academic Suite的介绍与基础
Source: Dev.to
概览
本章是全书的初始基础。其目标是提供 Academic Suite 系统的技术概述,涵盖从问题背景到技术选型,再到本书将要开发的项目结构。不同于侧重读者定位的前言,本章开始进入技术领域,作为系统实现的起点。
Academic Suite 是一款学习管理系统(LMS),主要聚焦于为学校和大学管理在线考试。
在线考试系统的核心挑战
- 高并发
- 数据完整性
- 安全与防作弊
- 实时监控
这些挑战驱动了 Academic Suite 的架构决策,强调可靠性和开发便利性。
技术栈
后端(Go)
- 语言: Go (Golang) v1.24.0
- Web 框架: Fiber v2(基于 fasthttp,性能卓越)
- ORM: GORM
- 认证: JWT(JSON Web Token)
使用 Go 的原因:
Goroutine 轻量且高效,使 Go 非常适合处理在线考试中常见的高负载并发。Go 还鼓励编写显式、易维护的代码。
前端(React)
- UI 框架: React 18
- 构建工具: Vite 6
- 语言: TypeScript 5
- 样式: Tailwind CSS 3.4
- UI 组件库: shadcn/ui
- 状态管理: Zustand
- 数据获取: TanStack Query(React Query)
该栈支持一个响应式、稳定的考试界面,即使在网络条件不佳的情况下也能保持可用。
Monorepo 组织方式
Academic Suite 采用 monorepo(单仓库)方式,将后端和前端放在同一仓库中,同时保持职责分离。这带来以下好处:
- 前后端开发同步
- 版本管理与部署简化
- 对完整系统的单一仓库视图
项目目录结构
academic-suite/
├── backend/ # 源码 API(Go)
│ ├── handlers/ # HTTP 处理器 / 控制器
│ ├── models/ # 数据库结构(struct)
│ ├── routes/ # API 路由定义
│ ├── go.mod # Go 依赖
│ └── main.go # 后端应用入口
│
├── frontend/ # UI 源码(React)
│ └── src/
│ ├── components/ # 可复用 UI 组件
│ ├── pages/ # 应用页面
│ ├── hooks/ # 自定义 React Hook
│ └── lib/ # 工具库(API 客户端、辅助函数)
│ ├── package.json # 前端依赖
│ └── vite.config.ts # 构建配置
│
├── book/ # 技术文档(本书)
└── MANUAL.md # 简明用户指南
该结构将在全书中保持一致,以维持代码的有序性和可读性。
开发环境前置条件
- Go 1.24 或更高版本
- PostgreSQL(生产环境推荐)或 SQLite(开发环境)
- Node.js v18+ 或 Bun v1.0+
- Git
在进入实现阶段前,请确保已安装上述工具。
小结与后续步骤
本章我们覆盖了:
- Academic Suite 的背景与定位
- 在线考试系统的主要挑战
- 后端与前端的技术选型
- Monorepo 组织方式与目录布局
- 必要的开发环境配置
在 第 2 章,我们将从系统最关键的基础——数据库设计 开始,阐述如何一致且高效地管理考试数据、用户信息和评分结果。