diff options
| author | Adam Malczewski <[email protected]> | 2026-05-22 16:19:35 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-05-22 16:19:35 +0900 |
| commit | 45a4890031192f4e7409443f98e824dad17ba175 (patch) | |
| tree | a28e1b0618f682476b0b57ba70e8ba26a1939a49 /packages/frontend/electron | |
| parent | 9ecaabd87c0e51b8a7408dabb0133a9344586859 (diff) | |
| download | dispatch-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.cjs | 33 | ||||
| -rw-r--r-- | packages/frontend/electron/preload.cjs | 7 |
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, +}); |
