rust-fullstack - 課題

概要

Rustでフルスタックウェブアプリケーションを構築する総合課題です。フロントエンドからバックエンド、データベースまで一貫してRustで実装します。

マンダトリーパート

必須要件

  • バックエンドAPI
- RESTful API設計 - 認証・認可 - データベース操作

  • フロントエンド(WASM)
- Yew/Leptos/Dioxusのいずれか - SPA構造 - 状態管理

  • データベース
- PostgreSQL/SQLite - マイグレーション - ORM使用

アプリケーション仕様

タスク管理アプリケーション(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
    

    制限事項

  • フロントエンドはRust + WASMのみ(JavaScript禁止)
  • バックエンドフレームワーク: Actix-web/Axum
  • ORM: Diesel/SeaORM/SQLx