zalosko / services-platform

Private · NDA
README.md

Head of Product & Engineering, Clean Logic · с декабря 2025

B2C-платформа сервиса бытовых услуг

Сервис бытовых услуг, где клиент видит цену заранее и платит картой, а самозанятые исполнители сами берут заказы. Три стороны — клиент, исполнитель, оператор — с деньгами, качеством и персональными данными под контролем без большого штата.

  • Next.js 16
  • React 19
  • TypeScript
  • PostgreSQL (Supabase)
  • bePaid
  • Playwright
  • GitHub Actions

Архитектура

Клиент · сайт и кабинетИсполнитель · приложениеОператор · админка (2FA)PostgreSQL (Supabase) · RLS · функции · outboxФоновые службы на VPSbePaid · SMS · Telegram
Схема: три приложения поверх одной базы

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

  1. 1. Бизнес-логика в базе, приложения — тонкий слой

    Цена, скидки, статусы заказа и деньги считаются в функциях PostgreSQL, доступ режется политиками RLS. Пользователь ходит в базу со своей ролью, секретный ключ есть только на сервере. Итог: одна точка правды для денег — неважно, из какого приложения пришёл запрос.

  2. 2. Outbox для внешнего мира

    Уведомления и сообщения в Telegram пишутся в outbox в той же транзакции, что и изменение заказа, а рассылает их отдельная служба. Сообщение не теряется и не уходит про несостоявшееся действие.

  3. 3. Деньги с переключателем

    Через bePaid — оплата сразу или блокировкой средств до начала работ, возвраты, chargeback, вебхуки, сверка. Порядок оплаты — переключатель владельца, без релиза. Доп. работы — только после согласия клиента в кабинете.

  4. 4. Данные и доступ

    Вход по SMS-коду для клиентов и исполнителей, пароль + TOTP для команды. Адреса и персональные данные хранятся зашифрованными в отдельной схеме. Каждое действие оператора с деньгами и данными требует 2FA и пишется в аудит.

  5. 5. Контроль качества на расстоянии

    Исполнитель работает по чек-листу, снимает фото до и после, отмечает этапы — приехал, начал, закончил — с геолокацией и временем. Оператор принимает результат или отправляет на доработку.

  6. 6. Правила цены как продуктовое решение

    Фиксированная опубликованная цена, +10 % в пиковое время, суммарная скидка не больше 20 %, бонусами — до 15 % заказа. Скидки идут из доли сервиса, доля исполнителя от них не уменьшается.

Как держится качество

  • Каждое изменение — с тестом: без теста коммит не пройдёт проверку.
  • Тесты базы на PGlite, unit-тесты на node:test, сквозные сценарии по ролям на Playwright.
  • GitHub Actions на собственном runner, ветки и PR-ревью, реестр багов и журнал решений.
  • Разработка с ИИ-агентами (Claude Code) по жёстким правилам: собственные скиллы, хуки-ограничители (запрет правки применённых миграций, секретов, массовых коммитов), агенты-ревьюеры по безопасности, UX и SEO.

Привлечение

SEO-архитектура: 446 страниц — статьи, услуги, категории, районы Минска; карта сайта только из индексируемых страниц. 14 рекламных лендингов под 97 ключевых фраз, Яндекс.Метрика, бот автопубликаций в соцсети.

Что я делал сам

Всё: модель продукта и денег, требования, архитектуру, базу, код трёх приложений, тесты, CI, инфраструктуру на VPS, SEO и подготовку к запуску. ИИ-агенты — мой инструмент разработки, решения и проверка — мои.