rust-fullstack - 評価
評価スケール
基本評価 (100点満点)
| 項目 |
配点 |
評価基準 |
| コンパイル |
5点 |
エラーなし |
| 認証機能 |
20点 |
登録・ログイン動作 |
| CRUD操作 |
25点 |
タスク管理完動 |
| フロントエンド |
25点 |
WASM動作 |
| データベース |
15点 |
永続化動作 |
| コード品質 |
10点 |
構造・可読性 |
ボーナス評価 (最大40点)
| 項目 |
配点 |
| リアルタイム同期 |
15点 |
| オフライン対応 |
10点 |
| テストカバレッジ |
10点 |
| CI/CDパイプライン |
5点 |
課題の目的
学習目標
- フロントエンドとバックエンドの統合
- エンドツーエンドの設計 - ブラウザでの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点以上
全機能が正常動作すること
セキュリティ上の重大な問題がないこと