# Denpa サービス概要 ## Denpa とは DENDAI-UNIPA とかのもろもろのツールが使いにくいので、データをごにょごにょして便利に使えるサービスを作ろうというプロジェクトであるッ!! ### URL https://denpa.tdu.app ### Denpa システム構成 - denpa - Webアプリ本体 (Next.js) - denpa-firebase - Cloud Functions for Firebase - denpa-syllabus-console - - denpa-advanced-proxy ## 機能一覧 ### Ver1.0 / 目標: 9月頃 (後期授業確定前) - ログイン - 電大のOffice365アカウントを用いてログイン可能 - Google Cloud Identify Platform に切り替えを行い、Cloud Functions の `beforeCreate` トリガーを用いて登録ユーザーのメールアドレスを `@ms.dendai.ac.jp` に制限する - doc: https://cloud.google.com/identity-platform/docs/blocking-functions - 時間割 - 時間割の登録 / 編集 - 登録と編集は同一の画面でOK - 編集方法 - UNIPAからダウンロードできるPDFから自動登録 - シラバスの検索から登録 - 任意の文字列を登録 - 時間割へのメモ - Discordのユーザーにメモするやつに似てる - 自分の時間割の登録データにメモを書くことができる (シラバスにメモを書くわけではない) - 時間割の表示 - 表の形式で確認できる - 登録した課題があれば強調表示される - 時間割のリマインド - (1) 曜日ごとに指定された時間に「今日の時間割通知」を送信 - 毎時0分を選択できる - 6時~19時とか? - 夜間学部向けの時間も用意したい - (2) 授業開始時間10分前に通知を送信 - クリックするとZoomの参加URLに飛ぶ - 通知設定時に「PC (scheme: `zoommtg`)」「スマホ/タブレット (scheme: `zoomus`)」を選択 - 参加URL: `[scheme]://zoom.us/join?confno=[meetingId]&pwd=[pass]&uname=[name]` - シラバス - シラバスの確認 - シラバスの画面からWebClassに飛べる - シラバスの検索 - 検索エンジンには Algolia を使う予定です - 無料枠: 10,000 Records, 10,000 Search requests/mo - オーバー分: $1.00 / 1,000 Search requests - 課題一覧 - 課題の登録 - 課題の編集 - (課題のリマインド) - ホーム - 一番最後に作る - ダッシュボード、ウィジェット的な感じです - ちょっと複雑そうなので仕様策定は後ほど #### DBくん - users - [uid] - displayName: string - timetable: array - 0: array (曜日番号) - 0,1,2,3,4,5,6,7: object (時間番号) - syllabusId: string - text: string - memo: string - tasks: サブコレクション - [randomId] - notifyTokens: サブコレクション - [randomId] - 例を下に書いてます: notifyToken ```typescript const notifyToken = { token: "MESSAGING_USER_TOKEN", daily: [ 0: 9, // 月 => 9時 1: 9, // 火 => 9時 2: 9, // 水 => 9時 3: 10, // 木 => 10時 4: 9, // 金 => 9時 5: null, // 土 => 受け取らない 6: null, // 日 => 受け取らない ], beforeClass: [ 0: [ // 月曜日 0: true, // 1時間目 => 受け取る 1: true, // 2時間目 => 受け取る 2: true, // 3時間目 => 受け取る 3: true, // 4時間目 => 受け取る 4: false, // 5時間目 => 受け取らない 5: false, // 6時間目 => 受け取らない 6: false, // 7時間目 => 受け取らない 7: false, // 8時間目 => 受け取らない ], ] } ``` #### 要検討事項 - シラバスのスクレイピングツールをどこに置くか - AdminだけWebからキューできるようにするとか - シラバスのデータをどこに置くか - Firestore or SQL? ### Ver2.0 / 目標: 秋 - Wikiのような形で編集できるシラバス - 命名は考えたい - 課題のシェア機能 ### Ver3.0