AgroData
Площадка онлайн-аукционов для сельского хозяйства Молдовы — зерно, техника, перевозки, страхование и даже вакансии. Продавцы выставляют лот, покупатели торгуются против часов, а в конце обе стороны подтверждают сделку.
AgroData — Agro-industrial Auctions
Десять рынков на одном сайте, и каждого, кто регистрируется, проверяет человек.
Десять рынков в одном
Зерно, техника, химия, перевозки, страхование, финансирование, услуги для бизнеса, цифровые услуги, консалтинг и вакансии. У зерна и техники подробные формы размещения, поле за полем, проработанные вместе с клиентом; более лёгкие категории делят одну попроще.
Торгуйтесь против часов или купите сразу
Фоновая задача просыпается каждые тридцать секунд, закрывает лоты, у которых вышло время, определяет лучшего участника и сообщает ему сразу тремя способами: письмом, в Telegram и уведомлением прямо в браузер.
Каждого проверяют вручную
Частные продавцы фотографируют обе стороны паспорта, компании загружают регистрационные документы, а сотрудники сами разбирают очередь. Анонимно на этой площадке не торгует никто.
Четыре языка и каждое село
Румынский, русский, английский и турецкий, около 2 020 фраз на каждом. Все 37 районов и 1 507 населённых пунктов есть в сайте, поэтому объявление может точно сказать, куда должен приехать грузовик.
Шесть программ, и одна база данных на всех.
-
1
Сайт, который видят люди
Одна программа рисует каждую страницу и спрашивает у пяти за ней всё, что показывает.
-
2
Пять программ, у каждой своя работа
Вход пользователей, проведение аукционов, движение денег, чат и получение дневных цен на зерно с бирж Парижа и Чикаго.
-
3
Общая база данных под ними
Они не пересылают друг другу сообщения; они читают и пишут одни и те же записи. Именно это делает платформу единым целым, а не шестью частями.
Общая база данных — решение, на котором построена платформа: именно поэтому шесть частей договариваются между собой без всяких церемоний. Оно же и самое важное по мере роста платформы — переделать любую часть значит тронуть данные, от которых зависят остальные.
Обычные инструменты, ничего экзотического ни в одной из шести.
В браузере
То, что видит посетитель: каталог, обратный отсчёт, чат, все четыре языка.
- TypeScript
- React 18
- Next.js 12
- MUI
На серверах
Пять маленьких программ, все, кроме одной, на одном языке.
- Go 1.23
- Gin
- Iris
Где живут данные
Одна база данных на всё, быстрый кеш для аукционных часов и файловое хранилище для фотографий и документов.
- MongoDB
- Redis
- MinIO
Как это выкладывалось
Каждая программа в своей коробке, на кластере, записанном рецептом, а не собранном кликами.
- Docker
- Kubernetes
- Terraform
- GitLab CI
Где аукцион становится трудным, и это вовсе не обратный отсчёт.
Ставка — всё или ничего
Одна ставка делает пять вещей сразу: записывает ставку, двигает цену, увеличивает счётчик, добавляет вас к участникам и — в первый раз, когда вы ставите на лот — списывает взнос за участие с вашего баланса. Если баланса не хватает, не происходит ничего из этого. Сделано одной неделимой операцией базы данных, а не пятью обновлениями подряд в надежде, что все пройдут.
Два противоположных аукциона, одна машина
В обычном цена растёт, и каждая ставка должна побить предыдущую. В голландском она падает, и каждая ставка должна быть ниже — а «купить сразу» меняет смысл между ними. Один набор правил обслуживает оба.
Победа — это не конец
После остановки часов продавец подтверждает и покупатель подтверждает, по отдельности, и лот остаётся наполовину подписанным, пока не подтвердят оба. Только тогда они могут оценить друг друга. Об этом никто не просит в техническом задании; это нужно всем, как только в деле появляются настоящие деньги.
Около 1 300 часов работы, и продолжается.
Мы ищем инвестора, который доведёт его до конца.
Есть идея для проекта? Запросите предложение!
Есть проект? Напишите нам, если хотите поработать вместе над чем-то интересным. Или вам нужна наша помощь? Не стесняйтесь обращаться к нам.