SlideShare a Scribd company logo
Volodymyr Dubenko
Materialise
Node.js for desktop development
(based on Electron library)
About me
Was working as Asp.net developer, tech lead, team
lead, project and product manager
Now: Architect at Materialise
Node.js for desktop development
(based on Electron library)
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Need: Product for manufacturing
Technology
Experiment!
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Electron
… and many more
Visual Studio Code
Cross-platform
Single code for all platforms
Community
24 460 GitHub repositories
1875 npm packages
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
install Node.js & Git
$ npm install -g electron-forge
$ electron-forge init hello-world
$ cd hello-world
$ electron-forge start
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Mainprocess
Renderer process #1
Renderer process #2
Renderer process #3
UI development
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
$ npm install electron –g
$ npm install aurelia-cli –g
$ au new electron-au-app
$ npm install electron --save-dev
Add to index.html
Modify package.json
electron quick start -> electron-index.js
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
$ au run --watch
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Debugging
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Communication
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Main process Renderer process
A microservice
>> Testing
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Main process Renderer process
Test runner Jasmine Karma
Test framework Jasmine Jasmine
Debugging VS Code Chrome
Packaging
AU
• Transpile
• Markup, CSS
• Bundle
Electron • Build config
• Pack
electron-builder
Challenges
WCF + NTLM authentication =
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Next challenge -
documents
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
From what to start
Help resources
electronjs.org
Awesome electron
electron-forge
Thanks!

More Related Content

What's hot (20)

PDF
JCConf 2015 workshop 動手玩 Java 專案建置工具
謝 宗穎
 
PPTX
Jenkins Job DSL plugin
Nikita Bugrovsky
 
PPT
Learn jobDSL for Jenkins
Larry Cai
 
PPTX
Job DSL Plugin for Jenkins
Niels Bech Nielsen
 
PDF
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet
 
PDF
Automated android testing using jenkins ci
sveinungkb
 
PDF
Graphql usage
Valentin Buryakov
 
PDF
中華電信 教育訓練
謝 宗穎
 
PDF
Modern Infrastructure from Scratch with Puppet
Puppet
 
PDF
Automation Testing
RomSoft SRL
 
PDF
Виталий Редько "React + Redux: performance & scalability"
Fwdays
 
PDF
CI/CD Using Ansible and Jenkins for Infrastructure
Faisal Shaikh
 
PDF
JavaScript + Jenkins = Winning!
Eric Wendelin
 
PPTX
Continuous Delivery With Selenium Grid And Docker
Barbara Gonzalez
 
PPTX
Deploy Node.js application in Heroku using Eclipse
Jitendra Zaa
 
PDF
Rene Groeschke
CodeFest
 
ODP
Jenkins 101: Continuos Integration with Jenkins
All Things Open
 
PDF
JSDC 2015 - TDD 的開發哲學,以 Node.js 為例
謝 宗穎
 
PDF
Viktor Turskyi "Effective NodeJS Application Development"
Fwdays
 
PPTX
Supermondays: Jenkins CI lightning talk
Michael Peacock
 
JCConf 2015 workshop 動手玩 Java 專案建置工具
謝 宗穎
 
Jenkins Job DSL plugin
Nikita Bugrovsky
 
Learn jobDSL for Jenkins
Larry Cai
 
Job DSL Plugin for Jenkins
Niels Bech Nielsen
 
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet
 
Automated android testing using jenkins ci
sveinungkb
 
Graphql usage
Valentin Buryakov
 
中華電信 教育訓練
謝 宗穎
 
Modern Infrastructure from Scratch with Puppet
Puppet
 
Automation Testing
RomSoft SRL
 
Виталий Редько "React + Redux: performance & scalability"
Fwdays
 
CI/CD Using Ansible and Jenkins for Infrastructure
Faisal Shaikh
 
JavaScript + Jenkins = Winning!
Eric Wendelin
 
Continuous Delivery With Selenium Grid And Docker
Barbara Gonzalez
 
Deploy Node.js application in Heroku using Eclipse
Jitendra Zaa
 
Rene Groeschke
CodeFest
 
