Backend de l'application de location de toilettes portables pour Site, Commande, Service et GPS
Routage de site, visites de service et suivi d'unités
Un backend de location de toilettes portables prêt pour la production sur Back4app construit autour de User, Site, InventoryUnit, RentalOrder, ServiceInterval, et LocationPing. Suivez les envois, les visites de service et les pings GPS sans assembler un backend personnalisé.
Principaux points à retenir sur la location
Ce modèle vous offre un backend de location de toilettes portables centré sur l'utilisateur, le site, l'unité d'inventaire, la commande de location, l'intervalle de service et le ping de localisation afin que les expéditeurs, propriétaires et clients puissent rester alignés.
- Les commandes de location restent liées aux sites — Utilisez RentalOrder.site et RentalOrder.assignedUnits pour garder chaque réservation liée au bon site de travail et aux unités de toilettes portables.
- Les visites de service sont traçables — Modélisez chaque ServiceInterval avec serviceCode, scheduledAt, completedAt, unit, performedBy et serviceNotes.
- L'état de l'inventaire est explicite — InventoryUnit.status et InventoryUnit.lastServicedAt montrent si une unité est disponible, expédiée, en nettoyage ou en maintenance.
- Le support des pings GPS pour le travail sur le terrain — LocationPing stocke gpsLat, gpsLng, source, unité et des liens de commande optionnels pour l'application du conducteur, le tracker ou les mises à jour d'expédition.
Aperçu : Application de location de toilettes portables
Les retours et les inspections ferment la boucle dans la location de toilettes portables — le système doit capturer l'état et la responsabilité avant que la prochaine location ne commence. Le coût apparaît dans les rappels et les crédits. Utilisez les entités principales sur Back4app pour encoder la disponibilité des locations de toilettes portables, les accroches de prix et les enregistrements de satisfaction dans un backend cohérent. Le schéma couvre l'utilisateur, le site, l'unité d'inventaire, la commande de location, l'intervalle de service et LocationPing avec des fonctionnalités d'authentification et de flux de travail de location intégrées. Connectez votre frontend préféré et expédiez plus rapidement.
Idéal pour :
Comment ce backend de location de toilettes portables est organisé
Si l'intégration d'un nouvel employé dans la location de toilettes portables nécessite des connaissances tribales, vous êtes à un départ d'un point de défaillance unique.
Le hub maintient les enregistrements d'utilisateurs basés sur les rôles, l'attribution d'unités et le suivi des statuts, les journaux d'intervalle de service dans une langue cohérente afin que produit, opérations et ingénierie signifient la même chose lorsqu'ils disent « enregistrement ».
Caractéristiques principales de la location de toilettes portables
Chaque carte technologique dans ce hub utilise le même schéma de location de toilettes portables avec User, Site, InventoryUnit, RentalOrder, ServiceInterval, et LocationPing.
Enregistrements d'utilisateurs basés sur les rôles
L'utilisateur stocke le nom d'utilisateur, l'email, le mot de passe et le rôle pour l'accès au répartiteur, au propriétaire ou au client.
Attribution d'unités et suivi de l'état
InventoryUnit lie unitTag, unitType, status, currentSite et owner.
Logs d'intervalle de service
ServiceInterval stocke serviceCode, scheduledAt, completedAt, status, unit, et performedBy.
pings de localisation GPS
LocationPing conserve pingedAt, gpsLat, gpsLng, source, unit, et order.
Coordination de site et de location
Le site et le RentalOrder préservent le site de travail, le contact et les unités de toilettes portables assignées.
Pourquoi construire votre backend de location de toilettes portables avec Back4app ?
Back4app vous fournit les primitives de location, de trajet et de service afin que votre équipe puisse se concentrer sur le dispatch et le travail de site au lieu de l'infrastructure.
- •Le site et les enregistrements de commande restent liés: Le site, la commande de location et l'unité d'inventaire conservent chaque site de travail, réservation et affectation d'actif dans une seule traînée.
- •Les journaux de service sont structurés: ServiceInterval capture serviceCode, scheduledAt, completedAt, serviceNotes, performedBy et l'unité concernée.
- •L'inventaire reste à jour: InventoryUnit indique si une unité est disponible, dispatchée, en nettoyage ou en maintenance tandis que Live Queries tient les bureaux informés.
Construisez et itérez rapidement sur les opérations de location avec un seul contrat backend sur toutes les plateformes.
Avantages de la location de toilettes portables
Un backend de location qui vous aide à maintenir les itinéraires, le travail de service et l'inventaire alignés.
Décisions de dispatch plus rapides
Utilisez Site, RentalOrder et InventoryUnit au lieu de reconstituer les données de route depuis le début.
Responsabilité claire du service
Utilisez ServiceInterval, serviceCode et performedBy pour montrer qui a complété chaque intervalle et quand cela s'est produit.
Les mises à jour des clients restent cohérentes
Gardez User, Site.contactName et Site.contactPhone liés à la bonne commande de location.
Le contrôle de l'inventaire est explicite
InventoryUnit.status et lastServicedAt facilitent le marquage des unités disponibles, dispatchées, en nettoyage ou en maintenance.
Opérations sensibles à la localisation
LocationPing.gpsLat et gpsLng aident les équipes à vérifier où une unité a été livrée ou entretenue.
Flux de travail de démarrage AI
Générez rapidement une structure backend et des conseils d'intégration avec un prompt structuré.
Prêt à lancer votre application de location de toilettes portables ?
Laissez l'agent AI Back4app structurer votre backend de location de toilettes portables et générer des flux pour Site, InventoryUnit, RentalOrder, ServiceInterval et LocationPing à partir d'un prompt.
Gratuit pour commencer — 50 prompts d'agent AI/mois, pas de carte de crédit requise
Technologie de location portable
Tout est inclus dans ce modèle de backend de location de toilettes portables.
Carte du schéma de location
Modèle de relation d'entité pour le schéma backend de location de toilettes portables.
Schéma couvrant les utilisateurs, les sites, les unités d'inventaire, les commandes de location, les intervalles de service et les pings de localisation.
Voir la source du diagramme
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
}
Flux d'intégration de dispatch
Flux d'exécution typique pour la connexion, la recherche de CommandeDeLocation, l'attribution d'UnitéD’inventaire, l'enregistrement d'IntervalleDeService et la capture de LocalisationPing.
Voir la source du diagramme
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 statusGuide de location
Référence complète au niveau des champs pour chaque classe dans le schéma de location de toilettes portables.
| Champ | Type | Description | Requis |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | Auto |
| 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 | Auto |
| updatedAt | Date | Auto-generated last-update timestamp | Auto |
7 champs dans User
Contrôle d'accès pour les données de location
Comment la stratégie ACL et CLP sécurise les utilisateurs, les sites, les commandes, les visites de service et les pings de localisation.
Contrôles du compte client
Seul le client peut mettre à jour ses propres champs d'utilisateur et voir ses données de Site, deCommandeDeLocation, d'IntervalleDeService et de PingDeLocalisation tel qu'assigné.
Intégrité du service et des stocks
Seul le personnel autorisé peut créer des enregistrements ServiceInterval et LocationPing, et seuls les propriétaires d'actifs peuvent gérer le statut d'InventoryUnit.
Accès aux routes limité
Limitez les lectures aux lignes Site, RentalOrder et InventoryUnit liées au plan d'expédition actuel, en particulier pour les équipes sur le terrain et les vues orientées client.
Schéma JSON
Définition brute du schéma JSON prête à être copiée dans Back4app ou utilisée comme référence d'implémentation.
{
"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
}
}
}
]
}Construire avec l'agent IA
Utilisez l'agent IA Back4app pour générer une véritable application de location de toilettes portables à partir de ce modèle, y compris le frontend, le backend, l'authentification et les flux Site, InventoryUnit, RentalOrder, ServiceInterval et LocationPing.
Créez un backend d'application de location de toilettes portables sécurisé sur Back4app avec ce schéma et ce comportement exact. Schéma : 1. Utilisateur (utiliser Back4app intégré) : nom d'utilisateur, email, mot de passe, rôle ; objectId, createdAt, updatedAt (système). 2. Site : siteCode, nom, adresse, gpsLat, gpsLng, contactName, contactPhone, client (Pointer vers Utilisateur) ; objectId, createdAt, updatedAt (système). 3. InventoryUnit : unitTag, unitType, status, lastServicedAt, currentSite (Pointer vers Site), owner (Pointer vers Utilisateur) ; objectId, createdAt, updatedAt (système). 4. RentalOrder : orderNumber, status, startDate, endDate, site (Pointer vers Site), assignedUnits (Array de Pointer<InventoryUnit>), client (Pointer vers Utilisateur), serviceIntervalDays, notes ; objectId, createdAt, updatedAt (système). 5. ServiceInterval : serviceCode, scheduledAt, completedAt, status, order (Pointer vers RentalOrder), unit (Pointer vers InventoryUnit), serviceNotes, performedBy (Pointer vers Utilisateur) ; objectId, createdAt, updatedAt (système). 6. LocationPing : pingedAt, gpsLat, gpsLng, source, unit (Pointer vers InventoryUnit), order (Pointer vers RentalOrder, optionnel), capturedBy (Pointer vers Utilisateur) ; objectId, createdAt, updatedAt (système). Sécurité : - Les clients ne peuvent voir que leur propre Site, RentalOrder, ServiceInterval et entrées LocationPing. - Les répartiteurs peuvent créer et mettre à jour des enregistrements ServiceInterval et capturer des données LocationPing. - Les propriétaires d'actifs peuvent gérer l'état d'InventoryUnit et voir les assignations de commande. - Gardez les champs de contact de localisation et de client privés, sauf si le rôle est autorisé. Auth : - Inscription, connexion, déconnexion. Comportement : - Lister les commandes de location, créer des sites, attribuer des unités d'inventaire, planifier des intervalles de service et enregistrer des pings GPS. - Gardez l'état de l'inventaire et l'historique de service précis pour la visibilité de la répartition et du client. Livrer : - Application Back4app avec schéma, CLPs, ACLs et flux frontend pour le personnel du bureau de location, les propriétaires d'actifs et les clients réservant le service de toilettes portables.
Appuyez sur le bouton ci-dessous pour ouvrir l'Agent avec ce modèle de prompt pré-rempli.
Ceci est le prompt de base sans suffixe technologique. Vous pouvez adapter la pile frontend générée par la suite.
API Sandbox
Essayez les points de terminaison REST et GraphQL contre le schéma de location de toilettes portables. Les réponses utilisent des données fictives et ne nécessitent pas de compte Back4app.
Utilise le même schéma que ce modèle.
Choisissez votre pile
Développez chaque carte pour voir comment intégrer Site, InventoryUnit et RentalOrder avec votre pile choisie.
Flutter Service de location de toilettes portables
React Service de location de toilettes portables
React Natif Service de location de toilettes portables
__MARQUE0__ Service de location de toilettes portables
__MARQUE0__ Service de location de toilettes portables
__MARQUE0__ Service de location de toilettes portables
__MARQUE0__ Service de location de toilettes portables
__MARQUE0__ Service de location de toilettes portables
__MARQUE0__ Service de location de toilettes portables
__MARQUE0__ Service de location de toilettes portables
__MARQUE0__ Service de location de toilettes portables
__MARQUE0__ Service de location de toilettes portables
__MARQUE0__ Service de location de toilettes portables
Ce que vous obtenez avec chaque technologie
Chaque pile utilise le même schéma de backend de location de toilettes portables et les contrats d'API.
Structure de données de location unifiée
Gérez l'utilisateur, le site, l'InventoryUnit, le RentalOrder, l'intervalle de service et le LocationPing avec un schéma cohérent.
Logs d'intervalle de service pour les locations
Enregistrez chaque nettoyage, réapprovisionnement et inspection avec le même modèle ServiceInterval.
Suivi de localisation avec GPS
Gardez la latitude et la longitude de LocationPing liées à la bonne InventoryUnit et RentalOrder.
Contrôle des stocks pour les unités portables
Définissez les états et les champs lastServicedAt pour le stock, la maintenance et l'expédition.
API REST/GraphQL pour les locations
Intégrez les clients mobiles et web avec des points de terminaison flexibles pour les flux de commande et de service.
Architecture des opérations extensible
Ajoutez des alertes d'expédition, des photos d'inspection ou des classes de facturation plus tard sans casser le modèle de base.
Comparaison de la pile de location portable
Comparez la vitesse de configuration, le style du SDK et le support de l'IA à travers toutes les technologies prises en charge.
| Cadre | Temps de configuration | Avantage de location | Type de SDK | Support AI |
|---|---|---|---|---|
| Environ 5 minutes | Base de code unique pour les écrans de bureau de location et de l'équipe sur le terrain. | SDK typé | Complet | |
| Moins de 5 minutes | Tableau de bord web rapide pour la disponibilité des unités et les journaux de service. | SDK tapé | Complet | |
| ~3–7 min | Application mobile multiplateforme pour les visites de sites et les inspections. | SDK tapé | Complet | |
| Configuration rapide (5 min) | Portail de dispatch rendu côté serveur pour les opérations de location. | SDK tapé | Complet | |
| ~3–5 min | Intégration web légère pour les écrans de réservation et de service. | SDK tapé | Complet | |
| Environ 5 min | Application native Android pour les conducteurs et les mises à jour d'itinéraire. | SDK typé | Complet | |
| Moins de 5 minutes | Application native iOS pour les visites de sites et les vérifications de livraison. | SDK typé | Complet | |
| ~3–7 min | Reactive interface web pour les panneaux de service et d'inventaire. | SDK typé | Complet | |
| Configuration rapide (5 min) | Application web d'entreprise pour la gestion des dispatchs et des locations. | SDK tapé | Complet | |
| Moins de 2 min | API flexible GraphQL pour les requêtes de sites et de services imbriqués. | API GraphQL | Complet | |
| Configuration rapide (2 min) | Intégration REST API pour les réservations et les mises à jour d'itinéraires. | REST API | Complet | |
| ~3 min | Backend PHP côté serveur pour les workflows de comptoir de location. | REST API | Complet | |
| ~3–7 min | Backend .NET pour les opérations de dispatch et d'inventaire. | SDK typé | Complet |
Le temps de configuration reflète la durée prévue depuis le démarrage du projet jusqu'à la première requête InventoryUnit, RentalOrder, ServiceInterval ou LocationPing utilisant ce schéma de modèle.
Questions sur la location de toilettes portables
Questions courantes sur la création d'un backend de location de toilettes portables avec ce modèle.
Prêt à construire votre application de location de toilettes portables ?
Démarrez votre projet de location de toilettes portables en quelques minutes. Aucune carte de crédit requise.