BitStudio
Все работы
Веб-приложенияГрамм · 2026

Грамм

Интернет-магазин ремесленного шоколада с честным бэкендом: атомарный сток, идемпотентный checkout и серверное ценообразование.

СтекNode.jsFastifySQLiteE-commerceIdempotencyAtomic stock
Грамм

Обзор

«Грамм» — настоящий работающий e-commerce, а не витрина-картинка: каталог и товары из базы, выбор варианта по проценту какао и весу, корзина, оформление заказа, промокоды, трекинг статуса и админка. Всё открывается в браузере и работает как приложение. Витрина нарисована чистым CSS и SVG, без стоковых фото.

Задача

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

Решение

Лёгкий стек на Node.js, Fastify и single-writer SQLite в режиме WAL: каждая мутация идёт отдельной транзакцией, условный UPDATE по остатку гарантирует атомарное списание, а UNIQUE по ключу идемпотентности отсекает дубль заказа. Деньги хранятся в копейках и пересчитываются на сервере, промокоды имеют атомарный лимит, авторизация на httpOnly-сессиях с CSRF и ролями staff/admin, плюс планировщик без внешнего cron. Есть статус-машина заказа с журналом и админка с KPI-дашбордом.

Результаты

Без оверселла: отрицательного остатка не бывает, последнюю плитку покупает ровно один
Идемпотентный checkout — повторный клик или ретрай не создаёт второй заказ
Цену и итог нельзя подменить из браузера — всё считается на сервере
Развёрнут на недорогом VPS, живое демо работает против настоящей базы и грузится почти мгновенно

Связаться

Расскажите о проекте.