Перейти к содержимому
Все проекты

E-commerce · Backend на Go

Rowshen — e-commerce платформа

Один backend на Go для магазина Rowshen — сайта, админ-панели и мобильного приложения: каталог, заказы, магазины и контент, организованные в независимые доменные модули.

Моя роль
Backend-разработчик. Разработал API, модель данных, аутентификацию и функции админки.
Стек
  • Go
  • Echo
  • GORM
  • PostgreSQL
  • JWT
  • Swagger

Задача

Магазину нужен был один backend для нескольких клиентов: каталог по категориям, коллекциям, сезонам и типам товаров, надёжное оформление заказов и админка для команды, ведущей контент на русском и туркменском.

Архитектура

Rowshen — e-commerce платформа — Схема архитектурыWebsiteAdmin panelMobile appREST APIGo · Echo · JWTDomain moduleshandler · servicePostgreSQLcatalog · orders · shops
Сайт, админ-панель и мобильное приложение используют один REST API на Echo с PostgreSQL через GORM. Каждый домен — товары, категории, коллекции, заказы, пользователи, магазины, баннеры, гайды — отдельный модуль со своими слоями handler, service и repository. Заказ и его позиции записываются одной транзакцией.

Ключевые решения

  1. 01Один API для трёх клиентов

    Почему
    Бизнес-правила — цены, наличие, процесс заказа — живут в одном месте, поэтому сайт, админ-панель и мобильное приложение не расходятся в поведении.
    Компромисс
    Изменения API должны оставаться обратно совместимыми: обновления мобильного приложения доходят до пользователей позже, чем деплой сайта.
  2. 02Модуль на домен, три слоя в каждом

    Почему
    Handler отвечает за HTTP, service — за бизнес-правила, repository — за SQL. Десяток доменов остаются независимыми: каждый легко тестировать и расширять, не затрагивая остальные.
    Компромисс
    Больше файлов и шаблонного кода для простого CRUD.
  3. 03Атомарная запись заказов

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

Что я сделал

  • Единый REST API для сайта, админ-панели и мобильного приложения
  • Каталог по категориям, коллекциям, сезонам и типам товаров
  • Заказы и их позиции записываются внутри транзакций
  • JWT-аутентификация для покупателей и администраторов с ролями, хэширование паролей bcrypt
  • Магазины с часами работы, баннеры и двуязычные (RU/TK) гайды
  • Swagger-документация всего API

В цифрах

клиента на одном API: сайт, админ-панель, мобильное приложение
3