Jenkins 101: Continuos Integration with Jenkins
All Things Open
 
JSDC 2015 - TDD 的開發哲學,以 Node.js 為例
謝 宗穎
 
Viktor Turskyi "Effective NodeJS Application Development"
Fwdays
 
Supermondays: Jenkins CI lightning talk
Michael Peacock
 

Similar to Володимир Дубенко "Node.js for desktop development (based on Electron library)" (20)

PDF
Cross-Platform Desktop Apps with Electron (CodeStock Edition)
David Neal
 
PDF
Electron
ITCP Community
 
PPTX
Electron - cross platform desktop applications made easy
Ulrich Krause
 
PDF
Electron
Virginia Rodriguez
 
PPTX
Cross-platform Desktop Apps development using HTML, CSS, JS with Electron
Esinniobiwa Quareeb
 
PDF
Cross-Platform Desktop Apps with Electron
David Neal
 
PDF
Building Cross Platform Apps with Electron
Chris Ward
 
PPTX
SubmitJS: Developing desktop applications with Electron. Mykyta Semenistyi
Binary Studio
 
PDF
Electron
Mark Lechtermann
 
PDF
An overview of the architecture of electron.js
Moon Technolabs Pvt. Ltd.
 
PDF
Building desktop applications for fun with electron
TMME - TECH MEETUP FOR MYANMAR ENGINEERS IN JP
 
PDF
Electron presentation
StanislavNikolaenko2
 
PPTX
Cross-Platform Desktop Apps with Electron
Vimanet
 
PDF
Electron JS | Build cross-platform desktop applications with web technologies
Bethmi Gunasekara
 
PDF
Electron
Debopam Sengupta
 
PPTX
Learn Electron for Web Developers
Kyle Cearley
 
PPTX
Building desktop apps in java script with Electron
Ashley Davis
 
PDF
Electron Firenze 2020: Linux, Windows o MacOS?
Denny Biasiolli
 
PDF
Electron: Linux, Windows or Macos?
Commit University
 
PDF
Cross-Platform Desktop Apps with Electron (JSConf UY)
David Neal
 
Cross-Platform Desktop Apps with Electron (CodeStock Edition)
David Neal
 
Electron
ITCP Community
 
Electron - cross platform desktop applications made easy
Ulrich Krause
 
Cross-platform Desktop Apps development using HTML, CSS, JS with Electron
Esinniobiwa Quareeb
 
Cross-Platform Desktop Apps with Electron
David Neal
 
Building Cross Platform Apps with Electron
Chris Ward
 
SubmitJS: Developing desktop applications with Electron. Mykyta Semenistyi
Binary Studio
 
An overview of the architecture of electron.js
Moon Technolabs Pvt. Ltd.
 
Building desktop applications for fun with electron
TMME - TECH MEETUP FOR MYANMAR ENGINEERS IN JP
 
Electron presentation
StanislavNikolaenko2
 
Cross-Platform Desktop Apps with Electron
Vimanet
 
Electron JS | Build cross-platform desktop applications with web technologies
Bethmi Gunasekara
 
Learn Electron for Web Developers
Kyle Cearley
 
Building desktop apps in java script with Electron
Ashley Davis
 
Electron Firenze 2020: Linux, Windows o MacOS?
Denny Biasiolli
 
Electron: Linux, Windows or Macos?
Commit University
 
Cross-Platform Desktop Apps with Electron (JSConf UY)
David Neal
 
Ad

More from Fwdays (20)

PPTX
"Як ми переписали Сільпо на Angular", Євген Русаков
Fwdays
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
"Validation and Observability of AI Agents", Oleksandr Denisyuk
Fwdays
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PPTX
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
Fwdays
 
PPTX
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
Fwdays
 
PDF
"AI is already here. What will happen to your team (and your role) tomorrow?"...
Fwdays
 
PPTX
"Is it worth investing in AI in 2025?", Alexander Sharko
Fwdays
 
PDF
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
Fwdays
 
PDF
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
PDF
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
PDF
"Scaling in space and time with Temporal", Andriy Lupa .pdf
Fwdays
 
