SurfSense/surfsense_desktop/README.md

61 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SurfSense Desktop
Electron wrapper around the SurfSense web app. Packages the Next.js standalone build into a native desktop application with OAuth support, deep linking, and system browser integration.
## Prerequisites
- Node.js 18+
- pnpm 10+
- The `surfsense_web` project dependencies installed (`pnpm install` in `surfsense_web/`)
## Development
```bash
pnpm install
pnpm dev
```
This starts the Next.js dev server and Electron concurrently. Hot reload works — edit the web app and changes appear immediately.
On **Linux**, `pnpm dev` runs Electron through `scripts/electron-dev.mjs`: it sets `ELECTRON_DISABLE_SANDBOX=1` for the sandbox issue and passes **`--ozone-platform=x11`** (XWayland) unless **`SURFSENSE_ELECTRON_WAYLAND=1`** is set, so dev tends to behave closer to X11 for shortcuts and Ozone. Packaged Linux builds are unchanged.
## Configuration
Two `.env` files control the build:
**`surfsense_web/.env`** — Next.js environment variables baked into the frontend at build time:
**`surfsense_desktop/.env`** — Electron-specific configuration:
Set these before building.
## Build & Package
**Step 1** — Build the Next.js standalone output:
```bash
cd ../surfsense_web
pnpm build
```
**Step 2** — Compile Electron and prepare the standalone output:
```bash
cd ../surfsense_desktop
pnpm build
```
**Step 3** — Package into a distributable (after steps 12):
```bash
pnpm dist:mac # macOS (.dmg + .zip)
pnpm dist:win # Windows (.exe)
pnpm dist:linux # Linux (.deb + .AppImage)
pnpm pack:dir # optional: unpacked app only → release/… (run that binary yourself)
```
**Step 4** — Find the output:
```bash
ls release/
```