Facility Management System(施設管理システム)

Web

概要

本「Facility Management System」は、MongoDB、Express.js、React、Node.jsのMERNスタックで構築された施設予約と管理のためのシステムです。ユーザーは施設の利用時間を簡単に予約でき、4つの異なる役割に基づく権限管理により、予約の承認やキャンセル、レポート作成など多彩な機能が提供されます。元々はDRDO Cabsのインターンシッププロジェクトとして作成され、その後改良を加えた実用的な管理ツールです。施設運営の効率化を意識した設計で、管理者と利用者双方のニーズに対応しています。

GitHub

リポジトリの統計情報

  • スター数: 5
  • フォーク数: 0
  • ウォッチャー数: 5
  • コミット数: 30
  • ファイル数: 4
  • メインの言語: TypeScript

主な特徴

  • MERNスタックによるフルスタック開発で高い拡張性を実現
  • 4つの役割に基づく細かなアクセス制御(ロールベースアクセス制御)を実装
  • 施設の予約、承認、キャンセルに加え、レポート生成機能を備える
  • インターンシッププロジェクトをベースに実務要件を反映して改良

技術的なポイント

本システムはTypeScriptを用いたMERNスタックで構築され、フロントエンドはReact、バックエンドはNode.jsとExpress.js、データベースはMongoDBを採用しています。これにより、高速な開発と堅牢な型チェックが可能となり、保守性と拡張性を両立しています。

ユーザーの役割(ユーザー、管理者、承認者、レポート閲覧者など)に応じたロールベースアクセス制御(RBAC)を導入し、システムの安全性と利便性を確保。これにより、例えば施設予約の申請者は自分の予約のみ操作可能であり、承認者は予約の承認や却下を行え、管理者は全体管理を行うといった適切な権限分割がされています。

予約管理は、施設ごとの利用時間枠を柔軟に設定・管理でき、ユーザーは空き状況をリアルタイムで確認し予約申請可能です。申請後は承認プロセスを経て正式な予約となり、キャンセルや修正も役割に応じて対応できます。

データベース設計では、MongoDBのドキュメント指向モデルを活かし、ユーザー情報、施設情報、予約データを効率的に管理。スキーマ設計により整合性を保ちつつ、柔軟なクエリでレポート生成を実現しています。

さらに、Reactのコンポーネントベース設計により、UI/UXの向上を図りつつ、状態管理やAPIとの通信は効率的に行われています。TypeScriptの型安全性により、バグの早期検出と開発効率の向上に寄与しています。

このプロジェクトはもともとインターンシップの課題として開発され、実際の業務ニーズに合わせて機能追加や改善が重ねられています。軽量かつ実用的な設計で、今後の機能拡張や他システムとの連携にも対応しやすい構造となっています。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: プロジェクト概要やセットアップ手順などを記載
  • client: フロントエンドReactアプリケーションのソースコード
  • readme_assets: README用の画像やアセット類
  • server: バックエンドNode.js/Express.jsのAPIサーバーコード

まとめ

MERNスタックで構築された役割分担型施設管理システムの優れた実践例。

リポジトリ情報: