
По коду Fullstack Test Shop
Повтор webhook не создаёт вторую выдачу.
Angular → NestJS → PostgreSQL → WorkerИНТЕРФЕЙС / ЛОГИКА / ДАННЫЕ
Сергей Комаров
Тут мои проекты: демки, скрины, заметки по коду. Где бэк замокан или что-то ещё не подключено — написал отдельно.
ANGULAR · TYPESCRIPT · NODE.JS · PYTHON

01 / ПРОЕКТЫ
Стек, скрины и ссылки. Разбор кода — на странице проекта.
Показано проектов: 9

Повтор webhook не создаёт вторую выдачу.
Angular → NestJS → PostgreSQL → Worker
Геометрия проверяется до импорта. Повторное применение того же импорта не добавляет дубли.
GeoJSON → проверка → MapLibre → экспорт
Форма редактирует черновик: отмена сохраняет исходную запись.
Расписание → фильтры → форма → таблица
Шлюз кладёт задания в JetStream, воркер забирает их из очереди.
Gateway → NATS JetStream → Worker → результат
Поиск выполняется в pgvector. Неизменённый документ не дублирует фрагменты.
NATS → индексатор → pgvector → ответ с источниками
Приложение развёрнуто. Для сбора ещё нужны настройки Telegram и моделей.
Collector → обработка → классификация → черновик
Объявления посетителя изолируются по сессии, API работает на том же домене.
Vue → Laravel → MySQL
React отвечает за интерфейс, Phaser — за игровой цикл.
Миссия → маршрут → события → результат
Сервис выключен, данные удалены. Здесь скрины и разбор устройства.
Сбор → очередь → OCR → проверка → выдача02 / УСТРОЙСТВО
Каталог, корзина и оформление на Angular.
API проверяет входные данные и ключ идемпотентности.
Заказ и платёжные события сохраняются в PostgreSQL.
Воркер забирает задачу. Сбой и повтор учитываются в состоянии заказа.
FULLSTACK TEST SHOP / КОМПОНЕНТЫ
Фронт на Angular: каталог, корзина, оформление и карточка заказа. Статус приходит из API, история переходов остаётся в карточке.
У создания заказа есть ключ идемпотентности. Платёжный webhook пишется в inbox. Повтор события не должен запускать ещё одну выдачу.
В PostgreSQL лежат заказы, цены и входящие события. На ключ идемпотентности поставлен unique-индекс. Событие сохраняется до обработки воркером.
Воркер обрабатывает оплату и выдачу. На ретраях используется тот же requestId. Если поставщик ушёл в таймаут, второй код сразу не выдаётся: результат первого запроса ещё неизвестен.
03 / ОБО МНЕ
Пишу фронт и бэк.
Интерфейсы, API, базы, парсеры, фоновые обработчики. На этом сайте собрал часть работ: с исходниками, где они открыты, и пояснениями, что там происходит.
Проекты в разном состоянии. Где-то работает весь сценарий, где-то ещё нужны ключи внешних сервисов. WTG уже выключен — остались скрины и технические материалы.