summaryrefslogtreecommitdiffhomepage
path: root/packages/frontend/electron
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-05-22 16:19:35 +0900
committerAdam Malczewski <[email protected]>2026-05-22 16:19:35 +0900
commit45a4890031192f4e7409443f98e824dad17ba175 (patch)
treea28e1b0618f682476b0b57ba70e8ba26a1939a49 /packages/frontend/electron
parent9ecaabd87c0e51b8a7408dabb0133a9344586859 (diff)
downloaddispatch-45a4890031192f4e7409443f98e824dad17ba175.tar.gz
dispatch-45a4890031192f4e7409443f98e824dad17ba175.zip
feat: Arch Linux packaging with Electron frontend, systemd backend service, and Windows exe build
- Add Electron wrapper (main.cjs, preload.cjs) for desktop frontend - Add systemd service unit, env config, and sysusers for backend API - Add PKGBUILD and .install for Arch package (makepkg -si) - Add desktop entry, SVG/PNG icon, and wrapper scripts - Add bin/build-pkg, bin/install-pkg, bin/windows-pkg scripts - Make API port configurable via PORT env var (default 3000, prod 18390) - Add electron-builder config for Windows exe cross-compilation - Set vite base to './' for Electron file:// loading
Diffstat (limited to 'packages/frontend/electron')
-rw-r--r--packages/frontend/electron/main.cjs33
-rw-r--r--packages/frontend/electron/preload.cjs7
2 files changed, 40 insertions, 0 deletions
diff --git a/packages/frontend/electron/main.cjs b/packages/frontend/electron/main.cjs
new file mode 100644
index 0000000..2d947da
--- /dev/null
+++ b/packages/frontend/electron/main.cjs
@@ -0,0 +1,33 @@
+const { app, BrowserWindow } = require('electron');
+const path = require('path');
+
+function createWindow() {
+ const win = new BrowserWindow({
+ width: 1280,
+ height: 800,
+ title: 'Dispatch',
+ webPreferences: {
+ nodeIntegration: false,
+ contextIsolation: true,
+ preload: path.join(__dirname, 'preload.cjs'),
+ },
+ });
+
+ win.loadFile(path.join(__dirname, '../dist/index.html'));
+}
+
+app.whenReady().then(() => {
+ createWindow();
+
+ app.on('activate', () => {
+ if (BrowserWindow.getAllWindows().length === 0) {
+ createWindow();
+ }
+ });
+});
+
+app.on('window-all-closed', () => {
+ if (process.platform !== 'darwin') {
+ app.quit();
+ }
+});
diff --git a/packages/frontend/electron/preload.cjs b/packages/frontend/electron/preload.cjs
new file mode 100644
index 0000000..c254892
--- /dev/null
+++ b/packages/frontend/electron/preload.cjs
@@ -0,0 +1,7 @@
+const { contextBridge } = require('electron');
+
+contextBridge.exposeInMainWorld('versions', {
+ electron: process.versions.electron,
+ node: process.versions.node,
+ chrome: process.versions.chrome,
+});