PPTX
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
Fwdays
 
PPTX
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
Fwdays
 
PPTX
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
PPTX
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
Fwdays
 
PPTX
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
Fwdays
 
PPTX
"Confidential AI: zero trust concept", Hennadiy Karpov
Fwdays
 
PPTX
"Choosing Tensor Accelerators for Specific Tasks: Compute vs Memory Bound Mod...
Fwdays
 
"Як ми переписали Сільпо на Angular", Євген Русаков
Fwdays
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
"Validation and Observability of AI Agents", Oleksandr Denisyuk
Fwdays
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
Fwdays
 
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
Fwdays
 
"AI is already here. What will happen to your team (and your role) tomorrow?"...
Fwdays
 
"Is it worth investing in AI in 2025?", Alexander Sharko
Fwdays
 
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
Fwdays
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
"Scaling in space and time with Temporal", Andriy Lupa .pdf
Fwdays
 
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
Fwdays
 
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
Fwdays
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
Fwdays
 
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
Fwdays
 
"Confidential AI: zero trust concept", Hennadiy Karpov
Fwdays
 
"Choosing Tensor Accelerators for Specific Tasks: Compute vs Memory Bound Mod...
Fwdays
 
Ad

Recently uploaded (20)

PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 

Володимир Дубенко "Node.js for desktop development (based on Electron library)"

