---
# System prepended metadata

title: JudgeBox

---

# JudgeBox 
一個增強刷題體驗的平台

## 建立初衷
網路上的 OJ 琳瑯滿目，不管是對程式初學者或是競程選手，在篩選題目上都十分麻煩，因此我們希望能夠開發出一個平台，能夠彙整台灣用戶常用的 OJ 題目，並且加入題單、紀錄寫題過程的功能，讓使用者能夠有更好的刷題體驗。

## 功能

### 第一階段 - 題庫 API
- 彙整台灣使用者經常使用的 OJ 題目們
	- ZJ
	- CF
	- ATC
	- CSES
	- TIOJ
	- TCFSH OJ
	- ...
	- 有點類似 https://courseapi.org/search?q=%E5%BE%AE%E7%A9%8D%E5%88%86
	- 透過爬蟲定時更新題目

### 第二階段 - 平台本身的前後端開發
- 每道題目都會有 tag 以及難度標示，方便使用者搜尋
	- 自動新增：如果平台有內建 tag 如 CF，那就會直接顯示
	- 使用者新增：tag 以及難度標示是可以由使用者投票決定的
- 使用者可以對題目做標示
	- 狀態
		- 已經 AC
		- 嘗試過但還沒 AC
		- 待做
			- 設定優先順序
		- 以上狀態的更動皆會記錄
			- 使用者頁面顯示每天 AC 的題目
	- 記錄寫題過程
		- 程式碼
		- markdown + 數學式筆記功能
		- 內建繪圖白板，可記錄推導過程
- 創建題單
	- 就像是 spotify 創建歌單
	- 分為私人 / 公開
	- 一鍵加入題單，簡單快速

### 第三階段 - 延伸功能
- 瀏覽器插件
    - 在支援的 OJ 按下插件後可自動於平台開啟該題
    - 即時記錄想法，並儲存於雲端
- 使用者可選擇將自己的筆記上傳成公開題解
	- 支援 markdown 以及數學式
	- 按讚機制，被按讚的文章其作者會獲得貢獻值
	- 每篇題解可以設定 tag 
		- 內容：敘述、程式碼、類似題目、語言
		- 解法：二分搜、動態規劃、圖論、...
	- 留言機制
		- 以討論串的形式呈現
	- 追蹤機制
		- 可以追蹤需要題解的題目，若該題有題解上傳了則會發送通知給使用者
		- 顯示追蹤排行榜
- 教室功能
	- 分為教師、學員
		- 教師：該教室管理員
		- 學員：參與者
	- 記分板
		- 紀錄參與者在每個題單中的答題狀況
		- 教師可設定學員是否可見記分板
		- 學員可上傳程式碼
	- 適合教師或是營隊使用

### 第四階段 - 長遠規劃
- 分析使用者實力並提出建議
	- reference：https://recommender.codedrills.io/

## 效益
- 題目整理
    - 免除到每個 OJ 搜尋題目的時間成本
- 題單
	- 解決題目眾多，不知道該如何練習的問題
	- 有效的統整程式學習者的經驗，傳承給其他想練習的人，達成資源共享
	- 無論是新手或是競程選手都能夠受益
	- 協助各種層級的使用者提高練習效率
		- 新手：可以透過別人分享的題單，有效率且有方向的練習、進步
		- 選手：可以監督自己的練題過程，提高訓練的效率
- 瀏覽器插件
    - 解決許多競程選手都會遇到的問題：賽中將想法畫下來之後就刪掉了，無法回顧
    - 能夠直接將解題思路、過程分享給其他使用者
- 題解
    - 網路上的題解分散在個人 blog 中，如果有平台能夠整合，且上傳題解的方式非常簡單，會大大增加題解的資源量
- 教室功能
    - 讓監督學員寫題進度變得更簡單
- 總結
    - 將許多刷題者本來就會用的功能整合在一起
        - 題目整理：從需要點開各大 OJ，變成只需要打開我們的網頁
        - 題單：原本只能在試算表紀錄，非常麻煩，但現在能夠很方便的創建題單，也會美觀很多
        - 紀錄寫題過程：選手們經常利用繪圖板 / iPad 在寫題過程中畫下推導過程，但用完就會刪掉了
        - 題解：減去了架 blog 的技術成本
        - 教室功能：免去了老師或營隊講師建置題單平台的成本
    - 能夠創造出更多學習資源、本地社群
        - 題單、題解等等

## 為什麼要選擇這平台？
網路上的題目如此豐富，身為一名競程選手的我經常不知道該練習哪一題比較好，更別說是程式初學者了，這個平台能夠很好的彙整台灣，甚至是全球使用者常使用的練習平台、OJ，並推出題目關鍵字搜尋、題單等功能，讓你不用再為選擇練習哪一題而發愁。

除此之外，相信很多人都會利用繪圖板、iPad 或是純文字等工具紀錄練題時的想法推導，但是寫完那題，或是換個裝置寫的時候就遺失原本的進度了，這個平台將會內建筆記及繪圖的功能，不但能夠依據題目、OJ 分類，更能夠在跨平台無縫接軌，提升練習時的體驗及效率。

## 使用技術

### API
待定

### 平台
前端將使用 Flutter，支援 Web、Android、iOS 三平台
後端待定

## 時間線
1. JudgeAPI
    - 先寫出 Codeforces 的
2. JudgeBox 基本前後端
    - 列出 Codeforces 題目列表
3. JudgeBox 後端
    - 使用者登入
    - 題目狀態標示
4. 題單功能
5. markdown 支援
6. 更多平台支援
7. 白板支援
8. 題解功能支援


## 待討論

- 如何讓使用者有意願上來
	- 聯合社群（e.g：與 NHDK 合作，將 NHDK 比賽的題解公布在此平台上，增加基礎流量）
- 如何維持題解的品質、秩序
	- 檢舉系統？
	- 管理員？
	- 倒讚？
	- 如果管理員有權力下架文章，如何確保不會濫權


