我如何使用 React、Supabase 和 M-Pesa 为肯尼亚学生构建免费 KCSE 课程检查工具

发布: (2026年3月8日 GMT+8 20:12)
6 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的具体内容,我将为您翻译成简体中文。

概述

每年,成千上万的肯尼亚四年级毕业生焦急地等待 KUCCPS 的分配——他们并不知道自己实际上符合哪些大学课程的资格。我开发了一个免费的网络应用,允许学生输入他们的 KCSE 成绩,并立即查看他们有资格的课程。

Live demo:
Source code:

问题陈述

在 KCSE 成绩公布后,学生面临两个主要难题:

  1. 计算集群分数 – KUCCPS 用于确定特定课程资格的分数。
  2. 寻找符合条件的课程 – 共有 393 个学位和文凭课程,而官方 KUCCPS 网站仅列出分数线,没有自动资格检查工具。

解决方案:KCSE 课程检查器

  • 输入他们的 KCSE 科目成绩。
  • 即时查看所有六个 KUCCPS 集群的 计算后集群分数
  • 查看他们符合资格的所有 学位文凭 项目(基于 2024 年 KUCCPS 分数线)。
  • 可以按兴趣领域(工程、医学、商业、法律等)筛选结果。
  • 下载官方 2024 年 KUCCPS 分数线 PDF 以供验证。

技术栈

技术
前端React 18 + TypeScript
样式Tailwind CSS + shadcn/ui
数据库Supabase (PostgreSQL)
认证Supabase Google OAuth
支付IntaSend M‑Pesa STK Push
无服务器Supabase Edge Functions (Deno)
PWAvite-plugin-pwa
托管Vercel

集群评分公式

KUCCPS 将课程分为六个集群,每个集群使用特定的 KCSE 科目组合。分析 2024 年的分配数据后,我得出了以下校准公式:

C = \sqrt{\frac{r}{48} \times \frac{t}{84}} \times 48 \times 0.957
  • r – 原始集群科目得分(4 门科目满分 48 分)
  • t – KCSE 综合得分(7 门科目满分 84 分)
  • 0.957 – 校准系数,使计算得分与实际 2024 年 KUCCPS 分配相匹配。

得到的集群得分与官方数据非常接近,能够为学生提供可靠的指导。

安全的 M‑Pesa 支付流程

  1. 用户输入他们的手机号码。
  2. 前端调用 intasend-stk Edge Function。
  3. Edge Function 通过 IntaSend API 触发 STK Push。
  4. IntaSend 在用户手机上提示输入 M‑Pesa PIN。
  5. 用户在设备上输入 PIN。
  6. IntaSend 调用 mpesa-callback Edge Function(webhook)。
  7. webhook 验证交易并将 payments 表更新为 confirmed
  8. 前端每 3 秒轮询一次 payments 表。
  9. status = 'confirmed' 时,结果被解锁。

安全原则: 前端从不直接写入数据;它只能读取数据库的内容。所有更新均由服务器端 Edge Function 在 webhook 确认付款后执行,防止任何绕过付款步骤的尝试。

Database Schema (RLS‑protected)

  • users – 学生档案
  • user_results – KCSE 科目成绩
  • user_cluster_results – 计算的聚类分数
  • payments – M‑Pesa 支付记录
  • courses – 393 门课程及其分数线
  • degree_programme_cutoffs_exact_2024 – 703 条 2024 年 KUCCPS 精确分数线
  • reviews – 学生评论(管理员批准)

所有表均已启用 Row Level Security,因此每个用户只能访问自己的数据。

用户流程

已有用户

已付费的学生可以通过提供姓名电话号码来检索他们的成绩;使用 Google OAuth 的用户会自动获取。

仅文凭模式

如果学生的总分低于 C+(46/84 分),应用会自动切换到仅文凭模式,隐藏学位成绩,并显示解释性信息。

兴趣筛选

学生可以按兴趣领域筛选结果,避免滚动浏览数百个专业。

渐进式网页应用

该应用可在 Android 和 iOS 设备上直接安装,无需通过 Play 商店或 App Store。

经验教训

  1. IntaSend + Supabase Edge Functions – 在肯尼亚文档稀缺的情况下,仍然是 M‑Pesa 集成的顺畅组合。
  2. SEO for React SPAs – 需要添加 JSON‑LD 结构化数据、适当的 meta 标签、站点地图,并手动提交至 Google Search Console。
  3. Calibrating the cluster formula – 最耗时的部分;官方公式未公开披露,因此必须针对 2024 年的投放数据进行大量测试。

未来改进

  • 自定义 .co.ke 域名,以实现更广泛的采用。
  • 管理员仪表板,用于监控付款和用户统计。
  • 针对 KUCCPS 分配结果的推送通知。
  • 纳入职业技术教育(TVET)项目及其他课程。

参与方式

  • Live app:
  • GitHub repository:

如果您认识任何肯尼亚四年级毕业生或他们的父母,请将此工具分享给他们。对肯尼亚教育技术或 M‑Pesa 集成感兴趣的开发者欢迎探索代码。

Tags: kenya react supabase mpesa edtech webdev typescript pwa

0 浏览
Back to Blog

相关文章

阅读更多 »