# 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