Аренда переносного туалета
Создано с AI Agent
Бэкенд аренды портативных туалетов

Бэкенд приложения для аренды портативных туалетов для сайта, заказа, обслуживания и GPS
Маршрутизация сайта, визиты обслуживания и отслеживание единиц

Готовый к производству бэкенд аренды портативных туалетов на Back4app, основанный на User, Site, InventoryUnit, RentalOrder, ServiceInterval и LocationPing. Отслеживайте отправку, визиты обслуживания и GPS-сигналы без необходимости создавать индивидуальный бэкенд.

Основные выводы по аренде

Этот шаблон предлагает вам бэкенд аренды портативного туалета, сосредоточенный на Пользователе, Месте, ЕдиницеИнвентаря, ЗаказеАренды, ИнтервалеОбслуживания и СигналеМестоположения, чтобы диспетчеры, владельцы и клиенты могли оставаться на одной волне.

  1. Заказы на аренду остаются связанными с местамиИспользуйте RentalOrder.site и RentalOrder.assignedUnits, чтобы сохранить каждое бронирование привязанным к правильному объекту работы и единицам портативного туалета.
  2. Сервисные визиты отслеживаютсяМоделируйте каждый ИнтервалОбслуживания с serviceCode, scheduledAt, completedAt, unit, performedBy и serviceNotes.
  3. Статус инвентаря явно указанInventoryUnit.status и InventoryUnit.lastServicedAt показывают, доступна ли единица, отправлена, очищена или на обслуживании.
  4. Поддержка GPS-сигналов для полевых работLocationPing хранит gpsLat, gpsLng, source, unit и необязательные ссылки на заказы для приложения водителя, трекера или обновлений диспетчеризации.

Обзор: Приложение для аренды переносных туалетов

Возвраты и проверки завершают цикл аренды переносных туалетов — система должна зафиксировать состояние и ответственность перед началом следующей аренды. Стоимость отображается в обратных вызовах и кредитах. Используйте основные сущности ${BRAND0} для кодирования доступности аренды переносных туалетов, ценовых ссылок и записей о выполнении в одной целостной бэкенд-системе. Схема охватывает User, Site, InventoryUnit, RentalOrder, ServiceInterval и LocationPing с функциями авторизации и рабочего процесса аренды.

Лучше всего подходит для:

Операции аренды переносных туалетовПриложения для сервисного центра и диспетчеризацииОтслеживание маршрута полевых рабочихИнструменты видимости инвентаряПорталы для бронирования клиентовКоманды выбирают BaaS для аренды продуктов

Как организован этот бэкенд аренды переносных туалетов

Если включение нового сотрудника в аренду переносных туалетов требует специальных знаний, вы находитесь в одной отставке от единой точки отказа.

Центр ведет записи пользователей на основе ролей, назначение устройств и отслеживание статуса, журналы интервалов обслуживания, обеспечивая единообразие языка, чтобы продукт, операции и инженерия означали одно и то же, когда они говорят «запись».

Основные функции аренды переносных туалетов

Каждая карточка технологии в этом хабе использует одну и ту же схему аренды мобильных туалетов с User, Site, InventoryUnit, RentalOrder, ServiceInterval и LocationPing.

Ролевые пользовательские записи

Пользователь хранит имя пользователя, электронную почту, пароль и роль для доступа диспетчера, владельца или клиента.

Назначение единиц и отслеживание статуса

InventoryUnit связывает unitTag, unitType, статус, currentSite и владельца.

Журналы интервалов обслуживания

ServiceInterval хранит serviceCode, scheduledAt, completedAt, статус, unit и performedBy.

GPS-сигналы

LocationPing хранит pingedAt, gpsLat, gpsLng, source, unit и order.

Координация сайта и аренды

Сайт и RentalOrder сохраняют рабочую площадку, контактные данные и назначенные мобильные туалеты.

Почему стоит создать бэкенд аренды переносных туалетов с Back4app?

Back4app дает вам первичные функции аренды, маршрутов и обслуживания, чтобы ваша команда могла сосредоточиться на диспетчеризации и работе на месте вместо инфраструктуры.

  • Записи сайта и заказа остаются связанными: Сайт, ЗаказАренды и ЕдиницаИнвентаря сохраняют каждое место работы, бронирование и назначение актива в одном следе.
  • Журналы обслуживания структурированы: ServiceInterval фиксирует serviceCode, scheduledAt, completedAt, serviceNotes, performedBy и единицу, которую он затронул.
  • Инвентарь актуален: InventoryUnit показывает, доступна ли единица, отправлена, на очистке или на обслуживании, в то время как Live Queries держит рабочих в курсе.

Быстро создавайте и внедряйте операции аренды с помощью одного контракта на бэкенде на всех платформах.

Преимущества аренды переносных туалетов

Бэкенд аренды, который помогает вам поддерживать соответствие маршрутов, сервисных работ и запасов.

Быстрее принимать решения о диспетчеризации

