rust-fullstack - 評価

評価スケール

基本評価 (100点満点)

項目 配点 評価基準
コンパイル 5点 エラーなし
認証機能 20点 登録・ログイン動作
CRUD操作 25点 タスク管理完動
フロントエンド 25点 WASM動作
データベース 15点 永続化動作
コード品質 10点 構造・可読性

ボーナス評価 (最大40点)

項目 配点
リアルタイム同期 15点
オフライン対応 10点
テストカバレッジ 10点
CI/CDパイプライン 5点

課題の目的

学習目標

  • フルスタック開発
- フロントエンドとバックエンドの統合 - エンドツーエンドの設計

  • Rust WASM
- ブラウザでのRust実行 - JavaScript interop

  • 実践的アプリケーション
- 認証システム - データベース設計

  • プロジェクト構成
- モノレポ構成 - ビルドシステム

評価手順

1. 環境構築確認

# データベース起動
docker-compose up -d

# マイグレーション
cd backend && sqlx migrate run

# バックエンド起動
cargo run

# フロントエンドビルド
cd frontend && trunk build

# ブラウザで確認
open http://localhost:8080

2. 認証テスト

# ユーザー登録
curl -X POST http://localhost:8080/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{"username":"test","email":"test@example.com","password":"password123"}'

# ログイン
curl -X POST http://localhost:8080/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com","password":"password123"}'
# → JWT token取得

# 現在のユーザー確認
curl http://localhost:8080/api/auth/me \
  -H "Authorization: Bearer <token>"

3. タスクCRUDテスト

# タスク作成
curl -X POST http://localhost:8080/api/tasks \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"title":"Test Task","priority":"high"}'

# タスク一覧
curl http://localhost:8080/api/tasks \
  -H "Authorization: Bearer <token>"

# タスク更新
curl -X PUT http://localhost:8080/api/tasks/1 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"status":"done"}'

# タスク削除
curl -X DELETE http://localhost:8080/api/tasks/1 \
  -H "Authorization: Bearer <token>"

4. フロントエンド動作確認

  • [ ] ログイン画面表示
  • [ ] ユーザー登録可能
  • [ ] ログイン/ログアウト動作
  • [ ] タスク一覧表示
  • [ ] タスク作成・編集・削除
  • [ ] フィルター・ソート動作
  • [ ] レスポンシブ対応
  • 5. セキュリティ確認

    # 認証なしでのアクセス拒否
    curl http://localhost:8080/api/tasks
    # → 401 Unauthorized
    
    # 他ユーザーのタスクアクセス拒否
    curl http://localhost:8080/api/tasks/999 \
      -H "Authorization: Bearer <token>"
    # → 403 Forbidden or 404 Not Found
    
    # SQLインジェクション耐性
    curl -X POST http://localhost:8080/api/auth/login \
      -H "Content-Type: application/json" \
      -d '{"email":"'; DROP TABLE users; --","password":"x"}'
    # → エラー(テーブル削除されない)
    

    減点対象

    項目 減点
    SQLインジェクション脆弱性 -50点
    パスワード平文保存 -30点
    認証バイパス可能 -25点
    CORS設定不備 -10点
    エラーハンドリング不足 -10点
    コード重複過多 -5点

    合格基準

  • マンダトリーパート: 80点以上
  • 全機能が正常動作すること
  • セキュリティ上の重大な問題がないこと