MAC OS X - tahoe 26 - webcatalog - Техническая архитектура
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.
Цепочка запуска приложения
- Пользователь устанавливает приложение из каталога.
- WebCatalog Desktop скачивает шаблон Neutron и распаковывает в:
~/Library/Application Support/WebCatalog/Apps/<app-id>/(macOS)%APPDATA%/WebCatalog/Apps/<app-id>/(Windows) - Главный процесс Electron (
main-src/electron.js) создаёт изолированное окноBrowserWindowс указанным URL. - Каждое приложение — отдельный 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 |
Процесс сборки дистрибутива
react-app-rewired build— сборка React/TypeScript фронтенда.webpack— сборка main-процесса Electron.build-template.js— подстановкаid,name,url,iconв шаблон.- electron-builder — финальная сборка под платформу:
- macOS:
.app+ codesign + нотаризация. - Windows:
.exe(NSIS/AppX) + code sign. - Linux:
.AppImage/.snap/.deb.
- macOS:
Облачная синхронизация
Доступна в тарифах 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+ приложений) |
Внешние ссылки
---
