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

Сервис аренды складских ячеек ценен не «фишками», а тем, что убирает хаос в операциях: кто арендует какую ячейку, на каких условиях и можно ли сейчас выдавать доступ. Поэтому MVP лучше строить вокруг двух опор: клиентов и договоров. Все остальное (платежи, доступ, уведомления) проще и надежнее «пристегивать» к договору.
Для первой версии хватит набора функций, которыми сотрудники реально пользуются каждый день: карточка клиента, договор с выбранной ячейкой и датами, простой статус (активен/приостановлен/закрыт), быстрый поиск (по фамилии, телефону, номеру ячейки), а также заметки и история действий (кто и что менял).
На старте легко «перепрыгнуть» в сложность. Обычно не нужны в первые недели: сложный биллинг с тарифами и автосписаниями, интеграции с банками и 1С, продвинутая аналитика по LTV и когортам, отдельное мобильное приложение для клиентов. Эти вещи съедают время, а пользу в первых продажах дают редко. Гораздо важнее сделать понятный учет договоров аренды ячеек и дисциплину данных.
Роли почти всегда типовые, поэтому их можно заложить сразу простыми правами:
Простой сценарий: менеджер оформил договор на ячейку 128 до 30 числа и отметил «оплачено до 15». На посту охраны видят зеленый статус «доступ разрешен». Если срок оплаты просрочен, менеджер переводит договор в «приостановлен», и охрана видит «доступ запрещен» без лишних деталей.
Если собираете MVP в TakProsto, удобнее всего начать с экранов «Клиенты» и «Договоры», а затем через чат добавить статусы доступа и отметку о задолженности, не уходя в полноценный биллинг.
База должна отвечать на несколько вопросов: кто арендует, какую ячейку, на каких условиях, есть ли долг и можно ли пускать на склад.
Для первой версии обычно хватает шести сущностей:
Этого достаточно, чтобы вести учет без сложного биллинга. Если клиент платит частями, вы добавляете платежи, а задолженность считаете простым правилом: начисление за период минус сумма оплат.
В MVP важны поля, которые влияют на работу склада: кто ответственный, какая ячейка занята, действует ли договор, есть ли долг, можно ли пускать.
Во вторую версию обычно уходят вещи, которые редко нужны в ежедневной работе: сканы документов, детальные тарифные сетки, автоматические акты, интеграции с кассой, расширенные роли.
По статусам держите небольшой и фиксированный набор, иначе сотрудники начнут путаться. Для договора часто достаточно: черновик, активен, приостановлен, закрыт. Для ячейки: свободна, забронирована, занята, на проверке.
Пример: менеджер создает договор в черновике, бронирует ячейку, после первого платежа переводит договор в активный и ставит ячейке статус «занята». Если появилась просрочка, договор приостанавливают и ограничивают доступ, не трогая историю платежей.
Начните с простой карточки клиента. Она должна быстро отвечать на два вопроса: кто это и что у него сейчас происходит.
В карточке обычно достаточно: ФИО, телефон, альтернативный контакт, паспортные данные (если собираете), комментарий сотрудника и понятный статус (например, активен/есть просрочка/закрыт). Смысл такой: сотрудник должен за 10 секунд понять контекст, не открывая пять экранов.
Историю можно сделать без «тяжелой» структуры. Часто хватает блока, где видно: какие договоры были, какие ячейки, на какие даты и чем все закончилось. Это помогает разбирать спорные ситуации на месте: клиент говорит, что «всегда платил вовремя», а у вас видны прошлые задержки и комментарии менеджера.
Больше всего времени на складе экономит поиск и простые фильтры. Минимум: поиск по ФИО и телефону, по номеру договора, по номеру ячейки и быстрый фильтр «есть задолженность» (даже если пока это просто флажок).
Отдельно заложите проверку дублей: один телефон - один клиент. Если сотрудник вводит номер, который уже есть в базе, покажите существующую карточку и предложите продолжить с ней. Так один арендатор не превращается в «Петров», «Пётр» и «Петр Иванович».
Вложения (фото документов, сканы) лучше оставить в бэклоге. На старте часто хватает текстового комментария: «доступ только по звонку», «доверенность до 01.05».
В TakProsto удобно сначала описать в чате поля клиентской карточки и правила дублей, а затем попросить добавить быстрый поиск по телефону и номеру ячейки. Это быстрее дает рабочий инструмент, а не просто «красивую CRM».
Договор в сервисе аренды ячеек - это не «юридический комбайн», а понятная запись: кто арендует, какую ячейку, на какой срок и на каких условиях. Чем проще первая версия, тем меньше ошибок на ресепшене и тем быстрее вы начнете работать.
Минимум полей, которые нужны ежедневно: клиент, ячейка, дата начала, дата окончания (или срок), тариф, депозит и статус договора. Этого хватает, чтобы видеть занятость, понимать деньги и решать спорные ситуации без поиска по бумажкам.
Хорошее правило для MVP: договор должен собираться за минуту. Помогает автозаполнение из карточки клиента и выбранной ячейки. Вы выбираете клиента - подтягиваются контакт и документ. Вы выбираете ячейку - номер, размер (если ведете), базовый тариф и депозит. Оператору остается проверить и нажать «Создать».
Чтобы договор не превращался в забытый файл, добавьте простые напоминания: окончание срока, первый день просрочки, предложение продления за несколько дней до конца. Этого достаточно, чтобы администратор заранее связался с арендатором, а не узнавал о проблеме, когда ячейку уже хотят отдать другому.
Пример: клиент арендует ячейку N12 на 30 дней за 5 000 руб. в месяц и депозит 3 000 руб. За 5 дней до конца система показывает задачу «Предложить продление», а в день окончания - «Проверить оплату/освобождение». Если оплаты нет, статус меняется на «просрочен», и дальше это влияет на доступ.
Печатная форма договора полезна, но не блокер для MVP. На старте важнее хранить ключевые поля и историю изменений: кто и когда продлил, поменял тариф, закрыл договор. Шаблон печати или PDF проще добавить позже, когда процессы устоятся. В TakProsto это удобно делать по шагам: сначала форма и статусы, затем печатный шаблон на основе тех же данных.
Даже без интеграции со СКУД и электронными замками доступ можно контролировать через понятные статусы и ручные события. Для MVP этого обычно достаточно: охранник или администратор видит текущий статус и понимает, пускать или нет.
Сделайте статус доступа отдельным полем, а не «вычислением в голове сотрудника». Для старта чаще всего хватает:
Статус можно менять вручную, но системе полезно подсказывать рекомендуемое состояние по простым правилам.
Логика допуска должна быть прозрачной. Для MVP достаточно двух проверок:
Договор активен (сегодня попадает в срок аренды и не расторгнут).
Нет критической просрочки. Например, если задолженность старше N дней, система предлагает закрыть доступ. Если просрочка небольшая, можно оставить доступ, но показать предупреждение.
Хорошо работает разделение «рекомендации системы» и «фактического статуса». Тогда сотрудник может сделать исключение, и это останется в журнале.
Журнал нужен не ради отчетов, а чтобы быстро разруливать спорные ситуации. Записывайте события простыми фразами: «выдан ключ», «доступ временно закрыт», «доступ восстановлен», «замена ключа», «вход разрешен вручную». У события должны быть дата и время, сотрудник, клиент/ячейка, комментарий.
Пример: клиент оплатил с задержкой, администратор восстанавливает доступ и пишет «оплата подтверждена по чеку». Через неделю не придется вспоминать по памяти.
Минимальное разделение прав: охрана может смотреть статус и добавлять событие «пуск/не пуск», менеджер - менять статус доступа, администратор - менять правила (например, порог критической просрочки) и исправлять ошибки.
Если делаете MVP в TakProsto, проще сразу описать роли в чате и попросить интерфейс: страницу статуса, кнопку смены статуса и таблицу журнала событий.
Платежи в MVP лучше свести к понятному учету по договору: сколько начислили, сколько оплатили и какой остаток. Это не банковская система, а простая бухгалтерия внутри сервиса.
Самая понятная схема - вести по договору таблицу движений: начисление за период, оплата, остаток и короткий комментарий (за какой период, кто принял, наличные/перевод).
Начисления можно создавать вручную или автоматически раз в период (например, 1-го числа). В первой версии не стоит пытаться пересчитывать «по дням» при каждом переносе или приостановке. Выберите простое правило: фиксированная сумма за период, а нестандартные случаи решайте отдельной строкой корректировки.
Рабочее правило: у договора есть сумма за период (месяц/неделя), система добавляет очередное начисление, если договор активен. Если арендатора нужно «заморозить» или дать скидку, менеджер добавляет отрицательное начисление с причиной.
Частые сценарии тоже закрываются без усложнения: частичная оплата (несколько платежей), перенос оплаты (не править старые строки, а фиксировать новой записью), депозит (отдельной строкой, не смешивая с арендой).
Для менеджера полезны напоминания по просрочке: на 1 день (проверить, не забыли ли оплату), на 7 дней (созвон), на 14 дней (решение по доступу). Пример: начисление за январь есть, оплата пришла наполовину, система показывает остаток 2 500 руб. и ставит задачу на следующий день.
В TakProsto удобно сначала через чат добавить сущности «начисление/оплата» и простое правило расчета остатка, а автоматизацию наращивать позже.
Чтобы MVP заработал, собирайте его как цепочку действий: администратор видит ячейки, оформляет аренду, фиксирует оплату и при необходимости ограничивает доступ. Остальное можно добавить позже.
Порядок работ обычно такой:
Если собираете MVP в TakProsto, удобно начать в режиме планирования: описать шаги обычным текстом, попросить сделать экраны и базовые поля, а затем быстро доработать логику статусов и задолженности. На каждом шаге фиксируйте контрольную точку снимком, чтобы можно было откатиться, если правка ломает процесс.
Проверка на месте: оформите аренду на 30 дней, внесите частичную оплату и убедитесь, что долг виден в договоре, а статус доступа меняется одним переключателем.
Первые версии ломаются чаще не из-за «плохого кода», а из-за путаницы в правилах. Если сотруднику на смене каждый раз нужно вспоминать, что означает статус и что делать дальше, ошибки неизбежны.
Самая частая ловушка - смешать бронирование и аренду в одно состояние. Бронь обычно живет часы или пару дней, аренда - недели и месяцы. Когда это один статус, сотрудники «продлевают бронь» и держат ячейку занятой, а клиент уверен, что уже оплатил аренду.
Вторая боль - отсутствие истории изменений. Когда кто-то поменял дату окончания, снял ограничение доступа или «поправил сумму», через месяц спор с клиентом не разобрать. Простое правило: храните кто, когда и что изменил хотя бы по ключевым полям договора и доступу.
С долгами похожая история. Если задолженность живет в заметках или переписке, вы теряете общую картину. Даже без сложного биллинга нужен журнал начислений и оплат, тогда долг считается сам.
Еще две вещи, которые дорого обходятся:
Небольшой пример: клиент просит «разблокировать на час, я сейчас оплачу». Если есть журнал событий и роли, сотрудник ставит временный доступ, а оплата потом закрывает задолженность. Без этого начинаются устные договоренности и конфликтные ситуации.
Если делаете MVP в TakProsto, используйте снимки и откаты: так проще править статусы и права, не рискуя рабочей версией.
Перед запуском проверяйте не «все функции», а то, что каждый день спасает от путаницы: ячейки, договоры, быстрые оплаты, контроль доступа и простые отчеты.
Откройте список ячеек. Должно быть сразу видно, где свободно и где занято, без захода в карточки. Фильтр по размеру или зоне склада полезен, но не обязателен. Главное, чтобы сотрудник за 10 секунд нашел свободный вариант и понял, кому принадлежит занятая ячейка.
Проверьте карточку договора. В одном месте должны быть срок аренды, сумма, текущий остаток (или задолженность) и статус доступа. Если эти поля спрятаны по вкладкам, в реальной работе их будут пропускать.
Платеж должен добавляться почти мгновенно: сотрудник получает перевод, вносит сумму, и через минуту уже видно обновленную задолженность.
Проверьте права и журнал событий: доступ меняют только нужные роли, каждое изменение фиксируется. В журнале достаточно «кто», «когда», «что было», «что стало», «комментарий».
Мини-набор проверок перед запуском:
Сценарий «частичная оплата и просрочка» хорошо проверяет, хватает ли статусов и истории действий, чтобы не спорить на словах.
Клиент Антон выбирает ячейку A-12 на 30 дней. Менеджер открывает карточку клиента, нажимает «Создать договор», ставит даты, фиксирует депозит и отмечает, что выдан ключ (или код). Антон вносит первую часть оплаты, и в договоре сразу видно: «Оплачено: 8 000», «Осталось: 7 000».
Через 10 дней Антон не доплатил остаток. Менеджер не пересчитывает тарифы и не заводит сложные правила. Он меняет статус доступа на «временно закрыт» и добавляет комментарий «просрочка 10 дней». В журнале событий появляется запись, кто изменил статус и когда.
На следующий день Антон оплачивает остаток. Менеджер фиксирует платеж, задолженность становится нулевой, а доступ возвращается в «активен». В истории остается вся цепочка: оформление, частичная оплата, просрочка, блокировка, доплата, восстановление.
На экране обычно достаточно одной карточки договора, без лишних вкладок: клиент и контакты, ячейка и срок, депозит, сумма к оплате/оплачено/остаток, статус доступа и история событий.
После запуска MVP не стоит сразу уходить в «большой биллинг» и тяжелые интеграции. Сначала укрепляйте то, что уже работает каждый день: учет клиентов и договоров, статусы доступа и простую задолженность.
Начните с функций, которые экономят время администратора и уменьшают споры с арендаторами: печатные формы (договор, акт приема-передачи, квитанция, уведомление о задолженности), уведомления клиенту (напоминание за 3-5 дней, сообщение о блокировке, подтверждение продления), интеграции платежей (сначала отметка вручную, потом прием онлайн и сверка), отчеты (занятость, список просрочек, прогноз поступлений на неделю) и более подробный журнал действий сотрудников.
Ориентир простой: если новая функция не экономит время на стойке или в бухгалтерии, ее можно отложить.
Рост ломает систему не из-за количества функций, а из-за потери контроля. Добавляйте «страховку» параллельно: тестовый контур для проверки новых правил, четкие роли и права, резервные копии и короткий регламент изменений (кто согласовал, когда включили, как откатить).
Если строите продукт на TakProsto (takprosto.ai), эти вещи удобно поддерживать по мере развития: режим планирования, снимки и откат, а также экспорт исходного кода и деплой.
Пример: вы добавили уведомления о просрочке. Сначала включите их на ограниченной группе, проверьте тексты и сроки, затем расширяйте на всех. Если пошли жалобы, откатывайте снимок и правьте правило, а не «чините на живую».
Начните с двух сущностей: клиенты и договоры. Если вы можете быстро создать клиента, привязать к нему ячейку, срок и статус договора, то склад уже перестает жить «в тетрадке», а доступ и оплаты можно аккуратно нарастить поверх договора.
Потому что договор — это точка правды: кто арендует, какую ячейку и до какого числа. Когда доступ и задолженность привязаны к договору, охране и менеджерам проще действовать одинаково, а не трактовать правила по-разному.
Сделайте один поток на минуту: выбрать клиента или создать нового, выбрать ячейку, поставить даты, тариф и статус. Автозаполнение из карточки клиента и выбранной ячейки убирает ошибки и ускоряет оформление прямо на ресепшене.
Держите маленький фиксированный набор. Для договора обычно хватает «черновик», «активен», «приостановлен», «закрыт», а для ячейки — «свободна», «забронирована», «занята», «на проверке». Чем больше статусов, тем чаще сотрудники путаются и делают разные действия в одной и той же ситуации.
По умолчанию — проверка двух вещей: договор активен по сроку и нет критической просрочки. При этом полезно разделять «рекомендовано системой» и «фактический статус», чтобы можно было сделать исключение и сохранить причину в журнале.
Записывайте не всё подряд, а то, что помогает разбирать споры: кто и когда изменил статус доступа, выдал ключ, закрыл доступ, восстановил доступ, поменял даты или тариф. Без этой истории через месяц невозможно понять, почему было принято решение, даже если сотрудники сменились.
Минимум: ФИО или компания, телефон и один уникальный идентификатор документа (паспортные данные или ИНН), плюс заметка. Обязательно добавьте защиту от дублей по телефону, чтобы один и тот же человек не появлялся как несколько клиентов с разными написаниями.
Ведите простую таблицу движений по договору: начисления, оплаты и остаток. Начисления можно делать раз в период, а нестандартные случаи закрывать корректировкой отдельной строкой, не пытаясь строить сложный перерасчет «по дням» в первой версии.
Потому что они съедают время на настройку и согласование, а в первые недели не дают пропорциональной пользы. Обычно важнее научиться быстро и дисциплинированно вести договоры, занятость ячеек, ручные оплаты и понятный статус доступа — это прямо влияет на операционку и первые продажи.
Сначала прогоните один «боевой» сценарий: создать договор на 30 дней, внести частичную оплату, увидеть остаток, при просрочке переключить доступ, затем внести доплату и восстановить доступ. Если это проходит без обходных путей, а ключевые поля видны на одной карточке договора, MVP готов к реальной работе.