勤怠管理_Webアプリを作った

勤怠管理Webアプリを作った

小規模・中規模組織向けのサーバーレス勤怠管理システムを作ってみた。

Googleアカウント認証を前提。

Firebase(ファイアベース:Googleが提供するWebアプリ開発向けサービス)上で完結する構成。

今回はホスティング先もFirebaseにしてみた。

GitHubでソースコードを公開しています。

https://github.com/tadano-akira/kintai-app

気合い入れたら1日で完成した。

仕様案だけは仕事帰りの電車のなかで、AIと壁打ちして2日(合計2時間)くらいで作成。

細かい詰めや、UI/UXの仕上げはできてないけど、一通り必要最低限な機能はできた。

技術スタック

技術スタックは以下。

項目 技術
フロントエンド React + TypeScript
UIライブラリ Material UI(MUI)
認証 Firebase Authentication(ファイアベース・オーセンティケーション:ユーザー認証を行うサービス)/Google Sign-In
データベース Cloud Firestore(クラウド・ファイアストア:クラウド上にデータを保存するデータベース)
サーバーサイド Cloud Functions for Firebase(クラウド・ファンクションズ・フォー・ファイアベース:サーバー側の処理を実行するサービス)/Node.js 20
ホスティング Firebase Hosting(ファイアベース・ホスティング:Webアプリをインターネット上に公開するサービス)
CI/CD GitHub Actions

ユーザーロール

ユーザーロールは2種類。

ロール 主な機能
staff 出退勤打刻・修正申請・休暇申請・自分の勤怠確認・有給残数確認
admin 全社員勤怠確認・申請承認・CSV出力・月次締め・有給付与管理

一般利用者と管理者で、利用できる機能を分けている。

システム構成

システム全体の構成はこんな感じ。

React + TypeScript
  │
  ├── Firebase Authentication
  │     Google Sign-In
  │
  ├── Cloud Firestore
  │     勤怠データを保存・管理
  │
  ├── Cloud Functions
  │     サーバー側の処理を実行
  │     (asia-northeast1:東京リージョン)
  │
  │     clockIn
  │     clockOut
  │     申請承認
  │     月次締め
  │     CSV出力
  │     など
  │
  └── Firebase Hosting
        Webアプリをインターネット上に公開

Firebaseを使うことで、自分でサーバーを構築・管理せずに、認証、データ保存、サーバー側の処理、Webアプリの公開までまとめて構成できる。

小規模・中規模向けのシステムなら、こういうサーバーレス構成はかなり楽だと思う。