rust-fullstack - 課題
概要
Rustでフルスタックウェブアプリケーションを構築する総合課題です。フロントエンドからバックエンド、データベースまで一貫してRustで実装します。
マンダトリーパート
必須要件
- バックエンドAPI
- フロントエンド(WASM)
- データベース
アプリケーション仕様
タスク管理アプリケーション(Todoアプリ)を実装:
// データモデル
pub struct User {
pub id: i64,
pub username: String,
pub email: String,
pub password_hash: String,
pub created_at: DateTime<Utc>,
}
pub struct Task {
pub id: i64,
pub user_id: i64,
pub title: String,
pub description: Option<String>,
pub status: TaskStatus,
pub priority: Priority,
pub due_date: Option<DateTime<Utc>>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Clone, Copy)]
pub enum TaskStatus {
Todo,
InProgress,
Done,
}
#[derive(Clone, Copy)]
pub enum Priority {
Low,
Medium,
High,
}
API エンドポイント
POST /api/auth/register # ユーザー登録
POST /api/auth/login # ログイン
POST /api/auth/logout # ログアウト
GET /api/auth/me # 現在のユーザー
GET /api/tasks # タスク一覧
POST /api/tasks # タスク作成
GET /api/tasks/:id # タスク詳細
PUT /api/tasks/:id # タスク更新
DELETE /api/tasks/:id # タスク削除
フロントエンド画面
- 認証画面
- ダッシュボード
- タスク編集
ボーナスパート
ボーナス1: リアルタイム同期
- WebSocketによる更新通知
- 複数端末での同期
ボーナス2: オフライン対応
- Service Worker
- IndexedDB キャッシュ
ボーナス3: テスト
- 統合テスト
- E2Eテスト
ボーナス4: CI/CD
- GitHub Actions
- Docker デプロイ
提出要件
rust-fullstack/
├── backend/
│ ├── src/
│ │ ├── main.rs
│ │ ├── routes/
│ │ ├── models/
│ │ ├── handlers/
│ │ └── db/
│ └── Cargo.toml
├── frontend/
│ ├── src/
│ │ ├── main.rs
│ │ ├── components/
│ │ ├── pages/
│ │ └── api/
│ └── Cargo.toml
├── migrations/
├── docker-compose.yml
└── README.md