サイト、注文、サービス & GPSのためのポータブルトイレレンタルアプリバックエンド
サイトルーティング、サービス訪問、ユニットトラッキング
生産準備完了のポータブルトイレレンタルバックエンド on Back4appは、User, Site, InventoryUnit, RentalOrder, ServiceInterval, とLocationPingを中心に構築されています。カスタムバックエンドを組み合わせることなく、配送、サービス訪問、およびGPSピンを追跡します。
重要なレンタルのポイント
このテンプレートは、ユーザー、サイト、インベントリユニット、レンタルオーダー、サービスインターバル、ロケーションピンを中心にしたポータブルトイレのレンタルバックエンドを提供します。これにより、配送担当者、所有者、および顧客が調整を保つことができます。
- レンタルオーダーはサイトにリンクされています — RentalOrder.site と RentalOrder.assignedUnits を使用して、各予約を適切な作業サイトとポータブルトイレユニットに結び付けます。
- サービス訪問は追跡可能です — 各ServiceIntervalをserviceCode、scheduledAt、completedAt、unit、performedBy、およびserviceNotesでモデル化します。
- インベントリの状態は明示されています — InventoryUnit.status と InventoryUnit.lastServicedAt は、ユニットが利用可能、配送中、清掃中、またはメンテナンス中であるかを示します。
- GPSピンが現場作業をサポート — LocationPingはgpsLat、gpsLng、source、unit、およびドライバーアプリ、トラッカー、または配送更新のオプションの注文リンクを保存します。
概要:ポータブルトイレレンタルアプリ
返品と点検はポータブルトイレのレンタルのループを閉じます—システムは次のレンタルが始まる前に状態と責任をキャプチャする必要があります。費用はコールバックとクレジットに表示されます。Back4appのコアエンティティを使用して、ポータブルトイレのレンタルの可用性、価格フック、および履行記録を1つの統合バックエンドにエンコードします。スキーマは、ユーザー、サイト、インベントリユニット、レンタルオーダー、サービスインターバル、および認証とレンタルワークフロー機能を備えたLocationPingをカバーしています。お好みのフロントエンドを接続して、迅速に出荷してください。
最適:
このポータブルトイレレンタルバックエンドはどのように構成されていますか
ポータブルトイレレンタルで新入社員のオンボーディングに部族的知識が必要な場合、あなたは単一の障害点から1つの出発を遂げています。
ハブは役割に基づくユーザー記録、ユニットの割り当てとステータス追跡、サービス間隔ログの言語を一貫して保ち、製品、オペレーション、エンジニアリングが「記録」と言うとき、同じ意味になります。
ポータブルトイレレンタルのコア機能
このハブのすべてのテクノロジーカードは、User、Site、InventoryUnit、RentalOrder、ServiceInterval、およびLocationPingを使用して同じポータブルトイレレンタルスキーマを採用しています。
役割ベースのユーザー記録
ユーザーはディスパッチャー、所有者、または顧客のアクセスのために、ユーザー名、電子メール、パスワード、役割を保存します。
ユニットの割り当てとステータスの追跡
InventoryUnitはunitTag、unitType、status、currentSite、およびownerをリンクします。
サービス間隔ログ
ServiceIntervalはserviceCode、scheduledAt、completedAt、status、unit、およびperformedByを保存します。
GPS位置情報のピン
LocationPingはpingedAt、gpsLat、gpsLng、source、unit、およびorderを保持します。
サイトとレンタル調整
サイトとRentalOrderは作業現場、連絡先、および割り当てられたポータブルトイレユニットを保持します。
Back4appでポータブルトイレレンタルバックエンドを構築する理由は?
Back4appはレンタル、ルート、およびサービスのプリミティブを提供し、あなたのチームはインフラストラクチャではなく、配送と現場作業に集中できるようにします。
- •サイトと注文記録はリンクされたままに保たれます: サイト、RentalOrder、InventoryUnitは、それぞれの作業場所、予約、および資産割り当てを一つのトレイルで管理します。
- •サービスログは構造化されています: ServiceIntervalはserviceCode、scheduledAt、completedAt、serviceNotes、performedBy、および影響を受けたユニットをキャプチャします。
- •在庫は最新の状態に保たれます: InventoryUnitは、ユニットが利用可能、発送中、清掃中、またはメンテナンス中であるかを示し、Live Queriesはデスクに情報を提供します。
すべてのプラットフォームにわたる1つのバックエンド契約でレンタル操作を迅速に構築および反復します。
ポータブルトイレレンタルの利点
ルート、サービス作業、および在庫を整然と保つためのレンタルバックエンド。
迅速な派遣決定
ルートデータを最初から組み立てるのではなく、Site、RentalOrder、およびInventoryUnitを使用します。
明確なサービスの責任
ServiceInterval、serviceCode、およびperformedByを使用して、各インターバルを誰がいつ完了したかを示します。
顧客更新は一貫性を保つ
User、Site.contactName、およびSite.contactPhoneを正しいレンタル注文に結び付けて保持します。
在庫管理は明示的です
InventoryUnit.statusおよびlastServicedAtにより、利用可能、派遣中、清掃中、またはメンテナンス中のユニットをフラグ付けしやすくなります。
位置情報に基づく操作
LocationPing.gpsLatとgpsLngは、クルーがユニットの配達先やサービス提供先を確認するのに役立ちます。
AIブートストラップワークフロー
1つの構造化されたプロンプトで、バックエンドの足場と統合ガイダンスを迅速に生成します。
ポータブルトイレレンタルアプリの準備はできましたか?
Back4app AIエージェントにポータブルトイレレンタルのバックエンドの足場を作成させ、Site、InventoryUnit、RentalOrder、ServiceInterval、LocationPingのフローを1つのプロンプトから生成します。
無料でスタート — 月あたり50のAIエージェントプロンプト、クレジットカードは不要
ポータブルレンタルテクノロジースタック
このポータブルトイレレンタルバックエンドテンプレートに含まれるすべて。
レンタルスキーママップ
ポータブルトイレレンタルバックエンドスキーマのエンティティリレーションシップモデル。
ユーザー、サイト、在庫単位、レンタル注文、サービス間隔、ロケーションピングをカバーするスキーマ。
図のソースを表示
erDiagram
User ||--o{ Site : "customer"
User ||--o{ InventoryUnit : "owner"
User ||--o{ RentalOrder : "customer"
User ||--o{ ServiceInterval : "performedBy"
User ||--o{ LocationPing : "capturedBy"
Site ||--o{ InventoryUnit : "currentSite"
Site ||--o{ RentalOrder : "site"
InventoryUnit ||--o{ RentalOrder : "assignedUnits"
InventoryUnit ||--o{ ServiceInterval : "unit"
InventoryUnit ||--o{ LocationPing : "unit"
RentalOrder ||--o{ ServiceInterval : "order"
RentalOrder ||--o{ LocationPing : "order"
User {
String objectId PK
String username
String email
String password
String role
Date createdAt
Date updatedAt
}
Site {
String objectId PK
String siteCode
String name
String address
Number gpsLat
Number gpsLng
String contactName
String contactPhone
String customerId FK
Date createdAt
Date updatedAt
}
InventoryUnit {
String objectId PK
String unitTag
String unitType
String status
Date lastServicedAt
String currentSiteId FK
String ownerId FK
Date createdAt
Date updatedAt
}
RentalOrder {
String objectId PK
String orderNumber
String status
Date startDate
Date endDate
String siteId FK
Array assignedUnits
String customerId FK
Number serviceIntervalDays
String notes
Date createdAt
Date updatedAt
}
ServiceInterval {
String objectId PK
String serviceCode
Date scheduledAt
Date completedAt
String status
String orderId FK
String unitId FK
String serviceNotes
String performedById FK
Date createdAt
Date updatedAt
}
LocationPing {
String objectId PK
Date pingedAt
Number gpsLat
Number gpsLng
String source
String unitId FK
String orderId FK
String capturedById FK
Date createdAt
Date updatedAt
}
ディスパッチ統合フロー
サインイン、レンタル注文の照会、在庫単位の割り当て、サービス間隔の記録、およびロケーションピングのキャプチャの典型的なランタイムフロー。
図のソースを表示
sequenceDiagram
participant User
participant App as Portable Toilet Rental App
participant Back4app as Back4app Cloud
User->>App: Sign in as dispatcher, owner, or customer
App->>Back4app: POST /login
Back4app-->>App: Session token
User->>App: Open rental dashboard
App->>Back4app: GET /classes/RentalOrder?include=site,assignedUnits
Back4app-->>App: RentalOrder list
User->>App: Add or assign a portable toilet unit
App->>Back4app: POST /classes/InventoryUnit or PUT /classes/RentalOrder
Back4app-->>App: InventoryUnit saved
User->>App: Record a service interval or GPS ping
App->>Back4app: POST /classes/ServiceInterval or POST /classes/LocationPing
Back4app-->>App: Visit and location tracked
App->>Back4app: Live query updates for status changes
Back4app-->>App: Updated order, service, and inventory statusレンタルフィールドガイド
ポータブルトイレレンタルスキーマ内のすべてのクラスの完全なフィールドレベル参照。
| フィールド | タイプ | 説明 | 必須 |
|---|---|---|---|
| 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., dispatcher, owner, customer) | |
| createdAt | Date | Auto-generated creation timestamp | 自動 |
| updatedAt | Date | Auto-generated last-update timestamp | 自動 |
7 フィールドが User にあります
レンタルデータのアクセス制御
ACLおよびCLP戦略がユーザー、サイト、注文、サービス訪問、位置情報のピンをどのように保護するか。
顧客アカウントのコントロール
顧客のみが自分のユーザーフィールドを更新し、割り当てられたサイト、レンタル注文、サービス間隔、位置情報ピンデータを表示できます。
サービスと在庫の整合性
許可されたスタッフのみがServiceIntervalおよびLocationPingレコードを作成でき、資産所有者のみがInventoryUnitのステータスを管理できます。
スコープ付きルートアクセス
フィールドクルーや顧客向けビューのために、現在の派遣プランに関連付けられたSite、RentalOrder、およびInventoryUnit行への読み取りを制限します。
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
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Site",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"siteCode": {
"type": "String",
"required": true
},
"name": {
"type": "String",
"required": true
},
"address": {
"type": "String",
"required": true
},
"gpsLat": {
"type": "Number",
"required": true
},
"gpsLng": {
"type": "Number",
"required": true
},
"contactName": {
"type": "String",
"required": false
},
"contactPhone": {
"type": "String",
"required": false
},
"customer": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "InventoryUnit",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"unitTag": {
"type": "String",
"required": true
},
"unitType": {
"type": "String",
"required": true
},
"status": {
"type": "String",
"required": true
},
"lastServicedAt": {
"type": "Date",
"required": false
},
"currentSite": {
"type": "Pointer",
"required": false,
"targetClass": "Site"
},
"owner": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "RentalOrder",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"orderNumber": {
"type": "String",
"required": true
},
"status": {
"type": "String",
"required": true
},
"startDate": {
"type": "Date",
"required": true
},
"endDate": {
"type": "Date",
"required": false
},
"site": {
"type": "Pointer",
"required": true,
"targetClass": "Site"
},
"assignedUnits": {
"type": "Array",
"required": true,
"targetClass": "InventoryUnit"
},
"customer": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"serviceIntervalDays": {
"type": "Number",
"required": true
},
"notes": {
"type": "String",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "ServiceInterval",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"serviceCode": {
"type": "String",
"required": true
},
"scheduledAt": {
"type": "Date",
"required": true
},
"completedAt": {
"type": "Date",
"required": false
},
"status": {
"type": "String",
"required": true
},
"order": {
"type": "Pointer",
"required": true,
"targetClass": "RentalOrder"
},
"unit": {
"type": "Pointer",
"required": true,
"targetClass": "InventoryUnit"
},
"serviceNotes": {
"type": "String",
"required": false
},
"performedBy": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "LocationPing",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"pingedAt": {
"type": "Date",
"required": true
},
"gpsLat": {
"type": "Number",
"required": true
},
"gpsLng": {
"type": "Number",
"required": true
},
"source": {
"type": "String",
"required": true
},
"unit": {
"type": "Pointer",
"required": true,
"targetClass": "InventoryUnit"
},
"order": {
"type": "Pointer",
"required": false,
"targetClass": "RentalOrder"
},
"capturedBy": {
"type": "Pointer",
"required": true,
"targetClass": "User"
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
}
]
}AIエージェントで構築
このテンプレートからフロントエンド、バックエンド、認証、およびSite、InventoryUnit、RentalOrder、ServiceIntervalおよびLocationPingフローを含む実際のポータブルトイレレンタルアプリを生成するためにBack4app AIエージェントを使用します。
この正確なスキーマと動作を使用して、Back4app上に安全なポータブルトイレレンタルアプリのバックエンドを作成します。 スキーマ: 1. ユーザー(Back4appの組み込みを使用):ユーザー名、メール、パスワード、役割; objectId、createdAt、updatedAt(システム)。 2. サイト:siteCode、名前、住所、gpsLat、gpsLng、連絡先名、連絡先電話、顧客(ユーザーへのポインタ); objectId、createdAt、updatedAt(システム)。 3. 在庫ユニット:unitTag、unitType、ステータス、最終サービス日時、currentSite(サイトへのポインタ)、owner(ユーザーへのポインタ); objectId、createdAt、updatedAt(システム)。 4. レンタルオーダー:orderNumber、ステータス、開始日、終了日、site(サイトへのポインタ)、assignedUnits(Pointer<InventoryUnit>の配列)、顧客(ユーザーへのポインタ)、serviceIntervalDays、メモ; objectId、createdAt、updatedAt(システム)。 5. サービス間隔:serviceCode、scheduledAt、completedAt、ステータス、order(RentalOrderへのポインタ)、unit(InventoryUnitへのポインタ)、serviceNotes、performedBy(ユーザーへのポインタ); objectId、createdAt、updatedAt(システム)。 6. ロケーションピング:pingedAt、gpsLat、gpsLng、source、unit(InventoryUnitへのポインタ)、order(RentalOrderへのポインタ、オプション)、capturedBy(ユーザーへのポインタ); objectId、createdAt、updatedAt(システム)。 セキュリティ: - 顧客は自分のサイト、レンタルオーダー、サービス間隔、ロケーションピングのエントリのみを表示できます。 - ディスパッチャーはサービス間隔のレコードを作成および更新し、ロケーションピングデータをキャプチャできます。 - アセットオーナーは在庫ユニットのステータスを管理し、オーダーの割り当てを表示できます。 - 役割が承認されていない限り、ロケーションおよび顧客の連絡先フィールドは非公開に保つ必要があります。 認証: - サインアップ、ログイン、ログアウト。 動作: - レンタルオーダーのリスト作成、サイトの作成、在庫ユニットの割り当て、サービス間隔のスケジュール、GPSピングの記録。 - ディスパッチおよび顧客の可視性のために在庫ステータスとサービス履歴を正確に保つ。 提供: - レンタルデスクのスタッフ、アセットオーナー、およびポータブルトイレサービスを予約する顧客のためのスキーマ、CLP、ACL、およびフロントエンドフローを持つBack4appアプリ。
以下のボタンを押して、このテンプレートプロンプトが事前に入力されたエージェントを開いてください。
これは技術接尾辞のない基本的なプロンプトです。生成されたフロントエンドスタックは後で調整できます。
APIサンドボックス
ポータブルトイレレンタルスキーマに対してRESTとGraphQLエンドポイントを試してください。レスポンスはモックデータを使用しており、Back4appアカウントは必要ありません。
このテンプレートと同じスキーマを使用しています。
スタックを選択
各カードを展開して、選択したスタックで Site、InventoryUnit、および RentalOrder を統合する方法を確認してください。
Flutter ポータブルトイレレンタルバックエンド
React ポータブルトイレレンタルバックエンド
React ネイティブ ポータブルトイレレンタルバックエンド
Next.js ポータブルトイレレンタルバックエンド
JavaScript ポータブルトイレレンタルバックエンド
Android ポータブルトイレレンタルバックエンド
iOS ポータブルトイレレンタルバックエンド
Vue ポータブルトイレレンタルバックエンド
Angular ポータブルトイレレンタルバックエンド
GraphQL ポータブルトイレレンタルバックエンド
REST API ポータブルトイレレンタルバックエンド
PHP ポータブルトイレレンタルバックエンド
.NET ポータブルトイレレンタルバックエンド
すべての技術で得られるもの
すべてのスタックは同じポータブルトイレレンタルのバックエンドスキーマとAPI契約を使用します。
統一されたレンタルデータ構造
ユーザー、サイト、InventoryUnit、RentalOrder、ServiceInterval、および LocationPing を一貫したスキーマで管理します。
レンタルのサービスインターバルログ
各クリーンアウト、再補充、検査を同じ ServiceInterval モデルで記録します。
GPS 対応の位置追跡
LocationPing の緯度と経度を正しい InventoryUnit と RentalOrder に紐付けます。
ポータブルユニットの在庫管理
在庫、メンテナンス、出荷のための status と lastServicedAt フィールドを定義します。
REST/GraphQL レンタル用 API
注文およびサービスフローのために柔軟なエンドポイントを持つモバイルおよびウェブクライアントと統合します。
拡張可能なオペレーションアーキテクチャ
基本モデルを壊すことなく、後で配信アラート、検査写真、または請求クラスを追加します。
ポータブルレンタルスタック比較
すべてのサポートされている技術にわたるセットアップ速度、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分)セットアップ | 派遣およびレンタル管理のためのエンタープライズWebアプリ。 | 入力されたSDK | フル | |
| 2分未満 | ネストされたサイトおよびサービスクエリのための柔軟なGraphQL API。 | GraphQL API | フル | |
| 迅速な(2分)セットアップ | 予約およびルート更新のためのREST API統合。 | REST API | フル | |
| ~3分 | レンタルデスクのワークフローのためのサーバーサイド PHP バックエンド。 | REST API | フル | |
| 約3~7分 | 配信および在庫操作のための .NET バックエンド。 | タイプされたSDK | フル |
セットアップ時間は、このテンプレートスキーマを使用してプロジェクトのブートストラップから最初のInventoryUnit、RentalOrder、ServiceInterval、またはLocationPingクエリまでの期待される期間を反映します。
ポータブルレンタルに関する質問
このテンプレートを使ってポータブルトイレレンタルバックエンドを構築する際の一般的な質問。