Используйте Site, RentalOrder и InventoryUnit вместо того, чтобы собирать данные о маршруте с нуля.

Четкая ответственность за сервис

Используйте ServiceInterval, serviceCode и performedBy, чтобы показать, кто выполнил каждый интервал и когда это произошло.

Обновления для клиентов остаются последовательными

Сохраняйте User, Site.contactName и Site.contactPhone связанными с правильным заказом на аренду.

Контроль запаса является явным

InventoryUnit.status и lastServicedAt упрощают пометку единиц, которые доступны, отправлены, находятся в уборке или обслуживании.

Операции с учетом местоположения

LocationPing.gpsLat и gpsLng помогают командам проверить, где было доставлено или обслужено устройство.

Рабочий процесс начальной загрузки ИИ

Быстро создайте структуру бэкенда и руководство по интеграции с одним структурированным запросом.

Готовы запустить свое приложение по аренде туалетов?

Позвольте агенту ИИ Back4app создать структуру вашего бэкенда по аренде туалетов и сгенерировать потоки Site, InventoryUnit, RentalOrder, ServiceInterval и LocationPing из одного запроса.

Бесплатно для начала — 50 запросов агента ИИ в месяц, без необходимости в кредитной карте

Портативный аренда технологического стека

Все включено в этот шаблон бэкенда аренды портативного туалета.

Фронтенд
13+ технологий
Бэкенд
Back4app
База данных
MongoDB
Аутентификация
Встроенная аутентификация + сессии
API
REST и GraphQL
В реальном времени
Live Queries

Карта схемы аренды

Модель взаимосвязей сущностей для схемы бэкенда аренды переносных туалетов.

Посмотреть источник диаграммы
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
    }

Поток интеграции отправки

Типичный рабочий процесс для входа в систему, поиска Заказа Аренды, назначения Инвентарной Единицы, записи Интервала Обслуживания и захвата Локационного Пинга.

Посмотреть источник диаграммы
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

Полевой справочник по аренде

Полная справка по полевым уровням для каждого класса в схеме аренды переносных туалетов.

ПолеТипОписаниеОбязательный
objectIdStringAuto-generated unique identifierАвто
usernameStringUser login name
emailStringUser email address
passwordStringHashed password (write-only)
roleStringRole of the user (e.g., dispatcher, owner, customer)
createdAtDateAuto-generated creation timestampАвто
updatedAtDateAuto-generated last-update timestampАвто

7 поля в User

Управление доступом к данным аренды

Как стратегия ACL и CLP защищает пользователей, сайты, заказы, сервисные посещения и местоположения.

Управление учетной записью клиента

Только клиент может обновлять свои поля пользователя и просматривать свои данные по сайту, заказу аренды, сервисному интервалу и данным о местоположении.

Целостность услуг и запасов

Только уполномоченный персонал может создавать записи ServiceInterval и LocationPing, и только владельцы активов могут управлять статусом InventoryUnit.

Доступ к маршруту с ограничениями

Ограничить чтение строк Site, RentalOrder и InventoryUnit, связанных с текущим планом отправки, особенно для полевых команд и представлений для клиентов.

JSON-схема

Сырьевая определение 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-агента

Используйте AI-агента Back4app для генерации реального приложения по аренде переносного туалета из этого шаблона, включая фронтенд, бэкенд, авторизацию и потоки Site, InventoryUnit, RentalOrder, ServiceInterval и LocationPing.

Back4app AI-агент
Готовы начинать
Создайте надежный бэкенд для приложения аренды переносного туалета на Back4app с этой точной схемой и поведением.

Схема:
1. Пользователь (используйте встроенный Back4app): имя пользователя, электронная почта, пароль, роль; objectId, createdAt, updatedAt (система).
2. Место: код сайта, название, адрес, gpsLat, gpsLng, имя контактного лица, телефон контактного лица, клиент (Указатель на Пользователя); objectId, createdAt, updatedAt (система).
3. ЕдиницаИнвентаря: тегЕдиницы, типЕдиницы, статус, датаПоследнегоОбслуживания, текущееМесто (Указатель на Место), владелец (Указатель на Пользователя); objectId, createdAt, updatedAt (система).
4. ЗаказАренды: номерЗаказа, статус, датаНачала, датаОкончания, место (Указатель на Место), назначенныеЕдиницы (Массив Указатель<ЕдиницаИнвентаря>), клиент (Указатель на Пользователя), интервалОбслуживанияДней, примечания; objectId, createdAt, updatedAt (система).
5. ИнтервалОбслуживания: кодОбслуживания, запланированоНа, завершеноНа, статус, заказ (Указатель на ЗаказАренды), единица (Указатель на ЕдиницуИнвентаря), примечанияПоОбслуживанию, выполнено (Указатель на Пользователя); objectId, createdAt, updatedAt (система).
6. ПингЛокации: времяПинга, gpsLat, gpsLng, источник, единица (Указатель на ЕдиницуИнвентаря), заказ (Указатель на ЗаказАренды, опционально), захвачено (Указатель на Пользователя); objectId, createdAt, updatedAt (система).

