课程学生 CRM 后端模板
跟踪学生、课程、登记、测验尝试和支持票据记录
一个在 Back4app 上准备好的 课程学生 CRM 后端,具有学生、课程、登记、测验尝试和支持票据记录。包括 ER 图、数据字典、JSON 架构、API 沙箱,以及一个用于快速设置的 AI 代理 提示。
课程 CRM 收获
此模板为您提供了一个学生、课程、注册、测验尝试和支持票后台,以便协调员可以在一个地方跟踪进度、分数和票务状态。
- 您可以查询的学生进度 — 模型 Student.currentCompletionRate、Enrollment.progressPercent 和 Course.targetCompletionRate,以便您可以按群体、讲师或状态审查课程进度。
- 测验尝试分数可见性 — 存储 QuizAttempt.quizTitle、scorePercent、attemptedAt 和 status,以评估学习者在各个课程和模块中的表现。
- 支持票日志 — 捕获 SupportTicket.ticketNumber、priority、status 和 lastMessageAt,以帮助与学生或分配用户相关的工作流程。
- 学生和员工的观点 — 使用 Student.accountOwner、Course.instructor 和 SupportTicket.assignedTo 来保持学习者活动与员工处理的分离。
- 跨平台课程 CRM 后端 — 通过单一的 REST 和 GraphQL API 为学生、注册、测验尝试和支持票据数据服务移动和Web客户端。
理解在线课程学生 CRM 后端
管道可见性是在线课程学生 CRM 的基础 — 如果没有它,机会停滞,义务滑落,客户感到被抛弃。成本出现在回调和积分上。该模板基于 Back4app 模型化课程、学生、注册、测验尝试和支持票据,并提供基于角色的访问,以便每个在线课程学生 CRM 的团队成员都能看到自己所拥有的管道部分。该架构涵盖用户、课程 (courseCode, title, status, instructor, targetCompletionRate)、学生 (fullName, email, cohort, currentCompletionRate, lastQuizScore, accountOwner)、注册 (student, course, enrolledAt, progressPercent, active)、测验尝试 (student, course, quizTitle, scorePercent, attemptedAt, status) 和支持票据 (ticketNumber, student, assignedTo, subject, priority, status, lastMessageAt)。连接您喜欢的前端,更快发布。
最佳适用:
在线课程学生 CRM: 后端快照
当在线课程学生 CRM 量激增时,非正式流程首先崩溃——并不是因为人们停止关心,而是因为记忆和消息无法扩展。
此处每张技术卡片都映射到相同的课程、学生和注册模型——选择一个技术栈而无需重新协商您的后端合同。
课程CRM功能
该中心中的每张技术卡都使用相同的学生 CRM 模式,包括用户、课程、学生、注册、测验尝试和支持票。
学生个人资料管理
学生存储全名,邮箱,学习组,当前完成率和最近测验成绩。
注册跟踪
注册链接 学生,课程,注册时间,进度百分比和活跃状态。
测验分数记录
QuizAttempt存储学生、课程、测验标题、得分百分比、尝试时间和状态。
完成率监控
Course.targetCompletionRate、Student.currentCompletionRate和Enrollment.progressPercent显示进度。
支持票日志
SupportTicket链接ticketNumber、学生、assignedTo、优先级、状态和主题。
为什么要使用Back4app构建您的课程学生CRM后台?
Back4app为您提供课程、进度和支持原语,以便您的团队可以专注于学习者的成果,而不是基础设施。
- •课程和注册建模: 课程和注册类使您能够轻松跟踪谁在学习什么,以及Enrollment.progressPercent是否在变化。
- •QuizAttempt审核工作流: 存储QuizAttempt.scorePercent和状态,以便在一个地方审查性能趋势。
- •支持票据可见性与实时读取: 记录SupportTicket.status和SupportTicket.priority,然后在学习者问题变更时订阅更新。
通过跨所有平台的一个后端合同快速构建和迭代学生CRM流程。
课程 CRM 好处
一个学生 CRM 后端,帮助您管理学习者操作而不牺牲清晰度。
更快的课程操作设置
从完整的用户、课程、学生、注册和测验尝试模式开始,而不是从零设计学习者跟踪。
分数和进度可见性
使用 QuizAttempt.scorePercent、Student.currentCompletionRate 和 Course.targetCompletionRate 来查看课程结束前谁需要辅导。
支持工作保持可搜索
存储 SupportTicket.status、SupportTicket.priority 和 ticketNumber,以便工作人员按紧急程度对请求进行分类。
清除所有权逻辑
将注册与学生和课程指针关联,以便每次进度更新都有上下文,同时学生的.accountOwner和课程的.instructor显示谁拥有该记录。
一致的报告字段
在不更改每个新仪表板架构的情况下聚合currentCompletionRate、scorePercent和票据计数。
AI引导工作流
通过一个结构化提示快速生成后端脚手架和集成指南。
平台栈
本课程包含的所有内容 学生CRM后端模板。
课程架构图
课程学生CRM架构的实体关系模型。
涵盖用户、课程、学生、注册、测验尝试和支持票的架构。
查看图表源
erDiagram
User ||--o{ Course : "instructor"
User ||--o{ Student : "accountOwner"
User ||--o{ SupportTicket : "assignedTo"
Student ||--o{ Enrollment : "student"
Course ||--o{ Enrollment : "course"
Student ||--o{ QuizAttempt : "student"
Course ||--o{ QuizAttempt : "course"
Student ||--o{ SupportTicket : "student"
User {
String objectId PK
String username
String email
String password
String role
Date createdAt
Date updatedAt
}
Course {
String objectId PK
String courseCode
String title
String status
String instructorId FK
Number targetCompletionRate
Date createdAt
Date updatedAt
}
Student {
String objectId PK
String fullName
String email
String cohort
Number currentCompletionRate
Number lastQuizScore
String accountOwnerId FK
Date createdAt
Date updatedAt
}
Enrollment {
String objectId PK
String studentId FK
String courseId FK
Date enrolledAt
Number progressPercent
Boolean active
Date createdAt
Date updatedAt
}
QuizAttempt {
String objectId PK
String studentId FK
String courseId FK
String quizTitle
Number scorePercent
Date attemptedAt
String status
Date createdAt
Date updatedAt
}
SupportTicket {
String objectId PK
String ticketNumber
String studentId FK
String assignedToId FK
String subject
String priority
String status
Date lastMessageAt
Date createdAt
Date updatedAt
}
学生同步流程
签入、学生审查、测验尝试记录、注册更新和支持票追踪的典型运行流程。
查看图表源
sequenceDiagram
participant Staff as Staff User
participant CRM as Online Course Student CRM App
participant Back4app as Back4app Cloud
Staff->>CRM: Sign in to the CRM
CRM->>Back4app: POST /login
Back4app-->>CRM: Session token
Staff->>CRM: Open completion dashboard
CRM->>Back4app: GET /classes/Student?include=accountOwner&order=-currentCompletionRate
Back4app-->>CRM: Student completion rates
Staff->>CRM: Review quiz scores
CRM->>Back4app: GET /classes/QuizAttempt?include=student,course&order=-attemptedAt
Back4app-->>CRM: QuizAttempt rows
Staff->>CRM: Register a support ticket
CRM->>Back4app: POST /classes/SupportTicket
Back4app-->>CRM: ticketNumber and objectId
CRM->>Back4app: Live query updates for SupportTicket and Enrollment
Back4app-->>CRM: Ticket status and progress changes字段指南
课程学生 CRM 架构中每个类的完整字段级参考。
| 字段 | 类型 | 描述 | 必填 |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | 自动 |
| username | String | User login name | |
| String | User email address | ||
| password | String | Hashed password (write-only) | |
| role | String | Role of the user (e.g., admin, instructor, coordinator, learner) | |
| createdAt | Date | Auto-generated creation timestamp | 自动 |
| updatedAt | Date | Auto-generated last-update timestamp | 自动 |
7 字段在 User 中
角色访问和权限
ACL 和 CLP 策略如何保护学生、注册、测验尝试和支持票据。
学生档案控制
只有学生帐户所有者或经授权的协调员可以更新学生档案详细信息。
注册完整性
限制注册写入,以便课程工作人员可以在验证的情况下更改进度百分比、激活状态和课程分配。
支持日志可见性
将支持票据的读取限制为学生、指定工作人员和批准的管理员,以便票据备注保持私密。
JSON模式
原始JSON模式定义,准备复制到Back4app或用作实施参考。
{
"classes": [
{
"className": "User",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"username": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": true
},
"password": {
"type": "String",
"required": true
},
"role": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Course",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"courseCode": {
"type": "String",
"required": true
},
"title": {
"type": "String",
"required": true
},
"status": {
"type": "String",
"required": true
},
"instructor": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"targetCompletionRate": {
"type": "Number",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Student",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"fullName": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": true
},
"cohort": {
"type": "String",
"required": true
},
"currentCompletionRate": {
"type": "Number",
"required": true
},
"lastQuizScore": {
"type": "Number",
"required": true
},
"accountOwner": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Enrollment",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"student": {
"type": "Pointer",
"required": true,
"targetClass": "Student"
},
"course": {
"type": "Pointer",
"required": true,
"targetClass": "Course"
},
"enrolledAt": {
"type": "Date",
"required": true
},
"progressPercent": {
"type": "Number",
"required": true
},
"active": {
"type": "Boolean",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "QuizAttempt",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"student": {
"type": "Pointer",
"required": true,
"targetClass": "Student"
},
"course": {
"type": "Pointer",
"required": true,
"targetClass": "Course"
},
"quizTitle": {
"type": "String",
"required": true
},
"scorePercent": {
"type": "Number",
"required": true
},
"attemptedAt": {
"type": "Date",
"required": true
},
"status": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "SupportTicket",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"ticketNumber": {
"type": "String",
"required": true
},
"student": {
"type": "Pointer",
"required": true,
"targetClass": "Student"
},
"assignedTo": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"subject": {
"type": "String",
"required": true
},
"priority": {
"type": "String",
"required": true
},
"status": {
"type": "String",
"required": true
},
"lastMessageAt": {
"type": "Date",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
}
]
}AI代理提示
使用 Back4app AI 代理从这个模板生成一个真实的课程学生 CRM 应用,包括前端、后端、身份验证,以及学生、测验尝试、注册和支持票的流程。
在 Back4app 上创建一个安全的课程学生 CRM 后端,使用这个确切的架构和行为。 架构: 1. 用户(使用 Back4app 内置):用户名、邮箱、密码、角色;objectId, createdAt, updatedAt(系统)。 2. 课程:课程代码(字符串,必填),标题(字符串,必填),状态(字符串,必填),讲师(指向用户的指针,必填),目标完成率(数字,必填);objectId, createdAt, updatedAt(系统)。 3. 学生:全名(字符串,必填),邮箱(字符串,必填),班级(字符串,必填),当前完成率(数字,必填),最后测验得分(数字,必填),账户拥有者(指向用户的指针,必填);objectId, createdAt, updatedAt(系统)。 4. 注册:学生(指向学生的指针,必填),课程(指向课程的指针,必填),注册日期(日期,必填),进度百分比(数字,必填),活跃(布尔,必填);objectId, createdAt, updatedAt(系统)。 5. 测验尝试:学生(指向学生的指针,必填),课程(指向课程的指针,必填),测验标题(字符串,必填),得分百分比(数字,必填),尝试时间(日期,必填),状态(字符串,必填);objectId, createdAt, updatedAt(系统)。 6. 支持票:票号(字符串,必填),学生(指向学生的指针,必填),分配给(指向用户的指针,必填),主题(字符串,必填),优先级(字符串,必填),状态(字符串,必填),最后消息时间(日期,必填);objectId, createdAt, updatedAt(系统)。 安全性: - 教师和协调员可以管理他们拥有或指派给他们的学生的课程、注册、测验尝试和支持票。 - 学生可以查看他们的注册进度、测验得分和根据 ACL/CLP 规则允许的支持票状态。 - 使用基于角色的访问和指针范围权限保护学生的个人身份信息和内部票据备注。 认证: - 注册、登录、登出。 行为: - 跟踪完成率、测验得分和支持票日志。 - 按当前完成率列出学生,创建测验尝试行,打开支持票记录,并更新注册的进度百分比。 交付: - Back4app 应用,带架构、ACL、CLP;用于学生跟踪、课程管理、测验审查和支持操作的前端。
按下面的按钮打开带有此模板提示的代理。
这是没有技术后缀的基本提示。您可以在之后调整生成的前端堆栈。
API 沙盒
对课程学生 CRM 架构尝试 REST 和 GraphQL 端点。响应使用模拟数据,无需 Back4app 账户。
使用与此模板相同的架构。
选择一个技术栈
展开每个卡片以查看如何将课程、学生和注册与你选择的技术栈集成。
Flutter 课程 CRM 后端
React 课程 CRM 后端
React 原生 课程 CRM 后端
Next.js 课程 CRM 后端
JavaScript 课程 CRM 后端
Android 课程 CRM 后端
iOS 课程 CRM 后端
Vue 课程 CRM 后端
Angular 课程 CRM 后端
GraphQL 课程 CRM 后端
REST API 课程 CRM 后端
PHP 课程 CRM 后端
.NET 课程 CRM 后端
每种技术带来的收益
每个技术栈使用相同的课程学生 CRM 后端架构和 API 合同。
统一的学生 CRM 数据结构
轻松管理用户、课程、学生、注册、测验尝试和支持票据,使用一致的架构。
课程团队的完成跟踪
报告进展情况,使用 Course.targetCompletionRate、Student.currentCompletionRate 和 Enrollment.progressPercent,以便员工可以直接查询。
测验分数可见性为 在线课程学生 CRM
按课程或 cohort 审查 QuizAttempt.scorePercent,以确定需要帮助的学习者。
支持票据日志为 在线课程学生 CRM
跟踪 SupportTicket.subject、优先级和状态,以便支持团队了解还有哪些需要跟进的事项。
REST/GraphQL APIs 为 在线课程学生 CRM
使用灵活的 API 无缝集成各种前端。
为 在线课程学生 CRM 提供可扩展的架构
稍后添加证书、公告或课程尝试,而无需重写核心学生 CRM 模型。
课程 CRM 框架比较
比较所有支持技术的设置速度、SDK 风格和 AI 支持。
| 框架 | 设置时间 | 课程 CRM 好处 | SDK 类型 | AI 支持 |
|---|---|---|---|---|
| 大约 5 分钟 | 用于移动和网页的课程 CRM 单一代码库。 | 类型化 SDK | 全部 | |
| 少于 5 分钟 | 学生进度的快速网页仪表盘。 | 类型化 SDK | 全部 | |
| 约 3–7 分钟 | 用于支持票证和分数的跨平台移动应用。 | 类型化 SDK | 全部 | |
| 快速(5 分钟)设置 | 为课程协调员提供的服务器渲染管理门户。 | 类型化 SDK | 全部 | |
| 约 3–5 分钟 | 轻量级的 CRM 工作流程网页集成。 | 类型化 SDK | 全部 | |
| 大约 5 分钟 | 用于学生进度跟踪的 Android 原生应用。 | 类型化 SDK | 全部 | |
| 少于 5 分钟 | 本地 iOS 应用程序用于测验和票务审核。 | 类型化 SDK | 全部 | |
| ~3–7分钟 | React 课程操作的网页UI。 | 输入型SDK | 全部 | |
| 快速(5分钟)设置 | 面向学生客户关系管理团队的企业网页应用。 | 输入型SDK | 全部 | |
| 少于2分钟 | 灵活的 GraphQL API 用于注册和分数。 | GraphQL API | 全部 | |
| 快速(2分钟)设置 | REST API 集成用于学生 CRM。 | REST API | 全部 | |
| ~3分钟 | 服务器端 PHP 后端用于课程支持工作流程。 | REST API | 全部 | |
| ~3-7分钟 | .NET 后端用于学生 CRM 数据。 | 类型化 SDK | 全部 |
设置时间反映使用此模板架构从项目引导到第一次注册或测验尝试查询的预期持续时间。
课程 CRM 问题
关于使用此模板构建在线课程学生 CRM 后端的常见问题。