Editor's Notes

  • #3: Спочатку трохи про себе
  • #5: Чому я обрав Електрон для розробки?
  • #6: Нам потрібно було створити продукт для автоматизації 3D друку. Багато розповісти не можу, тільки скажу, що це виробництво окулярів для одного відомого бренда
  • #7: Мені потрібно було вибрати на чому писати новий продукт
  • #8: Було сильне бажання поексперементувати з технологіями і, можливо, обрати для компанії альтернативу для Майкрософт технологій
  • #9: Виникла ідея, що можна спробувати створити продукт на веб технологіях
  • #10: Основні варіанти: Electron – в минулому Atom-shell, створена і підтримується GitHub командою NW.js – в минулому node-webkit – створена Intel командою Архітектура цих бібліотек різна, але обидва вони мають багато інструментів, велику ком’юніті і однаково можуть бути використані для ваших проектів Мій вибір пав на Електрон через більшу ком’юніті,
  • #11: Також при виборі імпонувало те, що вже багато смачних речей написано на Електроні
  • #12: Також треба сказати, що за допомогою Електрона можна створити кросс-платформ продукт і з єдиним code base запускати продукт на Wim, Mac, Linux
  • #13: На даний момент Електрон має чималу ком’юніті Можна знайти на гітхабі велику кількість репозиторіїв і NPM пакетів, пов’язаних з Електроном
  • #14: Щоб зрозуміти чи Електрон підходить нашим цілям ми вирішили почати з неличкого Proof of Concept
  • #15: Для створення ходячого костяка нам допоможе electron-forge – це CLI створений електрон командою
  • #16: Після запуску ми побачимо ось такий результат Електрон використовує Хроміум для рендерингу інтерфейсу
  • #17: Давайте подивимось на код створеної аппки У нас є стандартна структура Node.js аплікухи – package.json файл із залежностями і конфігурацією нашої аппки
  • #18: Давайте подивимось на index.js файл. В ньому вся логіка по керування нашим основним процесом app – class for app lifecycle BrowserWindow – створення і керування вікнами
  • #19: Електрон аппка складається з: Основного процесу, який створює і керує вікнами Кожне вікно запускається в окремому ізольованому процесі, яке хоститься в Хроміумі V8 ES2017
  • #20: Далі нам треба було створити інтерфейс Враховуючи як Електрон створює і працює з вікнами ми вирішили, що найпростішим рішенням було б – створення Single Page Application
  • #21: Ось як виглядає інтерфейс нашого продукту Давайте подивимось як ми зробили
  • #22: Ми вибирали між наступними фреймворками. Для всіх фреймоворків можна знайти Quick-start гайди і Boiler plates на гітхабі, а також велику кількість блог постів. Зупинились ми на Аурелії через простоту створення темплейтів сторінок і контролів
  • #23: Якщо хтось із вас не знайомий з Аурелією, то ось як виглядає теплейт view на Аурелії Як ви бачите – це звичайний HTML з атрибутами Аурелії
  • #24: 1. Нажаль electron-forge не мав теплейту для Аурелії, тому ми пішли іншим шляхом 2. … code 3. Цим шляхом можна конвертувати будь-який веб продукт (написаний чи на Аурелії, чи на будь-чому іншому) – на Електрон додаток
  • #25: Дизайн нашого продукту був побудований на Material Design Lite
  • #26: 1. UI Dev -> web mode За допомогою CLI Аурелії (au run --watch) після змін в коді, відбувався live reload сторінки
  • #27: Також при розробці інтерфейсу допомогли VS плагіни для Аурелії
  • #31: Як була організована комунікація між Node і Chromium процесами
  • #32: 1. Для комунікації між процесами ми обрали ipc-promise пакет. Це wrapper над вбудованим в Електрон пакетами ipcMain + ipcRenderer, який дозволяє використовувати promises як результат вашої функції Add packet + include into Au bundle 2. Main process: ipcPromise = EventEmitter – subscribing for named events 3. Renderer process - call
  • #33: Як була організована комунікація між App і Microservices
  • #34: 1. Для отримання даних від microservices ми організували наступну схему: Рендерер процес робить запит в основний процес, а той в свою чергу звертається до microservice І зворотнім чином дані ідуть назад 2. Ось приклад коду, який робить запит до microservice і повертає promise Цікавою особливістю роботи пакету ipc-promise є те, що promise не може бути rejected, інакше рендерер процес не отримає response Така схема була обрана для того, щоб не мати проблем з cross-damain викликами (CORS) Також можна звертатись до мікросервісів із рендерер процесу, тоді ви уникнете дублювання коду, але потрібно буде вирішити питання з cross-damain викликами
  • #36: Для тестування ми використовуємо дещо різні підходи для Main process і Renderer Process
  • #37: Для тестування main process -> jasmine test runner Для дебагу використовуємо VS Code
  • #38: Для Renderer process ми використовуємо тест раннер – Карму. Тест фреймворк – Jasmine Для дебагу використовуємо Chrome Як результат у нас немає інтеграційних тестів між двома процами
  • #41: Icon added, product name from package.json, ярлик на робочу столі – all with help of small configuration No configuration installer Size installer – 57 MB, Installed app – 262 MB
  • #43: Біль / Challenge – це інтеграція із WCF сервісом, який використовує тільки NTML аутентифікацію Ми перепробували з 4-5 Node.js різних пакетів із різними налаштуваннями ->
  • #44: В кінці запрацював солюшен із пакетом httpntlm for calls and xml2js for parsing results
  • #46: Generation: JSReport – in Electron App, in microservice, in Wim virtual machine on Azure, finally on Linux App service
  • #47: Printing: For saving time FoxitReader (via spawning process) Alternative – node-printer Node module, which is native and require recompilation
  • #48: Ще хочу поділитись декількома цікавими ідеями
  • #49: Ще одною цікавою комбінацією для вас може бути наступна пара Ionic – це веб фреймворк для побудови мобайл додатків. Він так само як Електрон дозволяє використовувати HTML, CSS, JS Електром, як ви вже знаєте дозволяє будувати десктоп додатки Якщо їх об’єднати, ви зможете робити на єдиному code base і кросс-платформенні десктоп і мобайл продукти
  • #50: Ця ліба для десктоп Node додатків. Вона дозволяє контролювати клавіатуру, мишку і читати монітор Вжє є багато створених додатків для запису дій користувача і їх повтору, або для sharing’у екрану
  • #52: electronjs.org – сайт електрона Awesome electron – репоситорій з усіма цікавими речами зібраними в одному місці – boilerplates, video, libraries Так що. Якщо ви закоренелий фронтендщик, але вас попросили зробити якийсь десктоп продукт, то ви тепер знаєте що є вихід із ситуації