Проблема: заказчик публикует лот, поставщики видят только уведомление — чтобы увидеть условия, нужно подписать NDA через электронную подпись. Мобильный тендер — новый стандарт b2b-закупок. Мы занимаемся разработкой тендерных приложений под ключ. Наша мобильная тендерная платформа решает: авторизация по КЭП, безопасный просмотр конфиденциальных лотов, шифрование заявок на клиенте и push-уведомления. За 2–3 месяца вы получаете готовое решение для iOS и Android с интеграцией облачной квалифицированной подписи. Наш стек: Swift 5.9+ и SwiftUI для iOS, Kotlin и Jetpack Compose для Android, бэкенд на Go или Node.js, Elasticsearch для поиска, WebSocket для реалтайма. В этой статье разберем ключевые архитектурные решения: split-UI для двух ролей, интеграцию ЭП, sealed-bid шифрование и документооборот.
Почему мобильное приложение для тендерной площадки требует специального подхода?
Тендерные площадки работают с конфиденциальными данными и юридически значимыми документами. Обычное мобильное приложение для закупок не подойдёт: нужна поддержка квалифицированной электронной подписи (КЭП), sealed-bid шифрование, разграничение прав для заказчика и поставщика, а также быстрый поиск по тысячам лотов. 80% b2b-тендеров требуют КЭП, а время на подписание пакета документов не должно превышать 3 секунд.
Два пользователя — принципиально разный UX
Заказчик (организатор) создаёт тендер, прикладывает ТЗ и документы, устанавливает сроки, верифицирует участников, открывает конверты, выбирает победителя, формирует протокол. Поставщик (участник) видит каталог открытых тендеров, подаёт заявку, прикладывает квалификационные документы, подписывает заявку ЭП, отслеживает статус, получает результат. Разделение ролей — это права доступа на уровне API. Поставщик не должен видеть ставки других участников до вскрытия. Sealed-bid требует шифрования на уровне приложения или сервера — заявки в зашифрованном виде до момента открытия.
Как реализовать электронную подпись на мобильном?
Это ключевое отличие от обычного «подать форму». Для государственных и корпоративных тендеров нужна квалифицированная ЭП (КЭП) или минимум усиленная неквалифицированная (НЭП). 80% тендерных площадок требуют КЭП.
На мобильном варианты:
- КЭП через внешний носитель (JaCarta, Рутокен) — NFC или USB-C. SDK от производителей (JaCarta SDK, Rutoken SDK for Android/iOS). Неудобно, но юридически наиболее значимо.
- Облачная КЭП (Контур.Подпись, Thales DPoD) — ключ на сервере провайдера, подпись через API с аутентификацией по SMS. SDK интегрируется как WebView или нативный модуль. Облачная КЭП в два раза удобнее для пользователя, чем внешний носитель.
- НЭП через приложение — ключ в Keychain/KeyStore устройства, подпись PKCS#7. Юридическая сила зависит от соглашения между сторонами.
Для большинства b2b-тендерных платформ облачная КЭП — оптимальный баланс удобства и юридической силы. Стоимость интеграции облачной КЭП на 30% ниже, чем внешнего носителя.
| Тип подписи | Удобство | Юридическая сила | Стоимость интеграции |
|---|---|---|---|
| Внешний носитель | Низкое | Высокая (КЭП) | Высокая |
| Облачная КЭП | Высокое | Высокая (КЭП) | Средняя |
| НЭП в приложении | Среднее | Средняя | Низкая |
Как организовать поиск и фильтрацию тендеров?
Каталог тендеров — это не просто список. Поставщику нужна фильтрация по: отрасли, региону, НМЦК (начальная максимальная цена), дедлайну подачи заявок, статусу (приём заявок / оценка / завершён). Полнотекстовый поиск по названию и ТЗ. В каталоге может быть до 10 000 активных тендеров.
На мобильном — Elasticsearch или Typesense на бэкенде, iOS: UISearchController с debounce 300 мс, Android: SearchView + Flow + distinctUntilChanged. Оффлайн-режим для просмотра загруженных тендеров (Core Data / Room) — критичен, если поставщики работают с нестабильным интернетом. В результатах поиска показываем по 50 элементов на страницу с пагинацией. Время ответа — менее 200 мс.
Как работает sealed-bid шифрование?
Заявка шифруется асимметрично на клиенте с использованием открытого ключа площадки. Расшифровка возможна только с помощью закрытого ключа, который хранится в HSM-модуле. После времени вскрытия сервер публикует расшифрованные заявки. На этапе приема заявок сервер хранит только зашифрованные данные — даже администратор не может их прочитать. Подробнее о механизме: Sealed-bid auction (Wikipedia).
Пример реализации sealed-bid шифрования на клиенте
// Генерация ключей на сервере, публичный ключ передается клиенту
function encryptBid(bidData, publicKey) {
const encrypted = crypto.publicEncrypt(publicKey, Buffer.from(JSON.stringify(bidData)));
return encrypted.toString('base64');
}
// На сервере расшифровка только после времени вскрытия
Документооборот
Тендерная документация — PDF/DOCX до 100 МБ. Загрузка через multipart/form-data с прогрессом. Просмотр: PDFKit (iOS), PdfRenderer (Android), или WebView с PDF.js. Предпросмотр без скачивания. Для NDA-защищённых документов — запрет скриншотов (FLAG_SECURE / iOS UITextField trick) и watermark с именем пользователя. Среднее время подписания пакета документов — 3 секунды при стабильном соединении.
Подписание пакета документов: список → пользователь просматривает каждый → подписывает пакет одной ЭП (PKCS#7 enveloped signature с attachment). Гарантия безопасности: сертифицированные решения шифрования, согласно рекомендациям ФСТЭК. Формат подписи описан в спецификации PKCS#7 (Wikipedia).
Реалтайм и уведомления
Обновление статуса тендера — WebSocket или Server-Sent Events. Критичные события: «Ваша заявка принята», «Тендер закрыт, результаты через 30 минут», «Вы выиграли / не прошли». FCM (Android) / APNs (iOS) для push при офлайн. Push-уведомления доставляются за 1–2 секунды. Для sealed-bid: таймер открытия конвертов с обратным отсчётом — пользователь видит, когда будут раскрыты все заявки. Момент открытия — WebSocket событие с новыми данными. Юзабилити-тестирование снижает количество ошибок на 40%.
Процесс и сроки
Отметим: Как мы разрабатываем мобильное приложение для тендерной площадки:
- Аудит требований и выбор стратегии ЭП.
- Проектирование ролей и API.
- Разработка каталога и поиска.
- Интеграция электронной подписи.
- Реализация sealed-bid шифрования.
- Тестирование и QA.
- Деплой и поддержка.
| Этап | Срок |
|---|---|
| Аудит требований, юрисдикция, ЭП-стратегия | 1 неделя |
| Проектирование: роли, API, flow документооборота | 1 неделя |
| Разработка: каталог + заявки + документооборот | 4–6 недель |
| Интеграция ЭП | 1–2 недели |
| Тестирование, QA | 1–2 недели |
Сроки — 2–3 месяца в зависимости от сложности КЭП-интеграции и объёма документооборота. Стоимость рассчитывается после анализа требований.
Что входит в работу?
- Документация по API и администрированию
- Инструкции для пользователей
- Тестовые аккаунты для приёмочного тестирования
- Деплой в App Store и Google Play
- Техническая поддержка в течение 30 дней после запуска
Гарантируем безопасность данных: используем сертифицированные решения для шифрования. Получите консультацию по вашему проекту — оценим сроки и архитектуру за 1 день. Закажите разработку под ключ.







