If you have a reasonable understanding of how to build modern websites using HTML, CSS & JavaScript then the Electron framework makes it extremely easy to build desktop applications for both Windows and macOS. As an introduction to the framework we’ll be creating a simple desktop clock application.

Before getting started it’s recommended to have a current version of node.js installed.
Ok, first thing we’ll do is create the folder/file structure required for our application:
electron-test/
├─ package.json
├─ index.js
├─ index.html
├─ script.js
├─ style.css
package.json
This file Indicates which command to run when we start the application:
{
"name": "electron-test",
"main": "index.js",
"scripts": {
"start": "electron ."
}
}Code language: JSON / JSON with Comments (json)
Note: Don’t use "name": "electron" or the Electron installation will fail.
Install Electron
Open up a new terminal window in the project folder and then run the install:
npm install --save-dev electron
This downloads all the required node modules and adds the dev dependency to our package.json.
index.js
This file is used to create windows and handle system events.
For our clock app we’ll create a small (190×80) fixed size browser window:
const { app, BrowserWindow } = require("electron");
app.whenReady().then(createWindow);
function createWindow() {
const win = new BrowserWindow({
width: 190,
height: 80,
resizable: false,
});
win.loadFile("index.html");
}Code language: JavaScript (javascript)
index.html
Basic HTML file that loads the CSS and JS for the the clock functionality:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Clock App</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<script src="script.js"></script>
</body>
</html>Code language: HTML, XML (xml)
script.js
Fetch’s the current time and updates it each second (1000 milliseconds) in the index.html.
function getTime() {
time = new Date().toLocaleTimeString();
document.body.innerHTML = time;
}
setInterval(getTime, 1000);Code language: JavaScript (javascript)
style.css
Lastly the CSS to improve the appearance of our clock:
body {
font-family: monospace;
font-size: 32px;
background-color: black;
color: greenyellow;
text-align: center;
}Code language: CSS (css)
Using a monospace font here prevents the clocks position shifting as the numbers change.
Start the application
We can now start our application by running the following command:
npm start
Hopefully you’ve enjoyed this introduction to Electron and it inspires you to start building your own desktop applications.