Skip to content
binotaliuPublic

About

🎓 Alt UU

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

127 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🎓 Alt UU

Lint Tests License: AGPL-3.0-or-later React Native, Expo SDK 58 TypeScript strict NativeWind 4 Conventional Commits

Alt UU 是一款由 NOU 學生為同學打造的非官方手機 App。使用 Alt UU,就可以輕鬆在行動裝置上隨時隨地觀看 NOU UU 平台上的數位教材。
此外,Alt UU 也整合了 NOU 小幫手,能讓你在 App 中輕鬆看到所有課程的視訊面授時間、學校行事曆、考古題等。

開發 / Development

本專案使用 React Native 與 Expo(SDK 58、expo-router、NativeWind)開發,以 npm workspaces 管理以下套件:

路徑 說明
apps/mobile Expo App(路由、組合根、平台實作、fastlane、Maestro E2E)
packages/core 純 TypeScript 核心:HUNGU/校務系統連線、Session、各功能領域服務、資料庫(drizzle)
packages/features 畫面與 hooks(TanStack Query、Zustand)
packages/ui NativeWind 設計 token 與基礎元件
modules/attachment-bridge 自製 Expo 原生模組(WebView Cookie、附件下載、預覽與儲存)

若您有興趣參與貢獻,可 Clone 本專案後,依照以下步驟進行:

  1. 準備 Node.js 22 以上。編譯 iOS 需要 macOS 與 Xcode;編譯 Android 需要 Android Studio(SDK 與模擬器)。
  2. 安裝相依套件:npm ci
  3. 編譯並在模擬器或裝置上執行(於 apps/mobile 目錄):npx expo run:ios 或 npx expo run:android。之後可用 npx expo start 啟動開發伺服器。

常用指令(於專案根目錄執行):

npm run lint          # ESLint
npm run typecheck     # TypeScript
npm test              # 所有套件的測試(Vitest、Jest)
npm run format        # Prettier

端對端測試使用 Maestro,需要真實帳號,說明請見 apps/mobile/e2e/README.md。發行流程(GitHub Actions + fastlane)請見 apps/mobile/fastlane/README.md。

開發時請遵守 Code of Conduct 中的行為準則,維持友善且包容的社群環境;貢獻流程請參閱 CONTRIBUTING.md。

本專案使用「Conventional Commits」風格,範例:

feat(parser): support new exam schedule format

有關 Alt UU+ / About Alt UU+

Alt UU+ 是 Alt UU 中提供的訂閱服務,訂閱後可享有進階功能。
此進階功能之原始碼同樣使用 AGPL-3.0 授權。提供此訂閱服務的目的是為了回收本專案在開發與維護過程中產生的諸多成本,例如 Apple Developer Program 的年費、NOU 小幫手的伺服器費用、以及本專案的開發與維護的時間成本。撇除開發與維護的時間成本,每年實際的支出就多大數千新台幣,因此作者希望透過 Alt UU+ 的訂閱服務,讓本專案能夠持續運作下去。

什麼樣的功能會被放在 Alt UU+ 中?

只有即使沒有此功能,使用者也能通過 Alt UU 上課的功能,才會被放進 Alt UU+。
換句話說,只要有同學必須依賴此功能才能正常上課,就不會被放進 Alt UU+。
例如,在考慮要製作哪些進階功能時,曾有同學提案可將「自訂字體大小」的功能。但自訂字體大小屬於無障礙(Accessibility)功能。對於視力不方便的同學,若缺少自訂字體大小功能將無法好好使用 Alt UU 上課,因此這種功能就不會被放進 Alt UU+。

但這是開放原始碼軟體

是的,Alt UU 是開放原始碼軟體。這表示,任何人都可以通過自己修改原始碼來繞過付費保護,解鎖進階功能。
作者並不會對於這類行為設下任何防禦。如同前面提到的,推出訂閱功能是為了回收開發維護成本,而不是為了賺錢。

驗證 Android 側載版本 / Verifying the Android sideload build

每個版本的 GitHub Release 都附有 alt-uu-sideload.apk,由 GitHub Actions 建置,並附有建置來源證明(build provenance attestation)。
此 APK 使用獨立的簽署金鑰,與 Google Play 版本不能互相覆蓋更新,請只選擇其中一種管道安裝。

Every GitHub Release includes alt-uu-sideload.apk, built by GitHub Actions with a build provenance attestation. It is signed with a dedicated key, so it cannot update or be updated by the Google Play build. Pick one channel per device.

驗證建置來源 / Verify where it was built:

gh attestation verify alt-uu-sideload.apk --repo binotaliu/alt-uu

驗證簽署憑證 / Verify the signing certificate (apksigner is in Android SDK build-tools):

apksigner verify --print-certs alt-uu-sideload.apk

憑證 SHA-256 指紋應為 / The certificate SHA-256 fingerprint must be:

E4:5C:A6:11:48:9F:0D:F8:A9:57:45:82:06:C0:15:FF:7B:61:31:AC:B7:30:8F:69:3D:2B:75:BE:3A:A2:DD:9D

Note

Google Play 與 App Store 會重新簽署應用程式,因此商店版本無法與 GitHub 上的檔案逐位元組比對。iOS 沒有對應的側載管道。
The Play Store and App Store re-sign apps, so store builds can't be compared byte for byte with the files on GitHub. There is no iOS sideload channel.

授權 / License

本專案採用 AGPL-3.0-or-later 開放原始碼授權,詳細內容請參閱 LICENSE 檔案。

Note

由於我們採用 AGPL 授權,凡是使用到本專案程式碼的衍生作品也必須遵守相同的授權條款。換句話說,若您使用了本專案的程式碼,無論是修改還是直接使用,且包含通過網路提供服務,都必須將您的作品公開原始碼並採用 AGPL 授權。

About

🎓 Alt UU

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages