InstantTest は、教師がテストを作成・配布し、生徒が受験して結果を確認できるローカル実行のプロトタイプです。
目的: クラス単位の簡易テスト作成/配布ワークフローを素早く検証することを主眼にしています。
- Node.js がインストールされていることを確認(推奨: Node.js 16+)。
- サーバーディレクトリへ移動して依存をインストール:
cd server
npm install- 環境変数を設定(
.envをserver/.envに作成するか、シェルで設定)
例 (PowerShell):
copy .env.example .env
$env:ADMIN_PASSWORD="your_admin_password"
# 任意: Gemini API キー
$env:GEMINI_API_KEY="<your_gemini_api_key>"
node index.js例 (macOS / Linux):
cp .env.example .env
export ADMIN_PASSWORD=your_admin_password
# 任意: export GEMINI_API_KEY=<your_gemini_api_key>
node index.js- ブラウザで開く: http://localhost:3000
PORT— サーバー待ち受けポート(デフォルト:3000)ADMIN_PASSWORD— 管理(/api/admin/*)用パスワード。API リクエストではヘッダx-admin-passwordを送ります。GEMINI_API_KEY— Google Gemini を用いる場合に設定(未設定だと/api/generate-questionsは失敗します)GEMINI_MODEL— 使用する Gemini モデル(省略時はgemini-2.5-flash-lite)
server/ 配下には簡易検証用のスクリプトがあり、ローカル環境で API の挙動を確認できます。例:
cd server
node test_api.js
node test_student_flow.jsこれらは実装の簡易チェック用スクリプトです。より体系的なテストフレームワークは未導入です。
server/— サーバー、API、DB 初期化、スクリプト- server/index.js — エントリーポイント
- server/db.js — SQLite スキーマと初期化
- server/geminiAi.js — Gemini 呼び出しラッパー
server/public/— フロントエンド静的ファイル(app.html,create_test.html等)
public/— 教師向けのテーマサンプル(ハイコントラスト等)
- このリポジトリはプロトタイプです。本番運用前に認証強化、TLS、入力検証、レート制限、監査ログ等の対策を必須で行ってください。
- 教師の認証は
teacher_session(HttpOnly クッキー)で管理されます。管理 API はADMIN_PASSWORD環境変数とx-admin-passwordヘッダで保護しています。 - データは
server/data.sqliteに保存されます。バックアップ・移行を運用で検討してください。
- API 仕様: SPEC.md
- UI/UX 設計: DESIGN.md
- サーバー実装: server/index.js
プロトタイプ用途で利用してください。変更・配布は自由ですが、安全対策は自己責任で行ってください。