Бэкенд приложения для аренды портативных туалетов для сайта, заказа, обслуживания и GPS
Маршрутизация сайта, визиты обслуживания и отслеживание единиц
Готовый к производству бэкенд аренды портативных туалетов на Back4app, основанный на User, Site, InventoryUnit, RentalOrder, ServiceInterval и LocationPing. Отслеживайте отправку, визиты обслуживания и GPS-сигналы без необходимости создавать индивидуальный бэкенд.
Основные выводы по аренде
Этот шаблон предлагает вам бэкенд аренды портативного туалета, сосредоточенный на Пользователе, Месте, ЕдиницеИнвентаря, ЗаказеАренды, ИнтервалеОбслуживания и СигналеМестоположения, чтобы диспетчеры, владельцы и клиенты могли оставаться на одной волне.
- Заказы на аренду остаются связанными с местами — Используйте RentalOrder.site и RentalOrder.assignedUnits, чтобы сохранить каждое бронирование привязанным к правильному объекту работы и единицам портативного туалета.
- Сервисные визиты отслеживаются — Моделируйте каждый ИнтервалОбслуживания с serviceCode, scheduledAt, completedAt, unit, performedBy и serviceNotes.
- Статус инвентаря явно указан — InventoryUnit.status и InventoryUnit.lastServicedAt показывают, доступна ли единица, отправлена, очищена или на обслуживании.
- Поддержка GPS-сигналов для полевых работ — LocationPing хранит gpsLat, gpsLng, source, unit и необязательные ссылки на заказы для приложения водителя, трекера или обновлений диспетчеризации.
Обзор: Приложение для аренды переносных туалетов
Возвраты и проверки завершают цикл аренды переносных туалетов — система должна зафиксировать состояние и ответственность перед началом следующей аренды. Стоимость отображается в обратных вызовах и кредитах. Используйте основные сущности ${BRAND0} для кодирования доступности аренды переносных туалетов, ценовых ссылок и записей о выполнении в одной целостной бэкенд-системе. Схема охватывает User, Site, InventoryUnit, RentalOrder, ServiceInterval и LocationPing с функциями авторизации и рабочего процесса аренды.
Лучше всего подходит для:
Как организован этот бэкенд аренды переносных туалетов
Если включение нового сотрудника в аренду переносных туалетов требует специальных знаний, вы находитесь в одной отставке от единой точки отказа.
Центр ведет записи пользователей на основе ролей, назначение устройств и отслеживание статуса, журналы интервалов обслуживания, обеспечивая единообразие языка, чтобы продукт, операции и инженерия означали одно и то же, когда они говорят «запись».
Основные функции аренды переносных туалетов
Каждая карточка технологии в этом хабе использует одну и ту же схему аренды мобильных туалетов с 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 запросов агента ИИ в месяц, без необходимости в кредитной карте
Портативный аренда технологического стека
Все включено в этот шаблон бэкенда аренды портативного туалета.
Карта схемы аренды
Модель взаимосвязей сущностей для схемы бэкенда аренды переносных туалетов.
Схема, охватывающая пользователей, сайты, инвентарные единицы, заказы аренды, интервалы обслуживания и локационные пинги.
Посмотреть источник диаграммы
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-схема
Сырьевая определение JSON-схемы готово для копирования в Back4app или использования в качестве справочного материала по реализации.
{
"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 с этой точной схемой и поведением. Схема: 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 и фронтенд-потоками для сотрудников аренды, владельцев активов и клиентов, бронирующих услуги по аренде переносных туалетов.
Нажмите кнопку ниже, чтобы открыть Агент с этой предзаполненной шаблонной подсказкой.
Это базовая подсказка без суффикса технологии. Вы можете адаптировать сгенерированный стек фронтенда позже.
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 с использованием этой схемы шаблона.
Вопросы по аренде портативных туалетов
Общие вопросы о создании бэкенда аренды портативных туалетов с помощью этого шаблона.
Готовы создать ваше приложение для аренды переносных туалетов?
Начните ваш проект аренды переносных туалетов за считанные минуты. Кредитная карта не требуется.