Files
2026-06-06 10:40:48 +08:00

83 lines
2.0 KiB
Markdown
Raw Permalink 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.
# noteapp — Desktop
> Electron desktop application wrapping the noteapp fullstack web project.
## Architecture
```
Web Fullstack Project
×
Desktop Shell (Electron)
=
Desktop Application
```
- **Main Process** — Window management, menu, tray, IPC, auto-update
- **Preload** — Secure bridge between main and renderer
- **Renderer** — Your existing web frontend (Next.js)
## Development
```bash
# Install dependencies
npm install
# Start dev mode (web + api + electron concurrently)
npm run dev
```
Dev mode:
- Web frontend: `http://localhost:3000`
- API backend: `http://localhost:3001`
- Electron loads the web URL directly
## Build
```bash
# Build for current platform
npm run build
# Platform-specific builds
npm run build:electron:mac
npm run build:electron:win
npm run build:electron:linux
```
Output: `release/` directory with platform installers.
## Project Structure
```
electron/
├── main.ts — Main process (BrowserWindow, Menu, lifecycle)
├── preload.ts — Secure IPC bridge (contextBridge)
├── ipc.ts — IPC handlers (dialogs, store, notifications)
├── tray.ts — System tray
├── updater.ts — Auto-update (electron-updater)
└── utils.ts — Shared utilities
```
## IPC API (available in renderer)
```typescript
window.electronAPI.getAppVersion()
window.electronAPI.getPlatform()
window.electronAPI.minimizeWindow()
window.electronAPI.maximizeWindow()
window.electronAPI.closeWindow()
window.electronAPI.openFile(options?)
window.electronAPI.saveFile(options?)
window.electronAPI.showNotification(title, body)
window.electronAPI.openExternal(url)
window.electronAPI.storeGet(key)
window.electronAPI.storeSet(key, value)
window.electronAPI.checkForUpdates()
window.electronAPI.downloadUpdate()
window.electronAPI.quitAndInstall()
```
## Auto Update
Configured via `electron-builder.yml`. Uses `electron-updater` with generic provider.
Set your release URL in the `publish` section.