博物館登録アプリバックエンドテンプレート
MuseumObjectロケーション管理と登録ワークフロー
Back4app上での博物館登録バックエンドにはMuseumObjectトラッキング、コレクション所有権、ロケーション更新、LoanAgreementワークフロー、DeaccessionLog履歴、およびActivityLog監査が含まれています。ER図、データ辞書、JSONスキーマ、APIプレイグラウンド、そして迅速なセットアップのためのAIエージェントプロンプトが含まれています。
記録係の要点
このテンプレートは、MuseumObjectレコード、場所の更新、LoanAgreementワークフロー、DeaccessionLogエントリ、ActivityLog履歴のための博物館記録係のバックエンドを提供し、コレクションチームが1つの共有の真実の情報源から作業できるようにします。
- MuseumObjectの位置管理 — 各MuseumObjectをcurrentLocation、status、collection、conditionSummary、provenanceNoteでモデル化し、記録係がギャラリーから保管場所までの接収を追跡できるようにします。
- LoanAgreementワークフロー — LoanAgreementのステータス、loanNumber、borrowingInstitution、startDate、dueDate、signedByスタッフを使用して、出庫と入庫の貸出を追跡します。
- DeaccessionLogの責任 — 各MuseumObjectに関連付けられたDeaccessionLogエントリにおいて、廃止の決定、承認ステップ、最終処分に関するメモを記録します。
- 登録者に優しい権限 — ACLおよびCLPルールを使用して、登録者、キュレーター、コレクションマネージャー、保存者が割り当てられたクラスのみを扱うことができます。
- コレクション操作のための単一のAPI — MuseumObject、Location、Collection、LoanAgreement、DeaccessionLog、およびActivityLogに対して、1つのRESTおよび GraphQL レイヤーを通じて、ウェブ、モバイル、および管理ツールを提供します。
美術館登録者アプリテンプレートとは何ですか?
美術館登録者の締切はほとんどオプションではありません。構造化された記録レイヤーは、日付をサプライズではなく警告に変えます。勢いは正確な状態に依存します。 Back4app上のCollection、Location、MuseumObject、LoanAgreement、DeaccessionLogを使用することで、美術館登録者チームは同じケースレコードで協力しながらも職務の分離を強制できます。このスキーマは、User(ユーザー名、メール、パスワード、役割、フルネーム)、Collection(受入番号、タイトル、部門、主要キュレーター)、Location(コード、名前、タイプ、安全かどうか)、MuseumObject(受入番号、オブジェクトタイトル、オブジェクトタイプ、コレクション、現在の場所、ステータス)、LoanAgreement(貸出番号、美術館オブジェクト、貸出タイプ、借用機関、開始日、期日、署名者、契約状態)、DeaccessionLog(廃止番号、美術館オブジェクト、決定日、理由、承認者、最終処分、記録状態)、およびActivityLog(アクター、美術館オブジェクト、アクションタイプ、アクション日時)をカバーし、認証および記録保持のワークフローが組み込まれています。お好みのフロントエンドを接続して、より早く出荷してください。
最適:
この博物館レジストラバックエンドの構成
ピークの週は博物館レジストラの負債を暴露します:1月に問題なかったショートカットが、2月のコミットメントを逃す理由になります。
コレクション、ロケーション、およびMuseumObjectをMVPスコープのチェックリストとして使用してください:モデル化されていなければ、スプレッドシートの代替手段になります。
ミュージアムレジストラ機能
このハブのすべての技術カードは、User、Collection、Location、MuseumObject、LoanAgreement、DeaccessionLog、ActivityLogを使用して同じ博物館レジストラーバックエンドスキーマを利用しています。
MuseumObject管理
MuseumObjectは、accessionNumber、objectTitle、objectType、status、collection、currentLocationを保存します。
位置追跡
位置はコード、名前、タイプ、isSecureをキャプチャします。
ローン契約ワークフロー
ローン契約はmuseumObject、loanNumber、loanType、borrowingInstitution、dueDate、およびagreementStatusにリンクします。
DeaccessionLogトラッキング
DeaccessionLogはdeaccessionNumber、decisionDate、reason、finalDispositionおよびrecordStatusを記録します。
なぜ Back4app でミュージアムレジストラアプリバックエンドを構築するのか?
Back4app は登録者、キュレーター、コレクションマネージャーに必要なクラスを提供し、チームはインフラストラクチャではなく、受入番号、現在の所在地、移動履歴に集中できます。
- •MuseumObjectとLocationは接続されたままです: MuseumObjectとLocationのポインタは、現在の所在地、ステータス、およびコレクションの所有権を簡単に照会できるようにします。
- •LoanAgreementの記録は監査可能なままです: LoanAgreementは、貸出番号、貸出タイプ、借入機関、開始日、期限、契約ステータス、および署名者を、出力および入力オブジェクトのために保存します。
- •DeaccessionLogエントリは初日から構造化されています: DeaccessionLogは、各オブジェクトの除籍ケースのために、除籍番号、決定日、理由、承認者、最終処分、および記録ステータスをキャプチャします。
レジストラバックエンドを一度構築し、すべてのコレクションワークフローとクライアントで同じスキーマを再利用します。
レジストラの利点
コレクションチームが動き、貸出、非所持を整理できるよう支援する博物館のバックエンド。
より迅速なオブジェクト検索
出品者および棚追跡テーブルを手動で構築するのではなく、MuseumObjectとLocationから始めます。
クリーンな貸出管理
貸出契約のフィールド(agreementStatus、dueDate、borrowingInstitution、signedByなど)を使用して、アウトバウンドおよびインバウンドの貸出を見えるように保ちます。
追跡可能な非所蔵履歴
決定日、理由、最終処分、承認者を含むDeaccessionLogに非所蔵決定を保存して、後からレビューできるようにします。
スタッフの役割に対する権限の境界
ACLおよびCLPルールを適用して、登録者がMuseumObjectレコードを編集できるようにし、より広範なスタッフは承認されたオブジェクトの位置のみを読み取れるようにします。
検索可能なコレクション操作
スキーマを毎シーズンリセットすることなく、MuseumObject、Location、LoanAgreement、DeaccessionLog、およびActivityLogのエントリをクエリします。
AI支援のスキャフォールド
1つの構造化されたプロンプトから博物館登録者のバックエンドとスターター統合を生成します。
博物館登録者アプリを起動する準備はできましたか?
Back4app AIエージェントに登録者バックエンドのスキャフォールドをさせ、1つのプロンプトからMuseumObject、LoanAgreement、DeaccessionLog、ActivityLogワークフローを生成させましょう。
無料で始められます - 月50件のAIエージェントプロンプト、クレジットカード不要
博物館技術スタック
このミュージアムレジストラバックエンドテンプレートに含まれているすべて。
博物館ER図
博物館登録者バックエンドスキーマのエンティティ関係モデル。
ユーザー、コレクション、ロケーション、博物館オブジェクト、貸出契約、廃棄ログ、アクティビティログを網羅するスキーマ。
図のソースを見る
erDiagram
User ||--o{ Collection : "primaryCurator"
User ||--o{ LoanAgreement : "signedBy"
User ||--o{ DeaccessionLog : "approvedBy"
User ||--o{ ActivityLog : "actor"
Collection ||--o{ MuseumObject : "collection"
Location ||--o{ MuseumObject : "currentLocation"
MuseumObject ||--o{ LoanAgreement : "museumObject"
MuseumObject ||--o{ DeaccessionLog : "museumObject"
MuseumObject ||--o{ ActivityLog : "museumObject"
User {
String objectId PK
String username
String email
String password
String role
String fullName
Date createdAt
Date updatedAt
}
Collection {
String objectId PK
String accessionNumber
String title
String department
String primaryCuratorId FK
Date createdAt
Date updatedAt
}
Location {
String objectId PK
String code
String name
String type
Boolean isSecure
Date createdAt
Date updatedAt
}
MuseumObject {
String objectId PK
String accessionNumber
String objectTitle
String objectType
String collectionId FK
String currentLocationId FK
String status
String conditionSummary
String provenanceNote
Date createdAt
Date updatedAt
}
LoanAgreement {
String objectId PK
String loanNumber
String museumObjectId FK
String loanType
String borrowingInstitution
Date startDate
Date dueDate
String signedById FK
String agreementStatus
Date createdAt
Date updatedAt
}
DeaccessionLog {
String objectId PK
String deaccessionNumber
String museumObjectId FK
Date decisionDate
String reason
String approvedById FK
String finalDisposition
String recordStatus
Date createdAt
Date updatedAt
}
ActivityLog {
String objectId PK
String actorId FK
String museumObjectId FK
String actionType
String notes
Date actionAt
Date createdAt
Date updatedAt
}
レジストラ統合フロー
認証、MuseumObjectの検索、位置情報の更新、LoanAgreementの作成、DeaccessionLogの記録、およびActivityLogの更新の典型的な実行フロー。
図のソースを見る
sequenceDiagram
participant User
participant App as Museum Registrar App
participant Back4app as Back4app Cloud
User->>App: Sign in as registrar, curator, or collections manager
App->>Back4app: POST /login
Back4app-->>App: Session token
User->>App: Open object location board
App->>Back4app: GET /classes/MuseumObject?include=collection,currentLocation&order=accessionNumber
Back4app-->>App: MuseumObject list with Location and Collection pointers
User->>App: Record a transfer to storage or gallery
App->>Back4app: PUT /classes/MuseumObject/{objectId}
Back4app-->>App: Updated currentLocation and status
User->>App: Create a loan agreement or deaccession log
App->>Back4app: POST /classes/LoanAgreement or /classes/DeaccessionLog
Back4app-->>App: Agreement or log saved
App->>Back4app: Subscribe to ActivityLog updates
Back4app-->>App: Live updates for object movements and record changes博物館フィールドガイド
博物館のレジストラスキーマのすべてのクラスに対するフィールドレベルの完全な参照。
| フィールド | タイプ | 説明 | 必須 |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | 自動 |
| username | String | User login name | |
| String | User email address | ||
| password | String | Hashed password (write-only) | |
| role | String | Role of the user (e.g., registrar, curator, collections-manager, conservator, read-only-staff) | |
| fullName | String | Display name for staff and stakeholders | |
| createdAt | Date | Auto-generated creation timestamp | 自動 |
| updatedAt | Date | Auto-generated last-update timestamp | 自動 |
8 フィールドが User にあります
登録者のセキュリティと権限
ACLおよびCLP戦略がMuseumObjectレコード、貸出書類、除籍ノートをどのように保護するか。
役割ベースの登録者アクセス
登録者はMuseumObject、Location、LoanAgreement、およびDeaccessionLogのエントリを作成および編集できます。他のスタッフは適切な範囲で読み取り専用アクセスを得ます。
貸出と除籍の管理
LoanAgreementおよびDeaccessionLogへの書き込みアクセスを制限し、承認が認可されたコレクションスタッフに留まるようにします。
オブジェクト履歴の整合性
Cloud Codeを使用してcurrentLocationの更新を検証し、移動変更を保存する前にActivityLogを追加します。
JSONスキーマ
コピーしてBack4appに入れるか、実装の参考として使用するための生のJSONスキーマ定義。
{
"classes": [
{
"className": "User",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"username": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": true
},
"password": {
"type": "String",
"required": true
},
"role": {
"type": "String",
"required": true
},
"fullName": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Collection",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"accessionNumber": {
"type": "String",
"required": true
},
"title": {
"type": "String",
"required": true
},
"department": {
"type": "String",
"required": true
},
"primaryCurator": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Location",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"code": {
"type": "String",
"required": true
},
"name": {
"type": "String",
"required": true
},
"type": {
"type": "String",
"required": true
},
"isSecure": {
"type": "Boolean",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "MuseumObject",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"accessionNumber": {
"type": "String",
"required": true
},
"objectTitle": {
"type": "String",
"required": true
},
"objectType": {
"type": "String",
"required": true
},
"collection": {
"type": "Pointer",
"required": true,
"targetClass": "Collection"
},
"currentLocation": {
"type": "Pointer",
"required": true,
"targetClass": "Location"
},
"status": {
"type": "String",
"required": true
},
"conditionSummary": {
"type": "String",
"required": false
},
"provenanceNote": {
"type": "String",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "LoanAgreement",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"loanNumber": {
"type": "String",
"required": true
},
"museumObject": {
"type": "Pointer",
"required": true,
"targetClass": "MuseumObject"
},
"loanType": {
"type": "String",
"required": true
},
"borrowingInstitution": {
"type": "String",
"required": true
},
"startDate": {
"type": "Date",
"required": true
},
"dueDate": {
"type": "Date",
"required": true
},
"signedBy": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"agreementStatus": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "DeaccessionLog",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"deaccessionNumber": {
"type": "String",
"required": true
},
"museumObject": {
"type": "Pointer",
"required": true,
"targetClass": "MuseumObject"
},
"decisionDate": {
"type": "Date",
"required": true
},
"reason": {
"type": "String",
"required": true
},
"approvedBy": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"finalDisposition": {
"type": "String",
"required": true
},
"recordStatus": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "ActivityLog",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"actor": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"museumObject": {
"type": "Pointer",
"required": true,
"targetClass": "MuseumObject"
},
"actionType": {
"type": "String",
"required": true
},
"notes": {
"type": "String",
"required": false
},
"actionAt": {
"type": "Date",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
}
]
}AIエージェントを使用して構築
Back4app AIエージェントを使用して、このテンプレートからリアルな美術館の登録者アプリを生成します。フロントエンド、バックエンド、認証、およびオブジェクト、貸出、除籍ワークフローを含みます。
Back4app上でこの正確なスキーマと動作を持つ博物館登録アプリのバックエンドを作成します。 スキーマ: 1. ユーザー (Back4app 内蔵使用): ユーザー名、メール、パスワード、役割、フルネーム; objectId、createdAt、updatedAt (システム)。 2. コレクション: アクセッション番号 (文字列、必須)、タイトル (文字列、必須)、部門 (文字列、必須)、主任キュレーター (ユーザーへのポインター、必須); objectId、createdAt、updatedAt (システム)。 3. 位置: コード (文字列、必須)、名前 (文字列、必須)、タイプ (文字列、必須)、安全性 (ブール値、必須); objectId、createdAt、updatedAt (システム)。 4. 博物館オブジェクト: アクセッション番号 (文字列、必須)、オブジェクトタイトル (文字列、必須)、オブジェクトタイプ (文字列、必須)、コレクション (コレクションへのポインター、必須)、現在の位置 (位置へのポインター、必須)、ステータス (文字列、必須)、状態の概要 (文字列、オプション)、由来のノート (文字列、オプション); objectId、createdAt、updatedAt (システム)。 5. 貸出契約: 貸出番号 (文字列、必須)、博物館オブジェクト (博物館オブジェクトへのポインター、必須)、貸出タイプ (文字列、必須)、借入機関 (文字列、必須)、開始日 (日付、必須)、期限日 (日付、必須)、署名者 (ユーザーへのポインター、必須)、契約状況 (文字列、必須); objectId、createdAt、updatedAt (システム)。 6. 廃棄ログ: 廃棄番号 (文字列、必須)、博物館オブジェクト (博物館オブジェクトへのポインター、必須)、決定日 (日付、必須)、理由 (文字列、必須)、承認者 (ユーザーへのポインター、必須)、最終処分 (文字列、必須)、記録状況 (文字列、必須); objectId、createdAt、updatedAt (システム)。 7. アクティビティログ: アクター (ユーザーへのポインター、必須)、博物館オブジェクト (博物館オブジェクトへのポインター、必須)、アクションタイプ (文字列、必須)、ノート (文字列、オプション)、アクション時 (日付、必須); objectId、createdAt、updatedAt (システム)。 セキュリティ: - 登録者、キュレーター、コレクションマネージャーの役割は、それぞれの責任に応じて博物館オブジェクト、位置、貸出契約、廃棄ログのレコードを作成および編集できます。 - コレクションおよびオブジェクトレコードへの書き込みアクセスを認可されたスタッフに制限します。 - 貸出および廃棄のエントリを監査可能に保ちます; アクティビティログの履歴を保存します。 認証: - サインアップ、ログイン、ログアウト。 動作: - オブジェクトの位置を追跡し、貸出契約を管理し、廃棄ログを記録します。 - 部門ごとにコレクションを表示し、現在の位置とステータスによってオブジェクトを表示します。 - 博物館オブジェクトが移動したとき、貸出が署名されたとき、または廃棄が承認されたときにアクティビティノートを保存します。 配信: - スキーマ、CLP、ACL、およびオブジェクトの移動、貸出書類、廃棄ワークフローを管理するための登録者、キュレーター、コレクションマネージャー、保存者向けのインターフェースを備えた Back4app アプリ。
下のボタンを押して、このテンプレートプロンプトが事前に入力されたエージェントを開きます。
これは技術のサフィックスなしの基本プロンプトです。生成されたフロントエンドスタックを後で適応できます。
APIサンドボックス
GraphQLエンドポイントに対して博物館登録者スキーマに対してRESTを試してください。応答はモックデータを使用し、Back4appアカウントは必要ありません。
このテンプレートと同じスキーマを使用します。
テクノロジーを選択
各カードを展開して、選択したスタックとコレクション、ロケーション、およびMuseumObjectを統合する方法を確認してください。
Flutter ミュージアムレジストラバックエンド
React ミュージアムレジストラバックエンド
React ネイティブ ミュージアムレジストラバックエンド
Next.js ミュージアムレジストラバックエンド
JavaScript ミュージアムレジストラバックエンド
Android ミュージアムレジストラバックエンド
iOS ミュージアムレジストラバックエンド
Vue ミュージアムレジストラバックエンド
Angular ミュージアムレジストラバックエンド
GraphQL ミュージアムレジストラバックエンド
REST API ミュージアムレジストラバックエンド
PHP ミュージアムレジストラバックエンド
.NET ミュージアムレジストラバックエンド
すべてのテクノロジーで得られるもの
すべてのスタックは、同じ博物館登録者バックエンドスキーマとAPI契約を使用します。
統一された博物館データ構造
1つのスキーマでMuseumObjectレコード、Locationエントリ、LoanAgreementファイル、およびDeaccessionLogノートを管理します。
コレクションチームのためのオブジェクト位置追跡
currentLocationと活動履歴を登録者やキュレーターが読みやすいように保ちます。
博物館のための貸出契約ワークフロー
借用機関、期限、契約状況、署名者を1つの構造化されたフローに保存します。
博物館のための撤収書類
記録の状態、決定日、およびレビューと監査の理由を記録します。
REST/GraphQL APIs for museum apps
柔軟なAPIを使用して、Web、モバイル、内部ツールを接続します。
コレクション操作のための拡張可能なアーキテクチャ
収蔵および展示の進化に伴い、フィールドやクラスを追加します。
博物館レジストラスタックの比較
すべてのサポート技術におけるセットアップ速度、SDKスタイル、およびAIサポートを比較します。
| フレームワーク | セットアップ時間 | 博物館登録者の利益 | SDKタイプ | AIサポート |
|---|---|---|---|---|
| 約5分 | レジストラのモバイルおよびウェブツールのための単一コードベース。 | 型付きSDK | フル | |
| 5分未満 | オブジェクトトラッキング用の高速ウェブダッシュボード。 | タイプ付きSDK | フル | |
| 約3〜7分 | コレクションスタッフのためのクロスプラットフォームモバイルアプリ。 | タイプ付きSDK | フル | |
| 迅速な(5分)セットアップ | スタッフ用のサーバーレンダリングレジストラポータル。 | タイプ付きSDK | フル | |
| ~3〜5分 | レジストラーツールのための軽量ウェブインテグレーション。 | 型付けされたSDK | フル | |
| 約5分 | ギャラリーとストレージ管理のためのネイティブAndroidアプリ。 | 型付けされたSDK | フル | |
| 5分未満 | 博物館スタッフのためのネイティブiOSアプリ。 | 型付けされたSDK | フル | |
| ~3〜7分 | Reactコレクション操作のためのウェブUI。 | タイプされたSDK | フル | |
| 迅速な(5分)セットアップ | 登録者のワークフローのためのエンタープライズウェブアプリ。 | タイプされたSDK | フル | |
| 2分未満 | オブジェクトおよびローンビュー用の柔軟なGraphQL API。 | GraphQL API | フル | |
| クイック(2分)セットアップ | REST APIのレジストラシステム統合。 | REST API | フル | |
| ~3分 | ミュージアムツール用のサーバーサイドPHPバックエンド。 | REST API | フル | |
| ~3〜7分 | コレクション管理用の.NETバックエンド。 | タイプSDK | フル |
セットアップ時間は、このテンプレートスキーマを使用してプロジェクトのブートストラップから最初のMuseumObjectまたはLoanAgreementクエリまでの期待される期間を反映しています。
博物館のレジストラに関する質問
このテンプレートを使用して博物館のレジストラバックエンドを構築する際の一般的な質問。