コンテンツへスキップ

Sultan

現場労働力プラットフォーム

2022 - 2023 · クロスプラットフォームのモバイルおよびバックエンドアーキテクチャ

イタリアの建設会社向けの現場労働力プラットフォーム — 単一の Firebase バックエンド上で動作するネイティブの iOS および Android アプリとインストール可能な PWA を備え、QR とジオロケーションによる打刻、ドキュメントの電子署名、チャット、Vue 製の管理バックオフィスを提供します。

1つの労働力、3つのネイティブクライアント、そして共有された Firebase コア

Sultan は、ソフトウェアを使う人々がデスクではなく現場にいるイタリアの建設・産業企業のために構築された現場労働力プラットフォームです。私の役割は、3つのクライアントアプリ — ネイティブ iOS、ネイティブ Android、インストール可能な PWA — を1つの Firebase バックエンドと Web 管理バックオフィスに結びつけるアーキテクチャでした。

この製品が存在するのは、cantiere(建設現場)の日常の実態が通常のオフィスツールに合わないからです。作業員は現場間を移動し、接続は不安定で、それでも会社は正確な打刻記録、署名済み書類、全員に確実に連絡できる手段を必要とします。Sultan はそれを1つのオペレーティングシステムへと変えます。各作業員がアプリを携帯し、各現場が打刻できる場所となり、バックオフィスはそのすべてをリアルタイムで把握します。

単一のラップされた webview を提供するのではなく、このプロジェクトは共有された契約の上で3つの本物のクライアントを動かします。iOS アプリは MVVM 構造の SwiftUI で、ダッシュボード、現場、打刻、カレンダー、経費、ドキュメント、チャット、認証、位置情報それぞれに専用のビューモデルを持ちます。Android アプリは同じ MVVM 構造、Hilt の依存性注入、Firebase リポジトリを備えたネイティブ Kotlin です。3つ目のクライアントは Nuxt UI、Pug、@vite-pwa/nuxt で構築された Nuxt 3 の PWA で、ホーム画面にインストール可能で、Dexie と IndexedDB によりオフラインに対応します。3つすべてが同じ Firebase プロジェクトと通信するため、iPhone、Android 端末、Web アプリのいずれからの打刻も同じ場所に届きます。

共有コアは Firebase です。データのための Firestore、ID とロールのための Firebase Auth、信頼できるサーバーロジックのための Cloud Functions、ドキュメントのための Storage、プッシュのための Cloud Messaging です。TypeScript パッケージ @sultan/shared がドメインモデル — ユーザー、現場、打刻、経費、ドキュメント、署名、連絡、チャットグループ、メッセージ、イベント、工具、作業レポート、通知 — を保持するため、同じ形がアプリ、Functions、管理パネルで尊重されます。Firestore のトリガーがすべてを同期させ、書き込みは検索のための Algolia インデックスと、チャットメッセージ、カレンダーイベント、現場の変更、打刻の更新のためのプッシュ通知へと波及します。

最もセキュリティに敏感な部分は打刻です。作業員は単にボタンを押すのではなく、現場に物理的に存在する QR コードをスキャンします。これらのコードは管理者専用の callable な Cloud Function によって発行され、現場のペイロードを ES256 JWT として署名し、QR 画像にレンダリングします。コードをスキャンすると検証可能なトークンとともにアプリが開くため、timbratura(打刻)は現場であることと、コードが捏造ではなく本物であることの両方を証明します。打刻フローはジオロケーションも取得し、職長モード — 現場リーダーが自分自身、またはその場にいる他の作業員のために打刻できる — に加え、同じ記録に紐付く出張・経費の項目をサポートします。

打刻を超えて、Sultan は雇用関係の残りの部分も担います。作業員は個人向けの書類 — 給与明細と LUL、PPE および福利厚生の書類 — を受け取り、専用の sign-document 関数を通じて電子署名するため、会社は配布と確認の追跡可能な記録を保持します。連絡ボードが全社向けのお知らせを配信し、管理者によるモデレーション付きのグループチャットがチームへの到達性を保ち、カレンダーが予定されたイベントと作業員自身の打刻履歴を組み合わせます。工具や機材は現場ごとに追跡され、重要なことはすべてプッシュ通知として届きます。

会社側は別個の Vue 管理バックオフィスです。Vuex、vuexfire、Google Maps、カレンダー、Algolia で構築され、管理者に現場と打刻のライブマップ、従業員ディレクトリと従業員ごとのレポート、ドキュメントと連絡の管理、工具の追跡、そして Functions 層の pdf-libxlsx ヘルパーでサーバー側で生成される労働時間の Excel エクスポートを提供します。ロールに応じたアクセス — 作業員、職長、管理者、スーパー管理者 — は Cloud Functions から各クライアントが許可される操作に至るまで一貫して動作します。

その結果は、オフィスではなく現場を中心に形作られたプラットフォームです。各スマートフォンでしっくりくるネイティブアプリ、インストール可能な Web のフォールバック、現場をリアルタイムに反映するバックオフィス、そして良好な接続から遠く離れた場所で作業が行われても認可・署名・同期を信頼できる状態に保つ Firebase コアです。

表示されているスクリーンショットは匿名化されています。実際の氏名、住所、書類の参照情報は架空のデータに置き換えられています。

ギャラリー