Наш собствен продукт · Онлайн пазар

UniMarket, онлайн пазар, създаден за Бангладеш.

Много продавачи, една количка. Купувачите плащат при доставка, следят пратката на всеки магазин и получават имейл на всяка стъпка. Продавачите водят собствения си магазин от Seller Center, а екипът управлява целия пазар от административен панел. Работи на бенгалски и английски, инсталира се като приложение и върви на наш собствен сървър.

На живо в ранен достъп на unimarket.22softwares.com, с демонстрационен каталог. Планира се домейн unimarket.bd.

  • Web
  • Installable app (PWA)
  • বাংলা · English
  • Light & dark
езика, бенгалски и английски, на отделни адреси
2
категории – от мода до дигитални изтегляния
34
теми за магазин, между които продавачите могат да избират
10
стъпки на поръчката, с имейл на всяка: приета, потвърдена, опакована, изпратена, доставена
5

Пазарът на живо

Снимки на екрана на публичния магазин, направени от работещия сайт. Каталогът е с демонстрационни данни, докато пазарът е в ранен достъп.

  • Началната на телефон
    Началната на телефон
  • Началната на телефон, бенгалски
    Началната на телефон, бенгалски
  • Всички оферти на телефон
    Всички оферти на телефон

Какво получават купувачите, продавачите и екипът

  • Една количка, много магазини

    Купувачът плаща веднъж. Поръчката се разделя на по една пратка за всеки магазин – със собствена такса за доставка и собствен статус. Гостите могат да поръчват без профил, а плащането при доставка е стандартният начин.

  • Проследяване без вход

    Всяка поръчка има номер (UNI-3001 и нагоре). Всеки, който има номера и последните четири цифри на телефона, може да види къде е тя, а купувачът получава имейл при всяка промяна на статуса на пратка.

  • Seller Center за всеки магазин

    Продавачите публикуват продукти, услуги и дигитални изтегляния, обработват поръчките от потвърждаване до изпращане, отпечатват фактури и етикети, виждат приходите си и ги теглят, и оформят страницата на магазина си с 10 теми и конструктор на страници от блокове.

  • Вградени инструменти за растеж

    Мълниеносни промоции и кампании, към които продавачите могат да се присъединят, ваучери на платформата и на магазини, спонсорирани продукти с плащане на клик от портфейл, бюлетин, известия и печатни QR флаери за всеки магазин.

  • Административен панел, който управлява пазара

    Поръчки, заявления на продавачи и проверки на самоличност, преглед на продукти, изплащания, кампании, началната страница и банерите, статистика за посетителите и плащанията (включително изоставени), роли на персонала с двустепенен вход и дневник на одита.

  • Инсталира се и е бърз на бавни телефони

    Инсталира се от браузъра като приложение, има долна лента с раздели на телефоните, работи при бавни връзки и може да праща новини за поръчките като известия.

Една кодова база, четири повърхности

Магазинът, Seller Center, административният панел и приложението за инсталиране работят от един TypeScript проект на наш собствен сървър.

  1. Витрина

    Страници, изобразявани на сървъра, с много малко клиентски JavaScript, отделен адрес за всеки език с hreflang, структурирани данни, карти на сайта и продуктов фийд за Google Merchant.

    • Next.js 16
    • React 19
    • TypeScript
    • Tailwind CSS 4
  2. Seller Center и администрация

    Два свята на вход в една кодова база: продавачите виждат само собствените си поръчки и продукти, а персоналът влиза с парола и код от автентикатор и получава точно правата на своята роля.

    • Server actions
    • Zod
    • TOTP
    • Audit log
  3. Данни

    MongoDB със собствена инстанция, включена автентикация и потребител на приложението с минимални права. Парите се пазят в цели пойши, никога като десетични числа, а поръчките резервират наличностите атомарно.

    • MongoDB
    • Mongoose
    • sharp
  4. Вход и съобщения

    Купувачите влизат с еднократен код по имейл или телефон или с Google или Apple. Имейлите за поръчките са подписани с DKIM от наш собствен пощенски сървър, а известията минават през Firebase Cloud Messaging.

    • Firebase Auth
    • FCM
    • Postfix
    • OpenDKIM

Операции

Поддържаме го сами

Собствена база данни, собствени резервни копия, собствена пощенска настройка и внедряване с една команда с връщане назад с една команда.

  • Хоствано на наш собствен VPS зад Cloudflare, със сертификат от Let’s Encrypt и nginx пред приложението.
  • Собствена услуга MongoDB, свързана само към самия сървър, с включена автентикация, с резервно копие всяка нощ и съхранение за 14 дни.
  • Ограничения на честотата при входа и в API на ниво уеб сървър, плюс ограничения за потребител в приложението.
  • Имейлите за поръчките минават проверките SPF, DKIM и DMARC и стигат до входящата поща, а не до спама.
  • Внедряване с една команда, което изгражда на сървъра, превключва и проверява състоянието, и връщане към предишното издание с една команда.

Трудни проблеми, които решихме

Частите, които купувачите никога не виждат.

  1. Бързи страници на бенгалски

    Проблемът
    Уеб шрифтът за бенгалски е голям. Измерихме един на около 200 KB още в първия вариант на дизайна.
    Какво направихме
    Ползваме шрифта за бенгалски, който вече е на телефона или компютъра, и малък собствен шрифт само за латински букви и цифри.

    Резултат В нашия тест уеб шрифтът струваше над десет точки от оценката за производителност на Lighthouse на мобилно, а системният не струва нищо.

  2. Едно плащане, няколко продавача

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

    Резултат Всеки продавач вижда само своята пратка, купувачът вижда една поръчка с времева линия за всеки магазин, а отказът връща наличностите.

  3. Обновявания, без да се чупят отворените раздели

    Проблемът
    След внедряване купувач, оставил раздел отворен, може да натисне бутон от старата версия и да види грешка.
    Какво направихме
    Всяко издание носи собствен идентификатор на внедряването, а страницата сама се презарежда, когато забележи, че действията ѝ са от издание, което вече го няма.

    Резултат Можем да внедряваме през деня, без никой да види счупен бутон.

Тестван като продукт, не като демо

  • Lighthouse в нашата локална продукционна сборка: Accessibility, Best Practices и SEO на 100 на всяка тествана страница, Performance от 93 до 98 на мобилно.
  • Преглед на сигурността на цялото приложение, като първо са поправени находките за превземане на профили, а после тези със средна тежест.
  • Реални потоци за поръчка, отказ и проследяване, тествани от край до край на работещия сайт, включително имейлите, които изпраща всяка стъпка.
  • Проверки на типовете и модулни тестове за валидиране на телефони и работа с пари, както и сборка, която се проваля, когато липсва низ на бенгалски.

Технологии

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • MongoDB
  • Firebase
  • nginx
  • Postfix
  • Cloudflare

chessGM: шахматна платформа, която създадохме и поддържаме

Всички наши проекти

Искате онлайн пазар, изграден по този начин?

Проектираме, изграждаме и поддържаме магазини с много продавачи от край до край: витрина, инструменти за продавачи, администрация, плащания, доставка, имейл и хостинг.