Location de Toilettes Portables
Construire avec Agent IA
Backend de location de toilettes portables

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.

  1. Les commandes de location restent liées aux sitesUtilisez RentalOrder.site et RentalOrder.assignedUnits pour garder chaque réservation liée au bon site de travail et aux unités de toilettes portables.
  2. Les visites de service sont traçablesModélisez chaque ServiceInterval avec serviceCode, scheduledAt, completedAt, unit, performedBy et serviceNotes.
  3. L'état de l'inventaire est expliciteInventoryUnit.status et InventoryUnit.lastServicedAt montrent si une unité est disponible, expédiée, en nettoyage ou en maintenance.
  4. Le support des pings GPS pour le travail sur le terrainLocationPing 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 :

Opérations de location de toilettes portablesApplications de bureau de service et d'expéditionSuivi des itinéraires des équipes de terrainOutils de visibilité d'inventairePortails de réservation clientÉquipes choisissant BaaS pour des produits en location

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.

Frontend
13+ technologies
Backend
Back4app
Base de données
MongoDB
Authentification
Authentification intégrée + sessions
API
REST et GraphQL
Temps réel
Live Queries

Carte du schéma de location

Modèle de relation d'entité pour le schéma backend de location de toilettes portables.

Voir la source du diagramme
Mermaid
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
Mermaid
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

Guide de location

Référence complète au niveau des champs pour chaque classe dans le schéma de location de toilettes portables.

ChampTypeDescriptionRequis
objectIdStringAuto-generated unique identifierAuto
usernameStringUser login name
emailStringUser email address
passwordStringHashed password (write-only)
roleStringRole of the user (e.g., dispatcher, owner, customer)
createdAtDateAuto-generated creation timestampAuto
updatedAtDateAuto-generated last-update timestampAuto

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.

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
        }
      }
    }
  ]
}

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.

Agent IA Back4app
Prêt à construire
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.

Déployer en quelques minutes50 prompts gratuits / moisAucune carte de crédit requise

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.

Chargement de l'aire de jeux…

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.

CadreTemps de configurationAvantage de locationType de SDKSupport AI
Environ 5 minutesBase de code unique pour les écrans de bureau de location et de l'équipe sur le terrain.SDK typéComplet
Moins de 5 minutesTableau de bord web rapide pour la disponibilité des unités et les journaux de service.SDK tapéComplet
~3–7 minApplication 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 minIntégration web légère pour les écrans de réservation et de service.SDK tapéComplet
Environ 5 minApplication native Android pour les conducteurs et les mises à jour d'itinéraire.SDK typéComplet
Moins de 5 minutesApplication native iOS pour les visites de sites et les vérifications de livraison.SDK typéComplet
~3–7 minReactive 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 minAPI flexible GraphQL pour les requêtes de sites et de services imbriqués.API GraphQLComplet
Configuration rapide (2 min)Intégration REST API pour les réservations et les mises à jour d'itinéraires.REST APIComplet
~3 minBackend PHP côté serveur pour les workflows de comptoir de location.REST APIComplet
~3–7 minBackend .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.

Que devraient instrumenter en premier les opérateurs de location de toilettes portables lors de l'expansion vers un deuxième site ?
Quels événements de location de toilettes portables devraient déclencher automatiquement des notifications aux clients ?
Ce backend de location de toilettes portables peut-il évoluer vers un inventaire multi-site et des règles de tarification centralisées ?
Comment montrer les unités et les visites de service dans Flutter ?
Comment gérer les pings GPS dans Next.js ?
React Native peut-il mettre en cache le statut de l'inventaire hors ligne ?
Comment puis-je empêcher les modifications non autorisées des unités ?
Quelle est la meilleure façon de montrer la disponibilité des toilettes portables sur Android ?

Fiable pour les développeurs du monde entier

Rejoignez des équipes expédiant des produits de location de toilettes portables plus rapidement avec les modèles Back4app

G2 Users Love Us Badge

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.

Choisir la technologie