МОЙ ПРОЕКТ

finsverka — финансовый контроль селлера

Сервис сверки выплат маркетплейсов: разбор еженедельных отчётов, поиск удержаний, юнит-экономика по SKU, досудебные претензии.

Сайт
finsverka.ru
Год
2026
Роль
Мой проект: архитектура, разработка и сопровождение — я

Задача

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

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

Что сделано

  • Автоматическая сверка отчётов: сопоставление начислений, удержаний и фактических выплат.
  • Юнит-экономика по товару: видно, какие позиции приносят деньги, а какие съедают их комиссиями и логистикой.
  • Подготовка досудебных претензий по найденным расхождениям — с опорой на условия оферты площадки.
  • Телеграм-бот как первая точка входа: тяжёлые расчёты уходят в фоновую очередь, пользователь не ждёт в чате.

Стек

  • Next.js 15 (App Router) — веб-часть
  • NestJS на Fastify + TypeORM — бэкенд
  • PostgreSQL 16: деньги в NUMERIC, сырые отчёты в JSONB
  • Redis + BullMQ — очереди опроса отчётов и расчётов
  • grammY — телеграм-бот на вебхуках
  • Docker Compose: nginx, фронтенд, бэкенд, база, очередь; VPS Ubuntu 24.04

Измеримое

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

Lighthouse mobile, производительность
95 из 100
прогон Lighthouse 13 в режиме мобильного устройства по публичному адресу главной
Вес главной страницы
130 КБ
суммарный объём переданных ресурсов в том же прогоне Lighthouse
Отрисовка главного блока (LCP)
2,4 с
тот же прогон, эмуляция мобильной сети и процессора

Что из этого работает у клиентов

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