MAC OS X - tahoe 26 - webcatalog - Техническая архитектура

Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2026
Перейти к:навигация, поиск

MAC OS X - tahoe 26 - webcatalog - Техническая архитектура

WebCatalog построен на Electron — фреймворке, объединяющем Chromium (рендеринг) и Node.js (системный доступ) в одном процессе. Собственная прослойка компании называется Neutron.

Site-Specific Browser (SSB)

Это не эмуляция в смысле виртуализации (Docker/QEMU). Это Site-Specific Browser — выделенный браузерный процесс для одного сайта. Каждое «приложение» из каталога — шаблон Neutron с разными метаданными.

Начальная конфигурация шаблона (файл public/app.json):

{

 "id": "gmail",
 "name": "Gmail",
 "url": "https://mail.google.com"

}

При сборке Neutron подставляет URL, имя, иконку и генерирует отдельный .app / .exe.

Цепочка запуска приложения

  1. Пользователь устанавливает приложение из каталога.
  2. WebCatalog Desktop скачивает шаблон Neutron и распаковывает в:
    ~/Library/Application Support/WebCatalog/Apps/<app-id>/ (macOS)
    %APPDATA%/WebCatalog/Apps/<app-id>/ (Windows)
  3. Главный процесс Electron (main-src/electron.js) создаёт изолированное окно BrowserWindow с указанным URL.
  4. Каждое приложение — отдельный OS-процесс со своим PID, памятью и контекстом Chromium.

Изоляция аккаунтов (Profiles)

Главное техническое отличие от обычного браузера — использование Electron Session API с разными partition:

const session = session.fromPartition('persist:app-${appId}-profile-${profileId}');

Это даёт полностью изолированные для каждого профиля:

  • cookies
  • localStorage / sessionStorage
  • IndexedDB
  • Service Workers
  • HTTP-кэш
  • TLS-сертификаты

Эффект — как если бы вы открыли сайт в разных браузерах одновременно.

Песочница и конфиденциальность

  • contextIsolation: true — JavaScript страницы не имеет доступа к Node.js API.
  • sandbox: true — Chromium-песочница на уровне ОС.
  • nodeIntegration: false — отключён Node.js в рендерере.
  • Встроенный блокировщик рекламы — @cliqz/adblocker-electron (та же технология, что в Ghostery).
  • Блокировка приложений паролем — Electron BrowserWindow + нативный диалог ОС.

Рабочие пространства (Spaces)

  • Логические группы приложений и профилей.
  • Хранятся в SQLite (библиотека better-sqlite3).
  • При переключении workspace'а окна скрываются/показываются (не закрываются) — мгновенное переключение контекста.
  • В тарифе Business — общие пространства синхронизируются через WebCatalog Cloud (AWS S3).

Системная интеграция

Функция Технология
Нативные уведомления Electron Notification API (Notification Center на macOS, Action Center на Windows)
Строка меню (macOS) / Трей (Windows) menubar
Хранение паролей keytar — macOS Keychain, Windows Credential Manager, libsecret (Linux)
Автозагрузка auto-launch
Редактирование реестра (Windows) regedit

Процесс сборки дистрибутива

  1. react-app-rewired build — сборка React/TypeScript фронтенда.
  2. webpack — сборка main-процесса Electron.
  3. build-template.js — подстановка id, name, url, icon в шаблон.
  4. electron-builder — финальная сборка под платформу:
  • macOS: .app + codesign + нотаризация.
  • Windows: .exe (NSIS/AppX) + code sign.
  • Linux: .AppImage / .snap / .deb.

Облачная синхронизация

Доступна в тарифах Pro и Business:

  • Бэкенд — AWS S3 (пакет @aws-sdk/client-s3).
  • Синхронизируются: профили (сериализованные cookies + session), настройки, конфигурация spaces.
  • Шифрование — на стороне клиента.

Полный технологический стек

Компонент Технология
Рендеринг Chromium (Electron 18+)
UI-фреймворк React 17 + Redux + Material UI
Язык TypeScript / JavaScript
Блокировщик рекламы @cliqz/adblocker-electron
База данных better-sqlite3
Хранение паролей keytar
Автозапуск auto-launch
Уведомления Electron Notification API
Менюбар menubar
Облачное хранение @aws-sdk/client-s3
Сборка electron-builder + webpack
Мониторинг ошибок Sentry
Аналитика Amplitude

Отличие от других SSB

Решение База Несколько аккаунтов Пространства Облачная синхронизация Каталог
Fluid (устарел) WebKit Нет Нет Нет Нет
Nativefier Electron Нет (одна сессия) Нет Нет Нет
Chromium PWA Chromium Нет Нет Нет (через браузер) Нет
WebCatalog Electron + Neutron Да (Session partition) Да (SQLite) Да (AWS S3) Да (50 000+ приложений)

Внешние ссылки

---

×
Реклама
ИКС