Files
addressgen/desktop/main.js
davide3011 5477555429 Imposta app desktop Electron/Vue con backend FastAPI
- Aggiunge scaffold frontend Vue con UI base e build verso renderer
- Introduce backend FastAPI con endpoint generazione e salvataggio JSON
- Sposta i generatori in backend e aggiorna CLI main.py
- Aggiorna README, requirements e .gitignore per artefatti e config
- Configura Electron (main/preload) e script npm per dev/build
2026-01-30 16:22:09 +01:00

67 lines
1.6 KiB
JavaScript

const { app, BrowserWindow } = require("electron");
const path = require("path");
const { spawn } = require("child_process");
const BACKEND_PORT = process.env.ADDRESSGEN_PORT || "8732";
const API_BASE = `http://127.0.0.1:${BACKEND_PORT}`;
let backendProcess = null;
function startBackend() {
const env = {
...process.env,
ADDRESSGEN_PORT: BACKEND_PORT,
};
if (process.env.BACKEND_BIN) {
backendProcess = spawn(process.env.BACKEND_BIN, [], { env, stdio: "inherit" });
return;
}
if (app.isPackaged) {
const binPath = path.join(process.resourcesPath, "backend", "addressgen-backend");
backendProcess = spawn(binPath, [], { env, stdio: "inherit" });
} else {
const python = process.env.PYTHON || "python3";
const script = path.join(__dirname, "..", "backend", "app.py");
backendProcess = spawn(python, [script], { env, stdio: "inherit" });
}
}
function createWindow() {
process.env.ADDRESSGEN_API_BASE = API_BASE;
const win = new BrowserWindow({
width: 1100,
height: 720,
webPreferences: {
preload: path.join(__dirname, "preload.js"),
contextIsolation: true,
nodeIntegration: false,
},
});
if (app.isPackaged) {
win.loadFile(path.join(__dirname, "renderer", "index.html"));
} else {
win.loadURL("http://localhost:5173");
}
}
app.whenReady().then(() => {
startBackend();
createWindow();
app.on("activate", () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
});
app.on("before-quit", () => {
if (backendProcess) {
backendProcess.kill();
}
});