Интелкон

Создаём MVP SaaS-решения для проведения корпоративных закупок и тендеров

IT-компания Интелкон автоматизирует работу своих клиентов. К ним приходят, когда хотят оцифровать бизнес-процессы или улучшить эффективность работы. Они могут разработать, например, систему обучения сотрудников или BIM для управления строительством.

Иногда они привлекают сторонних специалистов с нужными компетенциями — так Evrone помог Интелкону разработать сервис для проведения тендеров в электронной форме.

Задача — автоматизировать процесс подачи заявок на тендер

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

Интелкон предложил своему клиенту оцифровать этот процесс с помощью решения для автоматизации документооборота и сократить время на проведение тендеров. Вместо тонн распечаток и беготни из отдела в отдел — электронная торговая площадка, база подрядчиков с управлением доступом, проведение конкурса прямо на площадке.

Основное техническое требование предъявлялось к фронтенду — не использовать TypeScript. Команда Интелкона объяснила это тем, что в будущем так будет проще найти людей для поддержки продукта, а на этапе MVP это сэкономит время на запуск.

Решение — MVP сервиса для проведения коммерческих тендеров за 6 месяцев

За 6 месяцев мы разработали MVP системы для управления электронными тендерами с фронтендом на React+JavaScript и бэкендом на Python+Django. Чтобы поскорее запуститься, мы по максимуму использовали инфраструктуру Django и отказались от архитектурной сложности. Чтобы поддерживать продукт было легко, придерживались методологии «12 factor app».

Вот как в итоге работает продукт:

  • Генеральный подрядчик получает доступ к системе и создаёт конкурс на выполнение каких-либо работ со всеми документами, чертежами, суммами и датами.
  • Менеджер генерального подрядчика рассылает субподрядчикам приглашения на регистрацию в системе. Они заводят себе аккаунты.
  • Субподрядчики с верифицированными аккаунтами могут откликнуться на текущий конкурс, следить за другими тендерами генерального подрядчика и отправлять заявки.
  • После проведения конкурса менеджер генерального подрядчика рассылает участникам результаты с определением победителя, они подписывают все документы между собой.

Определяем функциональность MVP

Работу над платформой для создания тендеров мы начали с обсуждения будущего приложения и определения фиче-листа для разработки первой версии. В собственной команде Интелкона уже были UX-дизайнер и аналитик, но мы предложили свою помощь, так как у нас уже был опыт быстрого запуска продуктов. Мы знаем, что в первую очередь надо запустить только то, что принесёт пользователям большую ценность. Вместе мы обсудили функциональные требования и оценили все задачи, чтобы понять, сколько времени выиграем, отказавшись от чего-то.

Так, например, перевод всех заявок в электронный вид сделал бы жизнь сотрудников проще, потому что теперь не надо делать двойную работу и распечатывать документы. Их достаточно просто заполнить и загрузить через форму. А вот от возможности выбрать отдельные работы в рамках одной заявки мы отказались. Идея хорошая, но ей место в обновлении, поэтому её отправили в бэклог.

Разрабатываем бэкенд и фронтенд

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

Бекенд написан на Python 3.8 с фреймворком Django 3.2. В качестве БД выбрали PostgreSQL 13, брокер сообщений — Redis. Для запуска асинхронных и периодических задач используем Celery, для управления зависимостями — poetry.

Фронтенд — SPA на React+JavaScript. Централизованное хранилище данных реализовано на Redux + reduxjs/toolkit. В качестве библиотек для работы с API запросами используем react-query и axios, для работы с формами react-hook-form. Ошибки на фронтенде и бэкенде отлавливаем благодаря sentry.

Для restlike API используется Django Rest Framework, документирование производится с помощью Swagger (автогенерация библиотекой drf-spectacular). Авторизация в API осуществляется с помощью JWT (djangorestframework-simplejwt).

Для решения одной из основных задач автоматизации закупок — работы с электронными документами — интегрировали генерацию PDF-документов с помощью WeasyPrint и XMLX-документов с помощью openpyxl.

Для некоторых моделей проекта используется паттерн разработки «полиморфизм», реализованный с помощью django-polymorphic и django-rest-polymorphic.

Для создания интерфейса использовали Material UI — это также было изначальным требованием клиента. С одной стороны, это поставило нас в рамки, с другой, не пришлось разрабатывать интерфейс с нуля. Это ускоряет разработку: достаточно взять готовые компоненты и подправить, если надо.

Последние месяцы мы связывали фронтенд с бэкендом, добавляли эндпоинты API, а также дорабатывали функции по требованию заказчика.

Мы были предупреждены, что требования могут меняться в процессе, потому что продукт буквально создаётся с нуля. К счастью, наши менеджеры были к этому готовы и мы смогли выстроить правильную коммуникацию, чтобы получить хороший результат: вместо того, чтобы ждать от клиента «пинков», мы сами активно спрашивали о результатах опросов, сборе новых требований.

Результат

Сейчас MVP запущен, проходит тестирование «в бою», Интелкон знакомит заказчиков с автоматизацией тендерной работы. После первых демо мы собрали список доработок и багов и сразу исправили их, чтобы первым пользователям было комфортнее работать с продуктом.

В планах — собрать новые требования пользователей и довести систему управления тендерами до полноценной первой версии. Например, мы уже внедряем расширение, связанное со спецификой хранения данных у подрядчиков — импорт таблиц XLS и CSV.

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

Команда Evrone усилила нас не только глубокой технической экспертизой, но и качественным менеджментом разработки. Благодаря сознательному погружению техлида в проект, мы выстроили коммуникацию, нацеленную на результат. Мы знаем, что любая предложенная задача получит достаточное внимание, а существующие риски будут предусмотрены.
Олег Окунев
Генеральный директор Интелкон
Связаться с нами
Нужна команда?
Давайте обсудим ваш проект
Прикрепить файл
Максимальный размер файла: 8 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.