ТехРент
CRM для аренды спецтехники — бронирование с проверкой доступности, календарь парка, платежи, права менеджеров и журнал действий.
- Роль
- Аналитика, проектирование, разработка в Claude Code (дипломный проект)
- Период
- 2026.06 → 2026.10
- Статус
- Production
- Стек
- Go · PostgreSQL · React · TypeScript · Zustand · Docker · Nginx · OpenAPI · BPMN
Интерфейс
01 / 06Задача
У небольших компаний есть своя техника — экскаваторы, краны, самосвалы, — и часть времени она простаивает. Сдавать её выгодно, но аренду ведут в таблицах и на бумаге. Одну машину легко пообещать двум клиентам или отдать технику из ремонта, а кто сколько должен, приходится выяснять вручную. Тяжёлая учётная система для этого слишком дорога и долга во внедрении.
Решение
ТехРент заменяет таблицы простым веб-сервисом для менеджеров. Система сама проверяет, свободна ли техника на нужные даты, считает стоимость аренды по ставкам, следит за оплатой и показывает должников. Администратор приглашает менеджеров по ссылке и выдаёт им права по разделам, а каждое изменение попадает в журнал.
Дипломный проект. Готовую систему я передал на обзор компании с собственным парком техники и получил обратную связь от её руководителя. Я вёл его как аналитик и архитектор — требования, модель данных, API, ролевая модель, — а код писал в Claude Code пошагово, с проверкой каждого шага. Отдельно разобрал главную фичу, бронирование, сквозным кейсом и принял реализацию по коду — так нашлись 11 расхождений с требованиями.
Цели
- 01Не допустить двойного бронирования и аренды неисправной техники
- 02Видеть занятость всего парка на месяц за одну минуту
- 03Считать стоимость и долги без ручных расчётов
- 04Давать менеджерам ровно те права, которые им нужны
Функции
Ключевые требования
| ID | Требование | Приоритет |
|---|---|---|
| FR-01 | Одна техника не может быть занята двумя неотменёнными заказами на пересекающиеся даты — даже при одновременных запросах. | Must |
| FR-02 | Сломанную технику забронировать нельзя (422), технику на обслуживании — в его даты (409). | Must |
| FR-03 | Стоимость: несколько дней — ставка за день × дни включительно, один день — ставка за час × часы. | Must |
| FR-04 | Сумма платежей по заказу не может превысить сумму заказа. | Must |
| FR-05 | Номер заказа ТР-год-NNN уникален и не повторяется после удаления заказа. | Must |
| FR-06 | Менеджер видит и меняет только разделы, открытые ему администратором. | Should |
| NFR-01 | Целостность на уровне БД: CHECK, UNIQUE, внешние ключи и ограничение EXCLUDE. | Must |
| NFR-02 | Каждое создание, изменение и удаление пишется в журнал; сбой журнала не отменяет операцию. | Must |
| NFR-03 | Вся система поднимается одной командой docker compose up. | Should |
Сценарии
- 01Находит свободную технику в календаре и отмечает даты
- 02Форма подставляет ставки и считает сумму, менеджер выбирает клиента и объект
- 03Сервер в одной транзакции проверяет поломку, обслуживание и занятость
- 04Заказ получает номер ТР-2026-015, событие попадает в журнал
- 01Создаёт менеджера и отмечает разделы и действия, которые ему доступны
- 02Получает одноразовую ссылку на 7 дней и передаёт её
- 03Менеджер сам задаёт пароль — администратор его не видит
- 04Права попадают в токен при входе, меню показывает только разрешённое
Ход работы
- Шаги 1–3ОсноваDocker Compose, Go API на Chi, миграции, встроенные в бинарник, JWT и роли.
- Шаги 4–7УчётКаталог техники, клиенты и объекты, заказы с расчётом стоимости, платежи.
- Шаги 8–11КонтрольЖурнал действий, календарь Ганта, обслуживание техники, статусы заказов по датам.
- Шаги 12–14Персонал и финансыПанели деталей, приглашения и права менеджеров, финансовая сводка и должники.
- ПриёмкаКейс и обратная связьСквозной кейс «Бронирование», 11 замечаний по коду и отзыву компании; исправлены все три высоких и повтор номеров.
- ДалееУведомления и документыУведомления в Telegram, договор, счёт и акт в PDF, аналитика загрузки парка.
Сложности
Результат
Работающая CRM из 14 шагов — около 5,5 тысячи строк Go и 6,5 тысячи строк TypeScript, — с обратной связью от реальной компании. Сквозной кейс бронирования, OpenAPI, BPMN и словарь данных; из 11 замечаний аналитика исправлены все три высоких и повтор номеров, гонки проверены одновременными запросами.
Дальше — права на изменение и отмену заказа на сервере, уведомления в Telegram и документы в PDF.