間違えた問題(漢字・計算・記述など)を忘却曲線に沿って繰り返し出題する、家庭用の間隔反復アプリ。
worker/)。データ用と写真用の2つのデータベースapp/)。GitHub Pages で配信
study/ — 子ども用(タブレット)。今日の問題 → 答え → ○△× を自己採点admin/ — 保護者用(スマホ・PC)。登録・一覧・状況・CSV書き出し画面は fetch(Cookie なし)で POST /api {"fn","pin","args"} を呼ぶ。PIN は子ども用(解答のみ)と保護者用(登録・修正・削除も可)の2種類。写真は署名付きURL GET /photo/<id> で配り、端末のキャッシュが効く。
gas/ は以前の Google Apps Script 版(1回の通信に約1秒かかるため Workers に移行)。
settings テーブル(wrangler d1 execute kanji-srs --remote --command "UPDATE settings SET value='6' WHERE key='new_per_day'" など)json_each で1命令にまとめるnpm install
npx wrangler login # ブラウザで許可
npx wrangler d1 create kanji-srs # 表示された database_id を worker/wrangler.toml に
npx wrangler d1 create kanji-srs-photos # 同上
npx wrangler d1 migrations apply DB --remote --config worker/wrangler.toml
npx wrangler d1 migrations apply PHOTOS --remote --config worker/wrangler.toml
npx wrangler secret put STUDY_PIN --config worker/wrangler.toml # 子ども用(6桁以上)
npx wrangler secret put ADMIN_PIN --config worker/wrangler.toml # 保護者用(別の数字)
npm run deploy
端末で https://<user>.github.io/kanji-srs/app/#api=<URLエンコードした https://kanji-srs.<subdomain>.workers.dev/api> を開く(# 以降はサーバに送られず、端末に保存された後アドレス欄から消える)。PIN・データはリポジトリに含めない。
npm test # Worker(node:sqlite 上の D1 シム)・画面の共通部品・旧GAS版のテスト
npm run dev # http://127.0.0.1:8765/ で画面を確認(API は 127.0.0.1:8787)
npm run smoke -- <APIのURL> <学習PIN> <親PIN> [--readonly] # 動いている API の通し確認と応答時間
ローカルの PIN は test/dev-server.mjs と worker/.dev.vars(git 管理外)で設定する。