Skip to content

r1ckyIn/UniBoard

Repository files navigation

UniBoard

Language Language Framework Framework Database AI MCP License

A unified academic dashboard that aggregates Canvas LMS + Ed Discussion into one place, with AI-powered insights and GPA tracking.

English | 中文


Demo

Demo

Static screenshot of the auth flow; interactive UI demo recording pending.


English

Problem

University students face information overload across Canvas LMS, Ed Discussion, and course websites. Critical deadlines get buried, important discussion posts are missed, and GPA tracking requires manual spreadsheet work. UniBoard solves this by aggregating all academic data into a single intelligent dashboard.

Overview

UniBoard is a GPA maximization dashboard that aggregates data from Canvas LMS, Ed Discussion, Ed Lessons, and Unit Outline pages into a single interface. It shows students exactly what matters for their grades -- real-time GPA/WAM tracking, unified deadlines, high-value discussion highlights, and AI-powered course material research.

Key Features

  • GPA/WAM Tracking -- Real-time grade calculation with What-if simulator and target GPA path planner
  • Unified Deadlines -- Three-source aggregation (Canvas + Ed Lessons + Ed Discussion) with SHA-256 deduplication
  • Intelligence -- AI-powered extraction of high-value Ed Discussion posts (exam hints, rubric info, deadline changes)
  • Course Materials -- Unified view with AI-generated folder descriptions and keyword search
  • Daily Digest -- Curated academic summary with AI urgency scoring and quality gate fallback
  • Predict -- Slider-based What-if GPA simulator with per-assessment predictions
  • Timetable -- Weekly schedule view with teaching week navigation
  • MCP Server -- Access UniBoard data through Claude Desktop with assignment ROI analysis
  • Skill System -- Auto-generated prompt templates for efficient repeated AI operations (~50 skills)

Tech Stack

Layer Technology
Backend Python 3.12+, FastAPI, SQLAlchemy 2.0 async + asyncpg
Frontend Next.js 15, TanStack Query v5, Tailwind CSS v4
Database Supabase PostgreSQL (15-table schema, 60 RLS policies)
Auth Supabase Auth (frontend supabase-js + Python JWT validation)
AI Claude API (Opus for MCP Agent, Sonnet for digest/scoring)
MCP Python asyncio MCP server + canvas-ed-mcp tools (17 tools)
Deployment Supabase + Railway (Python) + Vercel (Next.js)

Architecture

Architecture

Source: architecture.excalidraw — drag to excalidraw.com to edit.

AI-Augmented Development

UniBoard is built with AI at its core, both as a feature and in its development process:

  • Claude API Integration -- AI-powered daily digests, urgency scoring, and course material analysis
  • 17-Tool MCP Server -- Full Claude Desktop integration for academic data access and assignment ROI analysis
  • Development with Claude Code -- Built across 25 development phases using the GSD (Get Shit Done) methodology
  • 133 commits tracking the full evolution from concept to production

Project Metrics

Metric Value
Development Phases 25
Database Tables 15
RLS Policies 60
MCP Tools 17
Total Commits 133
AI Skills ~50

Quick Start

# Clone
git clone git@github.com:r1ckyIn/UniBoard.git
cd UniBoard

# Copy environment template
cp .env.example .env
cp frontend/.env.example frontend/.env.local

# Start Supabase local dev
supabase start
supabase db push

# Backend
uv sync && uvicorn src.web.main:app --reload --port 8000

# Frontend (in another terminal)
cd frontend && pnpm install && pnpm dev

Design

UniBoard follows an Anthropic/Claude-inspired design aesthetic -- warm colors, paper texture, hand-drawn borders (Rough.js), and restrained typography. The goal is to feel like "a quiet, trustworthy notebook on your desk" rather than a flashy EdTech product.

Why Story

UniBoard started because USyd's Canvas LMS and Ed Discussion were two apps I kept context-switching between — and I missed submissions because of it. Aggregating both sources into one dashboard was the fix. Adding the 17-tool MCP server was the unlock: Claude can now reason over the merged data (GPA projections, deadline clustering, study-time estimates) instead of me parsing it manually. 40+ USyd students use it daily. The story is that AI-native interfaces beat traditional dashboards when the data is structured enough for an LLM to reason about.


中文

问题背景

大学生面临来自 Canvas LMS、Ed Discussion 和课程网站的信息过载。关键截止日期被淹没,重要讨论帖被遗漏,GPA 追踪需要手动维护电子表格。UniBoard 将所有学术数据聚合到单一智能仪表盘中,解决这些问题。

项目概述

UniBoard 是一个 GPA 最大化仪表盘,聚合 Canvas LMS、Ed Discussion、Ed Lessons 和 Unit Outline 数据到统一界面。只展示对成绩有影响的信息 -- 实时 GPA/WAM 追踪、统一截止日期、高价值讨论帖高亮、AI 驱动的课程材料研究。

功能特点

  • GPA/WAM 追踪 -- 实时成绩计算,What-if 模拟器,目标 GPA 路径规划
  • 统一截止日期 -- 三源聚合(Canvas + Ed Lessons + Ed Discussion),SHA-256 去重
  • 信息情报 -- AI 提取 Ed Discussion 高价值帖子(考试范围、评分标准、截止日期变更)
  • 课程材料 -- 统一视图,AI 生成文件夹描述,关键词搜索
  • 每日摘要 -- 精选学业摘要,AI 紧急程度评分,质量门控自动回退
  • 成绩预测 -- 滑块式 What-if GPA 模拟器,逐评估项预测
  • 课程表 -- 周视图,教学周导航
  • MCP 服务器 -- 通过 Claude Desktop 访问 UniBoard 数据,含作业 ROI 分析
  • 技能系统 -- 自动生成 prompt 模板,~50 个技能覆盖数据采集/处理/AI 分析

AI 驱动开发

UniBoard 的 AI 不仅是功能特性,也贯穿于开发过程:

  • Claude API 集成 -- AI 驱动的每日摘要、紧急程度评分和课程材料分析
  • 17 工具 MCP 服务器 -- 完整 Claude Desktop 集成,学术数据访问与作业 ROI 分析
  • Claude Code 开发 -- 使用 GSD 方法论,历经 25 个开发阶段,133 次提交

快速开始

# 克隆
git clone git@github.com:r1ckyIn/UniBoard.git
cd UniBoard

# 复制环境配置
cp .env.example .env
cp frontend/.env.example frontend/.env.local

# 启动 Supabase 本地开发
supabase start
supabase db push

# 后端
uv sync && uvicorn src.web.main:app --reload --port 8000

# 前端(新终端)
cd frontend && pnpm install && pnpm dev

License

MIT License

Author

Ricky Yuan - CS + Mathematics @ University of Sydney

GitHub LinkedIn

About

GPA maximization dashboard — Canvas LMS + Ed Discussion aggregation

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors