Before I joined the Naver Cloud Meeting project, I had never built a desktop app. The idea seemed intimidating — until I discovered Electron.js. It lets you build desktop apps using the same technologies you already know: HTML, CSS, and JavaScript. Here’s a beginner-friendly overview of how it works.
What Is Electron?
Electron bundles Chromium (the browser engine behind Chrome) and Node.js into a single runtime. That means your app runs in a real browser environment, but it also has full access to the operating system — reading files, sending notifications, managing windows, and more.
Our Naver Cloud Meeting desktop app was built on top of Jitsi Meet (an open-source video conferencing library) wrapped inside an Electron shell. This let us ship a native-feeling app for Windows, macOS, and Linux from a single codebase.
Main Process vs Renderer Process
Electron has two types of processes you need to understand:
- Main process — the Node.js backend of your app. It manages windows, system tray icons, and native OS features.
- Renderer process — the Chromium frontend. This is where your HTML/CSS/JS UI lives.
// main.js (Main Process)
const { app, BrowserWindow } = require('electron')
app.whenReady().then(() => {
const win = new BrowserWindow({ width: 1200, height: 800 })
win.loadURL('https://your-app.com') // or a local file
})
They communicate via Electron’s IPC (inter-process communication) — think of it like sending messages between two workers.
Packaging for Every Platform
One of Electron’s biggest selling points is cross-platform packaging. With tools like electron-builder, a single command can produce:
.exefor Windows.dmgfor macOS.AppImagefor Linux
npx electron-builder --win --mac --linux
What I Learned
The biggest challenge wasn’t writing code — it was understanding the two-process model. Once that clicked, everything else fell into place. If you know how to build a web app, you already have most of the skills to build a desktop app with Electron. Give it a shot!