IT-Deck · раздел 3 из 7

Архитектура

standalone exe · backend · агент · frontend · веб-камера на C++

На этой странице

Standalone-режим

С v0.3.0 основной режим — standalone: один ITDeck.exe (PyInstaller onefile) запускает сам себя с --role backend и --role agent, получая два отдельных процесса прямо на управляемом ПК.

Лаунчер следит за ними и перезапускает упавший агент. Его окно открывается с того, что происходит сейчас: QR-код для телефона, открытые деки, агент Windows и камера; редкие действия убраны в «Настройки».

Процессы и выключение ПК

Оба процесса сидят в Windows job object: как бы ни закончился лаунчер — «Выйти», выключение Windows или «Снять задачу» в диспетчере, — ядро гасит их вместе с ним, и выключение ПК IT-Deck не задерживает.

Всё, что запущено с плиток, при этом продолжает работать. Вторая копия не стартует и объясняет, что порт уже занят.

Бережно к играм

Пока ни один телефон не открыл деку, агент не опрашивает звук и процессы; бэкенд и рабочий поток агента идут с пониженным приоритетом, а запущенные с плиток программы — с обычным.

Замеренная цена при открытом телефоне — около 0,1 мс работы в секунду. С веб-камерой то же правило: пока она выключена, её часть не запущена вовсе.

Где лежат данные

Плитки, деки, токены и порт лежат в %LOCALAPPDATA%\IT-Deck, а не в exe, поэтому переживают обновление.

Три части

Внутри — те же три части, связанные постоянными WebSocket-соединениями:

  • Backend (FastAPI + SQLite) — отдаёт REST snapshot, статику фронтенда, оба WebSocket-роута. В прежнем серверном варианте — Docker-контейнер на отдельной машине
  • Windows-агент — постоянное соединение с backend, выполняет команды, опрашивает локальное состояние (например мьют микрофона) по таймеру
  • Frontend — vanilla JS/CSS PWA без сборки, общается с backend по своему WebSocket

Нажмите на узел схемы — ниже раскроется, что он делает.

Backend

FastAPI + SQLite · exe или Docker

Бэкенд на FastAPI с SQLite. Он отдаёт REST-снимок состояния, раздаёт статику фронтенда и обслуживает оба WebSocket-маршрута — к Windows-агенту и к телефону. Основной режим — отдельный процесс внутри ITDeck.exe прямо на управляемом ПК; прежний вариант — Docker-контейнер на отдельном сервере.

Windows-агент

Python · постоянное соединение

Держит постоянное соединение с бэкендом и выполняет приходящие команды. Локальное состояние — например, выключен ли микрофон — опрашивает по таймеру и отправляет обратно.

PWA-дашборд

vanilla JS · без шага сборки

Фронтенд без шага сборки: обычные JS и CSS, которые отдаются прямо с диска. С бэкендом говорит по своему WebSocket — тапнул плитку, команда ушла.

Веб-камера изнутри

  • Телефон шлёт видео по WebRTC в itdeck-cam.exe (C++), который декодирует его на GPU; запускается только на время трансляции
  • Кадры уходят в собственную виртуальную камеру Windows 11, поэтому видеоприложения видят её как обычную
  • Телефон даёт камеру только защищённой странице, поэтому для неё у IT-Deck свой HTTPS с локальным сертификатом

Раздел прочитан?

Следующий раздел: Статус