bubblepipe42 723eefe9d8 electron 5 ماه پیش
..
README.md 723eefe9d8 electron 5 ماه پیش
build.sh 723eefe9d8 electron 5 ماه پیش
main.js 723eefe9d8 electron 5 ماه پیش
package.json 723eefe9d8 electron 5 ماه پیش
preload.js 723eefe9d8 electron 5 ماه پیش

README.md

New API Electron Desktop App

This directory contains the Electron wrapper for New API, allowing it to run as a native desktop application on Windows, macOS, and Linux.

Architecture

The Electron app consists of:

  • main.js: Main process that spawns the Go backend server and creates the application window
  • preload.js: Preload script for secure context isolation
  • package.json: Electron dependencies and build configuration

Development

Prerequisites

  1. Build the Go backend first:

    cd ..
    go build -o new-api
    
    1. Install Electron dependencies: bash cd electron npm install

Running in Development Mode

npm start

This will:

  • Start the Go backend on port 3000
  • Open an Electron window pointing to http://localhost:3000
  • Enable DevTools for debugging

Building for Production

Quick Build (Current Platform)

Use the provided build script:

./build.sh

This will:

  1. Build the frontend (web/dist)
  2. Build the Go binary for your platform
  3. Package the Electron app

Manual Build Steps

  1. Build frontend:

    cd ../web
    DISABLE_ESLINT_PLUGIN='true' bun run build
    
    1. Build backend: ```bash cd ..

      macOS/Linux

      go build -ldflags="-s -w" -o new-api

    Windows

    go build -ldflags="-s -w" -o new-api.exe ```

  2. Build Electron app: ```bash cd electron npm install

All platforms

npm run build

Or specific platforms

npm run build:mac # macOS (DMG, ZIP) npm run build:win # Windows (NSIS installer, Portable) npm run build:linux # Linux (AppImage, DEB)


### Output

Built apps are located in `electron/dist/`:
- **macOS**: `.dmg` and `.zip`
- **Windows**: `.exe` installer and portable `.exe`
- **Linux**: `.AppImage` and `.deb`

## Cross-Platform Building

To build for other platforms:

```bash
# From macOS, build Windows app
npm run build:win

# From macOS, build Linux app
npm run build:linux

Note: Building macOS apps requires macOS. Building Windows apps with code signing requires Windows.

Configuration

Port

The app uses port 3000 by default. To change:

Edit electron/main.js:

const PORT = 3000; // Change to your desired port

Data Directory

  • Development: Uses data/ in the project root
  • Production: Uses Electron's userData directory:
    • macOS: ~/Library/Application Support/New API/data/
    • Windows: %APPDATA%/New API/data/
    • Linux: ~/.config/New API/data/

Window Size

Edit electron/main.js in the createWindow() function:

mainWindow = new BrowserWindow({
  width: 1400,  // Change width
  height: 900,  // Change height
  // ...
});

Troubleshooting

Server fails to start

Check the console logs in DevTools (Cmd/Ctrl+Shift+I). Common issues:

  • Go binary not found (ensure it's built)
  • Port 3000 already in use
  • Database file permission issues

Binary not found in production

Ensure the Go binary is built before running electron-builder:

go build -o new-api      # macOS/Linux
go build -o new-api.exe  # Windows

The binary must be in the project root, not inside electron/.

Database issues

If you encounter database errors, delete the data directory and restart:

  • Dev: rm -rf data/
  • Prod: Clear Electron's userData folder (see "Data Directory" above)

Icon

To add a custom icon:

  1. Place a 512x512 PNG icon at electron/icon.png
  2. Rebuild the app with npm run build

Security

  • Context isolation is enabled
  • Node integration is disabled in renderer process
  • Only safe APIs are exposed via preload script
  • Backend runs as a local subprocess with no external network access by default