Proftime

MB作成者:Malte Budig
Proftime

Proftime は、大学における授業負担の計画と精算をデジタル化するためのモダンなWebアプリケーションです。学生プロジェクトとして開発し、React、TanStack Query、Shadcn UI、Keycloak を基盤に構築しました。ロール別の画面、アクセシブルなフォーム、編集可能なテーブル、モジュール構造を備えています。

Proftime:授業負担のデジタルな計画と精算

大学における授業負担(デュプタート)の計画や精算は、いまだに紙やメールで行われることが多く、把握しづらく、エラーが起こりやすく、時間もかかります。この学生プロジェクトは、まさにその課題に取り組むものです。Proftime は、講義・授業負担・精算にまつわるプロセスを大学職員向けにデジタル化し、簡素化するWebアプリケーションです。

以下では、React、TanStack、Keycloak などを用いて、モジュール構造を持つスケーラブルなシステムをどのように構築したかを紹介します。


目標:Excel を減らし、見通しを良くする

主な対象は次の 2 つのユーザー層です。

  • 教員:授業を計画し、授業負担を提出・精算する
  • 学部長室:学部全体の計画、承認、負担軽減を把握・管理する

目標は、複雑な大学業務を簡素化する、直感的でモジュール化され、保守しやすく、安全なシステムを構築することでした。

スタートページのスクリーンショット


技術基盤:モダンでモジュール化され、堅牢

本システムは、TypeScript を使った React フロントエンドと、バックエンドの Spring Boot REST API で構成されています。フロントエンドでは、主に次の技術を利用しました。

  • TanStack Router & Query – 型安全なルーティングとデータ管理
  • Shadcn UI – クリーンでカスタマイズ可能な UI
  • React Hook Form + Zod – 型付きでバリデーション済みのフォーム
  • i18next – 多言語対応
  • Keycloak – 安全なログインとロールベースのアクセス制御

アーキテクチャはモジュール構造で、Docker ベースの開発環境と明確なコンポーネント・スキーマ管理を備えています。


UX と機能:効率的でアクセシブル

使いやすさに重点を置きました。

  • サイドバー・ヘッダー・アクションバーを備えた明確な構造の UI
  • ロールに応じた画面(教員と学部長室)
  • インライン編集ができる再利用可能なテーブル
  • バリデーションとアクセシビリティに対応したダイアログ・フォーム
  • 最初のコミットからの多言語対応
  • 見通しの良い、型付きのデータ構造とフィルタ処理

インライン編集可能なテーブルのスクリーンショット

**RBAC(ロールベースアクセス制御)**により、利用者は自分に関係する情報だけを閲覧でき、明確なアクセス制御を実現しています。

ロール別の UI


品質とスケーラビリティ

システムはテスト性と拡張性を考慮して設計しました。

  • モジュール構造の型付きコンポーネント
  • データフローと UI に対する単体テストと統合テスト
  • Zod による中央集約型の型・スキーマ定義
  • ロジック・構造・スタイルの明確な分離

今後の予定:CI/CD の導入、エンドツーエンドテスト、WCAG に沿ったアクセシビリティの改善。


まとめ

Proftime は、時代遅れのメールベースのシステムを、計画・精算のプロセスをデジタル化し、目に見えて簡素化するアプリケーションに置き換えます。承認ワークフローやエクスポート、自動レポートといった今後の機能に向けた、しっかりとした土台にもなります。

得られた気づき:技術が実際のユーザーのニーズと結びついたとき、本当に役立つソフトウェアが生まれる。


注: Proftime は大学内部のプロジェクトのため、ソースコードやライブ環境は一般公開されていません(内部環境へのアクセス権も現在はありません)。上のスクリーンショットは実際に稼働していたシステムのものです。