Архитектура
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. Он отдаёт REST-снимок состояния,
раздаёт статику фронтенда и обслуживает оба WebSocket-маршрута — к
Windows-агенту и к телефону. Основной режим — отдельный процесс внутри
ITDeck.exe прямо на управляемом ПК; прежний вариант — Docker-контейнер
на отдельном сервере.
Windows-агент
Держит постоянное соединение с бэкендом и выполняет приходящие команды. Локальное состояние — например, выключен ли микрофон — опрашивает по таймеру и отправляет обратно.
PWA-дашборд
Фронтенд без шага сборки: обычные JS и CSS, которые отдаются прямо с диска. С бэкендом говорит по своему WebSocket — тапнул плитку, команда ушла.
Веб-камера изнутри
- Телефон шлёт видео по WebRTC в
itdeck-cam.exe(C++), который декодирует его на GPU; запускается только на время трансляции - Кадры уходят в собственную виртуальную камеру Windows 11, поэтому видеоприложения видят её как обычную
- Телефон даёт камеру только защищённой странице, поэтому для неё у IT-Deck свой HTTPS с локальным сертификатом
Раздел прочитан?