Drone Watch

Общая картина воздуха для группы наблюдателей

Работает в проде: v0.27.0 · 18 августа 2026

Алексей Жданов · 84.201.174.70.sslip.io

Скачать PDF

Дроны над районом видят десять человек. Общей картины нет ни у кого.

Наблюдатели есть. Доклады есть. Картины нет.

Как это происходит сейчас

В чате голосовое: «вижу дрон, идёт на север, где-то над Сосновкой». Через минуту второе, от другого человека — возможно, про тот же дрон, возможно, про другой. Ещё через минуту кто-то спрашивает: «это один и тот же?» Ответа нет ни у кого.

К вечеру в чате сорок сообщений. Сколько объектов было в воздухе, откуда заходили и куда ушли — по этой ленте не восстановит никто.

Координатор держит картину в голове, пока хватает головы.

Чат хранит слова. Карта хранит картину.

Сорок сообщений — это сорок сообщений, а не ответ на вопрос „сколько их и куда идут“.

Drone Watch сводит доклады группы на одну живую карту

  • увидел объект — отметил за секунды, тремя способами на выбор;
  • сервер сводит доклады разных людей в цели с треком и курсом;
  • у всех одна и та же картина, обновляется в реальном времени.
Карта наблюдателя: цель на местности отмечена значком, внизу — ряд кнопок действий

Ссылка в чат — и человек на общей карте

  1. Ссылка в чат

    Открыл в браузере, ввёл имя, подтвердил отпечатком — он на карте. Ни установки, ни анкеты, ни пароля: вместо него — отпечаток или Face ID.

  2. Увидел — доложил

    Тапом по карте, если понятно где. Азимутом, если видно только направление. Наведением телефона, если некогда целиться в экран.

Экран наведения: телефон наведён на объект

Два доклада с разных точек дают координату

  1. Пересечение лучей считает сервер

    Один наблюдатель даёт направление, двое — точку.

  2. Координатор видит цели, а не ленту

    Трек, скорость, курс, пунктир прогноза. Доклады об одном объекте сводятся автоматически, спорные — одним нажатием.

Карточка цели: скорость, курс, число точек трека и метка «Вы здесь» Панель координатора со списком целей

Один наблюдатель даёт направление. Двое — координату.

наблюдатель А наблюдатель Б цель азимут 60° азимут 300°

Никакого радара. Два человека с телефонами и школьная геометрия — этого достаточно, чтобы поставить точку на карте.

Это полевой инструмент, а не веб-страничка

Карта и постоянный GPS расходуют батарею. На длинный выезд нужен павербанк — мы говорим это сразу, а не после покупки.

Что уже работает, чего пока нет

Срез на v0.27.0, 18 августа 2026

Работает

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

Чего пока нет

  • полевых испытаний с настоящей группой;
  • демо без приглашения;
  • нескольких групп на одном сервере и экспорта истории.

Группы для первого полевого пилота есть — договорённость на руках.

Всё это — 20 дней работы одного человека

29 июля

первый коммит

31 июля

первый выкат в прод

18 августа

28-й релиз

Под капотом

телефоны наблюдателей сервер (Fastify) сведение докладов в цели, триангуляция PostgreSQL защищённый веб-сокет (Caddy · TLS) сервис-воркер: офлайн-очередь, старт без сети пуш-уведомления при свёрнутом приложении внешний шлюз распознавания речи

Доступ и приватность

  • группа закрытая: вход только по одноразовой ссылке от координатора;
  • вход по отпечатку (passkey) вместо пароля;
  • координатор отзывает доступ — сессии, ключи и открытые сокеты рвутся сразу;
  • геопозиция — тумблер у наблюдателя, выключается в любой момент;
  • база наружу не смотрит, TLS обязателен: без него не работают компас и геолокация.

Почему так быстро

база знаний с онтологией → спека → план → агенты по задачам → тесты вперёд кода → независимое ревью → CI → выкат тегом

Срез 18 августа 2026

717 коммитов
28 релизов в прод
54 215 строк TypeScript, из них 34 726 — тесты
1559 тестов в 184 файлах
111 документов базы знаний: 17 спек, 31 план, 26 записанных решений

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

Где здесь барьер — и где его нет

Барьера нет

Пересечение азимутов — школьная геометрия, карта — открытая библиотека, реалтайм — обычные веб-сокеты. Функциональность повторима, и мы это не прячем.

Барьер есть

  • Дистрибуция через координатора. Ценность растёт с числом наблюдателей в районе: приход координатора приводит с собой группу, а уход происходит только целиком.
  • Скорость цикла. Преимущество не в том, что написано, а в том, за какое время пишется следующее.
  • Оснастка этой скорости. Онтология и агентный процесс не привязаны к дронам и переносятся на следующий продукт.

Самый прочный барьер — накопленная история района. Его у нас пока нет: он появляется после пилота.

Куда идём

  1. Демо без приглашения

    Воронка перестаёт упираться в живого координатора: посмотреть можно сразу.

  2. Полевой пилот с настоящей группой

    Первое подтверждение вне лаборатории — группы для него уже есть.

  3. Несколько групп на одном сервере, экспорт истории

    Переход от одной группы к продукту, который можно раздавать.

  4. История района

    Накопленные треки и заходы — то, чего не повторить скоростью разработки.

Что нужно

Что уже есть с нашей стороны: работающий продукт в проде, группы для пилота, метод, который держит темп.

Что просим

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

Посмотреть и связаться

QR на приложение

Приложение — 84.201.174.70.sslip.io

QR на телеграм-бота

Бот — t.me/drone_watch_bot

Алексей Жданов

Скачать PDF

Приложение

Вопросы и ответы

Приложение

Стек и контур

pnpm-воркспейс, TypeScript strict, Fastify 5 с веб-сокетами, Drizzle и PostgreSQL 17, React 19 с Vite, MapLibre GL JS, Zustand, Playwright.

Развёртывание: образ собирается в CI, приезжает из GHCR на VPS, выкат по тегу.

Приложение

Ночной режим

Та же карта в темноте: подложка глушится, цели и лучи остаются яркими. На кадре включена линейка — 7,2 км до цели по прямой.

Карта наблюдателя в ночной теме с включённой линейкой: измеренное расстояние 7,2 км

Приложение

Ссылки