Безопасность:
- Клиенты могут видеть только свои собственные записи о Местах, ЗаказахАренды, ИнтервалахОбслуживания и ПингахЛокаций.
- Диспетчеры могут создавать и обновлять записи ИнтервалаОбслуживания и захватывать данные о ПингахЛокаций.
- Владельцы активов могут управлять статусом ЕдиницыИнвентаря и просматривать назначения заказов.
- Держите поля местоположения и контактов клиентов приватными, если роль не авторизована.

Аутентификация:
- Регистрация, вход, выход.

Поведение:
- Список заказов аренды, создание мест, назначение единиц инвентаря, планирование интервалов обслуживания и запись GPS-пингов.
- Сохраняйте точный статус инвентаря и историю обслуживания для видимости для диспетчеров и клиентов.

Доставка:
- Приложение Back4app с схемой, CLP, ACL и фронтенд-потоками для сотрудников аренды, владельцев активов и клиентов, бронирующих услуги по аренде переносных туалетов.

Нажмите кнопку ниже, чтобы открыть Агент с этой предзаполненной шаблонной подсказкой.

Это базовая подсказка без суффикса технологии. Вы можете адаптировать сгенерированный стек фронтенда позже.

Развернуть за минуты50 бесплатных подсказок / месяцКредитная карта не требуется

API Песочница

Попробуйте REST и GraphQL конечные точки против схемы аренды портативных туалетов. Ответы используют макетные данные и не требуют учетной записи Back4app.

Загрузка песочницы…

Использует ту же схему, что и этот шаблон.

Выберите свой стек

Разверните каждую карточку, чтобы увидеть, как интегрировать Site, InventoryUnit и RentalOrder с вашим выбранным стеком.

Flutter Аренда портативных туалетов Бэкенд

React Аренда портативных туалетов Бэкенд

React Нативный Аренда портативных туалетов Бэкенд

Next.js Аренда портативных туалетов Бэкенд

JavaScript Аренда портативных туалетов Бэкенд

Android Аренда портативных туалетов Бэкенд

iOS Аренда портативных туалетов Бэкенд

Vue Аренда портативных туалетов Бэкенд

Angular Аренда портативных туалетов Бэкенд

GraphQL Аренда портативных туалетов Бэкенд

REST API Аренда портативных туалетов Бэкенд

PHP Аренда портативных туалетов Бэкенд

.NET Аренда портативных туалетов Бэкенд

Что вы получаете с каждой технологией

Каждый стек использует одну и ту же схему и API-контракты для аренды переносных туалетов.

Единая структура данных аренды

Управляйте User, Site, InventoryUnit, RentalOrder, ServiceInterval и LocationPing с помощью единой схемы.

Журналы интервалов обслуживания для аренды

Записывайте каждую очистку, пополнение и инспекцию с использованием одной и той же модели ServiceInterval.

GPS-ориентированное отслеживание местоположения

Сохраняйте широту и долготу LocationPing, связанные с правильным InventoryUnit и RentalOrder.

Управление запасами для переносных устройств

Определите статус и поля lastServicedAt для склада, технического обслуживания и отправки.

REST/GraphQL API для аренды

Интегрируйте мобильные и веб-клиенты с гибкими конечными точками для потоков заказов и обслуживания.

Расширяемая архитектура операций

Добавьте оповещения об отправке, фотографии инспекций или классы выставления счетов позже, не разрывая основную модель.

Портативное сравнение стеков аренды

Сравните скорость настройки, стиль SDK и поддержку ИИ среди всех поддерживаемых технологий.

ФреймворкВремя настройкиАрендное преимуществоТип SDKПоддержка ИИ
Около 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Полный

Время настройки отражает ожидаемую продолжительность от запуска проекта до первого запроса InventoryUnit, RentalOrder, ServiceInterval или LocationPing с использованием этой схемы шаблона.

Вопросы по аренде портативных туалетов

Общие вопросы о создании бэкенда аренды портативных туалетов с помощью этого шаблона.

Что первоочередно должны сделать операторы аренды переносных туалетов при расширении на вторую локацию?
Какие события аренды переносных туалетов должны автоматически вызывать уведомления клиентам?
Может ли этот бэкенд аренды переносных туалетов масштабироваться для многосайтового инвентаря и централизованных ценовых правил?
Как мне показать единицы и сервисные посещения в Flutter?
Как мне управлять GPS-сигналами в Next.js?
Может ли React Native кэшировать статус инвентаря в оффлайне?
Как мне предотвратить несанкционированные изменения единиц?
Какой лучший способ показать доступность переносных туалетов в Android?

Доверием разработчиков по всему миру

Присоединяйтесь к командам, которые быстрее поставляют продукты аренды переносных туалетов с помощью шаблонов Back4app

G2 Users Love Us Badge

Готовы создать ваше приложение для аренды переносных туалетов?

Начните ваш проект аренды переносных туалетов за считанные минуты. Кредитная карта не требуется.

Выберите технологию