Перейти к содержимому
Кейс

AgroData

Площадка онлайн-аукционов для сельского хозяйства Молдовы — зерно, техника, перевозки, страхование и даже вакансии. Продавцы выставляют лот, покупатели торгуются против часов, а в конце обе стороны подтверждают сделку.

10Рынков в одном 1 507Населённых пунктов в 37 районах 4Языка 6Программ за сайтом
Что мы построили

Десять рынков на одном сайте, и каждого, кто регистрируется, проверяет человек.

Десять рынков в одном

Зерно, техника, химия, перевозки, страхование, финансирование, услуги для бизнеса, цифровые услуги, консалтинг и вакансии. У зерна и техники подробные формы размещения, поле за полем, проработанные вместе с клиентом; более лёгкие категории делят одну попроще.

Торгуйтесь против часов или купите сразу

Фоновая задача просыпается каждые тридцать секунд, закрывает лоты, у которых вышло время, определяет лучшего участника и сообщает ему сразу тремя способами: письмом, в Telegram и уведомлением прямо в браузер.

Каждого проверяют вручную

Частные продавцы фотографируют обе стороны паспорта, компании загружают регистрационные документы, а сотрудники сами разбирают очередь. Анонимно на этой площадке не торгует никто.

Четыре языка и каждое село

Румынский, русский, английский и турецкий, около 2 020 фраз на каждом. Все 37 районов и 1 507 населённых пунктов есть в сайте, поэтому объявление может точно сказать, куда должен приехать грузовик.

Как это работает

Шесть программ, и одна база данных на всех.

  1. 1

    Сайт, который видят люди

    Одна программа рисует каждую страницу и спрашивает у пяти за ней всё, что показывает.

  2. 2

    Пять программ, у каждой своя работа

    Вход пользователей, проведение аукционов, движение денег, чат и получение дневных цен на зерно с бирж Парижа и Чикаго.

  3. 3

    Общая база данных под ними

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

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

На чём построено

Обычные инструменты, ничего экзотического ни в одной из шести.

В браузере

То, что видит посетитель: каталог, обратный отсчёт, чат, все четыре языка.

  • TypeScript
  • React 18
  • Next.js 12
  • MUI

На серверах

Пять маленьких программ, все, кроме одной, на одном языке.

  • Go 1.23
  • Gin
  • Iris

Где живут данные

Одна база данных на всё, быстрый кеш для аукционных часов и файловое хранилище для фотографий и документов.

  • MongoDB
  • Redis
  • MinIO

Как это выкладывалось

Каждая программа в своей коробке, на кластере, записанном рецептом, а не собранном кликами.

  • Docker
  • Kubernetes
  • Terraform
  • GitLab CI
Трудные места

Где аукцион становится трудным, и это вовсе не обратный отсчёт.

Ставка — всё или ничего

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

Два противоположных аукциона, одна машина

В обычном цена растёт, и каждая ставка должна побить предыдущую. В голландском она падает, и каждая ставка должна быть ниже — а «купить сразу» меняет смысл между ними. Один набор правил обслуживает оба.

Победа — это не конец

После остановки часов продавец подтверждает и покупатель подтверждает, по отдельности, и лот остаётся наполовину подписанным, пока не подтвердят оба. Только тогда они могут оценить друг друга. Об этом никто не просит в техническом задании; это нужно всем, как только в деле появляются настоящие деньги.

Работа

Около 1 300 часов работы, и продолжается.

В разработкеСостояние проекта

Мы ищем инвестора, который доведёт его до конца.

Контакты

Есть идея для проекта? Запросите предложение!

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