SlideShare a Scribd company logo
What is cool with Domino V10,
Proton and Node.JS, and why would I use it in
my Domino Apps anyway?
• Graham Acres and Heiko Voigt
• Cross Canada Collaboration User Group (C3UG)
1#engageug
Hi Thilo !
2#engageug
Agenda
• What this presentation is, and is not about
• What are the new possibilities?
• Demo
• What went into each demo?
• What are the moving parts?
• Where does the code run?
• What do I get that I didn’t have before?
• Lessons Learned
• Resources to get started!
3#engageug
• User Group based in Canada
• Customers, Business Partners, IBMers
• Focus on virtual presence in 2017
• YouTube
• Facebook
• Twitter
• LinkedIn
• 36+ videos on YouTube
4#engageug
www.c3ug.ca
About C3UG
About Graham
• President of Brytek Systems Inc. in
Vancouver, Canada
• Notes / Domino application architect
since 1992 (v2.1)
• IBM Champion 2017-2019
• Core Team Member at Cross Canada
Collaboration User Group (C3UG)
• OpenNTF Board Member 2019
• Cyclist, gardener, cook, hockey nut
5#engageug
About Heiko
• CEO of SIT GmbH in Germany and
Harbour Light Software Development
Ltd. in Canada
• Software Architect for 25+ years with
N/D, Full-Stack JS Web Developer
• IBM Champion 2019
• Core Team Member at Cross Canada
Collaboration User Group (C3UG)
• Proud father of twins
• Sailor, Home brewer
6#engageug
https://www.sit.de
https://www.harbour-light.com
What this talk is about
• We will talk about:
• React, Node.JS, Express, Socket.IO, Passport
• Domino-DB, Proton, Notes, IDMA, Domino
• Tooling
• Security
• Development vs. Deployment
• We will not talk about:
• Angular, Amber, Vue.JS and any other friggin’ web
framework YOU currently might be excited about
• OAuth and IAM – for time reasons
• Comparison of backend data stores – we are
#Domino4ever.
• Deployment and Code Management for the sake
of time 7#engageug
8#engageug
Popularity of Package Catalogues
Popularity of Programming Languages
Popularity of Web Frameworks
Lower your risk by adopting widespread tools – help, samples, tutorials, fixes.
Why use Node.JS/Express/REACT/Domino-Db ?
Why use Node.JS/Express/REACT/Domino-Db ?
• From an HCL perspective, the AppDev Pack is a small and
lightweight interface compared to other development stacks in
Domino:
• XPages – JSF/Java, Dojo, Components, Plugins, lots of dependencies
• Java API – still a glued JNI covering the C++ Classes with all cons, heavy
lifting required to re-write (see OpenNTF ODA as the better alternative)
• LotusScript – outdated and lack of tooling an all levels
• JavaScript in the Notes Client: Not even half baked
• Web Development in pure Notes – takes a certain amount of self-hatred or
masochism (Theo????) to go down that rabbit hole…
 NERD: Huge Community, lots of choices,
small and doable interface to build.
9#engageug
What to use ? NERD-Stack
10#engageug
Node.JS
Express
REACT
Domino-Db Node.JS
Express
REACT
Domino-Db
API
Demo Overview
11#engageug
Domino
Q.NSF
HCL Nomad/
IDMA
REST API
based on
Node.JS and Express
Realtime Backend
based on
Node.JS and Socket.io
React Frontend
App
React Dashboard
App
Demo responsibilities
12#engageug
• React Frontend • Domino App
• REST-API
• Realtime Backend and Dashboard
Demo Notes/iPad
13#engageug
• Creates surveys
• Creates Question of the day
• Is a survey client on the iPad
• “regular” Notes App with minor
adjustments for tablet use
Demo React Frontend
14#engageug
Demo Dashboard Frontend
15#engageug
• Socket.io Client
• React Frontend
• Realtime Usage of REST API
Calls in the REST Layer
Building Blocks: What lives where ?
#engageug
Domino P
R
O
T
O
N
Q.NSF
L
D
A
P
Notes
Client
IDMA /
HCL
Nomad
REST-API App
Domino-DB
Passport JWT
Express, Socket.io
Node.JS
Express
Node.JS
Realtime App
Socket.io
Domino Node.js based
Middleware
React based
Front end
Dashboard
Web App
Domino Server Computer
NGINX
Reverse
Proxy
Harbour-
light.com
Survey Web
App
React
Redux
React
Socket.io
Demo Elements: Domino
• Q.nsf
• IDMA access
• LDAP
• Domino Authentication
• Proton
• Listens to calls from the API for
Domino Data
• Supports all CRUD operations
17#engageug
Domino P
R
O
T
O
N
Q.NSF
L
D
A
P
Notes
Client
IDMA /
HCL
Nomad
Domino
Demo Elements: Node.js based Middleware
• REST-API App
• Domino-db
• Passport / JWT
• Express, Socket.io
• Node.js
• Realtime App
• Socket.io
• Express
• Node.js
18#engageug
REST-API App
Domino-DB
Passport JWT
Express, Socket.io
Node.js
Express
Node.js
Realtime App
Socket.io
Node.js based
Middlware
• Defines the API endpoints
• Handles Authentication via LDAP
and JWT
• Interacts with Domino
• Fires real time events as Socket-io client
• Server & Client Components
• Receives API Call Events from API
• Publishes Summaries to Dashboard
using socket.io
API Request using Postman
19#engageug
Demo Elements: Authentication
• The React Frontend App authenticates against Domino
LDAP once and receives a JSON Web Token (JWT) to
pass to the subsequent API calls to do authenticated
REST Calls.
• All Handling is stateless, so no HTTP(s) or Domino
Sessions come into play.
• The API validates the passed-in JWT token and
connects to Domino using a technical user and SSL
encryption for Proton.
• We do not need personalized data in this version of the
demo – in the next stage, this will change and users will
be able to authenticate using OAuth2 and IAM.
• The socket.io clients log into the socket-io server without
credentials and subscribe to a specific message type to
send/receive data.
20#engageug
REST-API App
Domino-DB
Passport JWT
Express, Socket.io
Node.js
Express
Node.js
Realtime App
Socket.io
Node.js based
Middlware
Demo Elements: React based front end
• Survey Web App
• React
• React-Redux
• Axios, Redux-Thunk
• Redux-Form
• React-Bootstrap
• Dashboard Web App
• React
• Socket.io Client – receives Summary data
• Charting component
21#engageug
React based
Front end
Dashboard
Web App
Survey Web App
React
Redux
React
Socket.io
What do I get that I didn’t have before?
• The ”Domino Way” vs Modern App Development
• All-in-one vs. stringently layered and structured applications if done
right -> See Mike Holmes for Details. Easier to maintain, easier to
replace components, easier re-use on all layers.
• Significantly more flexibility to
• Interact with your, and others’ data
• Expose your data (while keeping security)
• Scalabilty (vertical and horizontal), Standard Deployment Mechanisms
& Codestore (Git, Jenkins, Maven,….)
• Flexibility of choice on the front-end from Libraries like React, Angular,
Vue.JS to Client Applications using PWAs or Electron-based Apps.
• What do I give up?
• Nothing – the old tooling is still there to use if needed 22#engageug
What tooling do I need? - Recommendations
• Notes, Domino, Designer, AppDev Pack
• Node.js, Express
• Visual Studio Code
• Postman
• Redux DevTools
• Web Browser and Browser Dev Tools
• GitHub
23#engageug
Lessons Learned
• React is not a UI framework
• You will rebuild your app multiple times
• What we were told when we learned XPages is true!
• Stick to RESTful principles when designing your API but
do it by hand once before using any toolkits.
• Use create-react-app to get started, especially to help in
your first deployments
• Be prepared to learn about Webpack ! (Check in you org,
you might not be the only one)
24#engageug
Resources, Resources, Resources
• Axios
• Passport
• Express Validator
• 4-gui
• lodash
• Cors
• OpenAPI/Swagger
• Tim Davis
• Paul Withers
• John Jardin
• Oliver Busse
• Ulrich Krause
• Us ()
• Stephen Grider
25#engageug
More Resources
• Find our code here:
https://github.com/c3ug/engage2019democode
• Udemy is your friend !
• Stackoverflow.com
• Upcoming C3UG video series on YouTube and Udemy
• OpenNTF resources
• Slack channel #dominonodejs
• Community developed guides
26#engageug
Questions
Graham Acres
• graham.acres@brytek.ca
• @gacres99
• https://github.com/gacres/
Heiko Voigt
• heiko.voigt@harbour-light.com
• @HarbourLightcom
• https://github.com/heikovoigt
27#engageug
https://www.c3ug.ca/

More Related Content

What's hot

Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
Paul Withers
 
Docking, loading, running domino on docker v12
Docking, loading, running domino on docker v12Docking, loading, running domino on docker v12
Docking, loading, running domino on docker v12
Daniele Vistalli
 
CollabSphere 2018: How to build your SmartCloud Notes hybrid environment
CollabSphere 2018: How to build your SmartCloud Notes hybrid environmentCollabSphere 2018: How to build your SmartCloud Notes hybrid environment
CollabSphere 2018: How to build your SmartCloud Notes hybrid environment
David Hablewitz
 
Step by step installation domino on docker
Step by step installation domino on dockerStep by step installation domino on docker
Step by step installation domino on docker
Roberto Boccadoro
 
Top 10 PowerShell Features in Server 2012
Top 10 PowerShell Features in Server 2012Top 10 PowerShell Features in Server 2012
Top 10 PowerShell Features in Server 2012
Thomas Lee
 
Ms vs ibm_v1.3
Ms vs ibm_v1.3Ms vs ibm_v1.3
Ms vs ibm_v1.3
Andy Higgins
 
2016 spice world_london_breakout
2016 spice world_london_breakout2016 spice world_london_breakout
2016 spice world_london_breakout
Thomas Lee
 
.docker : How to deploy Digital Experience in a container, drinking a cup of ...
.docker : How to deploy Digital Experience in a container, drinking a cup of ....docker : How to deploy Digital Experience in a container, drinking a cup of ...
.docker : How to deploy Digital Experience in a container, drinking a cup of ...
ICON UK EVENTS Limited
 
Move Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast LaneMove Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast Lane
Teamstudio
 
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
Ido Flatow
 
IBM Connections Adminblast - Connect17 (DEV 1268)
IBM Connections Adminblast - Connect17 (DEV 1268)IBM Connections Adminblast - Connect17 (DEV 1268)
IBM Connections Adminblast - Connect17 (DEV 1268)
Nico Meisenzahl
 
2015 spice world_london_breakout
2015 spice world_london_breakout2015 spice world_london_breakout
2015 spice world_london_breakout
Thomas Lee
 
Planning & Completing An IBM Connections Upgrade
Planning & Completing An IBM Connections UpgradePlanning & Completing An IBM Connections Upgrade
Planning & Completing An IBM Connections Upgrade
Gabriella Davis
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web Applications
Achievers Tech
 
Docker in a big company
Docker in a big companyDocker in a big company
Docker in a big company
Docker, Inc.
 
August OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub ExplainedAugust OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub Explained
Howard Greenberg
 
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
Howard Greenberg
 
docker : how to deploy Digital Experience in a container drinking a cup of co...
docker : how to deploy Digital Experience in a container drinking a cup of co...docker : how to deploy Digital Experience in a container drinking a cup of co...
docker : how to deploy Digital Experience in a container drinking a cup of co...
Matteo Bisi
 
Soccnx10: IBM Connections Troubleshooting or “Get the Cow off the Ice”
Soccnx10: IBM Connections Troubleshooting or “Get the Cow off the Ice”Soccnx10: IBM Connections Troubleshooting or “Get the Cow off the Ice”
Soccnx10: IBM Connections Troubleshooting or “Get the Cow off the Ice”
panagenda
 
Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i  Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i
Zend by Rogue Wave Software
 

What's hot (20)

Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
 
Docking, loading, running domino on docker v12
Docking, loading, running domino on docker v12Docking, loading, running domino on docker v12
Docking, loading, running domino on docker v12
 
CollabSphere 2018: How to build your SmartCloud Notes hybrid environment
CollabSphere 2018: How to build your SmartCloud Notes hybrid environmentCollabSphere 2018: How to build your SmartCloud Notes hybrid environment
CollabSphere 2018: How to build your SmartCloud Notes hybrid environment
 
Step by step installation domino on docker
Step by step installation domino on dockerStep by step installation domino on docker
Step by step installation domino on docker
 
Top 10 PowerShell Features in Server 2012
Top 10 PowerShell Features in Server 2012Top 10 PowerShell Features in Server 2012
Top 10 PowerShell Features in Server 2012
 
Ms vs ibm_v1.3
Ms vs ibm_v1.3Ms vs ibm_v1.3
Ms vs ibm_v1.3
 
2016 spice world_london_breakout
2016 spice world_london_breakout2016 spice world_london_breakout
2016 spice world_london_breakout
 
.docker : How to deploy Digital Experience in a container, drinking a cup of ...
.docker : How to deploy Digital Experience in a container, drinking a cup of ....docker : How to deploy Digital Experience in a container, drinking a cup of ...
.docker : How to deploy Digital Experience in a container, drinking a cup of ...
 
Move Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast LaneMove Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast Lane
 
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
 
IBM Connections Adminblast - Connect17 (DEV 1268)
IBM Connections Adminblast - Connect17 (DEV 1268)IBM Connections Adminblast - Connect17 (DEV 1268)
IBM Connections Adminblast - Connect17 (DEV 1268)
 
2015 spice world_london_breakout
2015 spice world_london_breakout2015 spice world_london_breakout
2015 spice world_london_breakout
 
Planning & Completing An IBM Connections Upgrade
Planning & Completing An IBM Connections UpgradePlanning & Completing An IBM Connections Upgrade
Planning & Completing An IBM Connections Upgrade
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web Applications
 
Docker in a big company
Docker in a big companyDocker in a big company
Docker in a big company
 
August OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub ExplainedAugust OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub Explained
 
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
 
docker : how to deploy Digital Experience in a container drinking a cup of co...
docker : how to deploy Digital Experience in a container drinking a cup of co...docker : how to deploy Digital Experience in a container drinking a cup of co...
docker : how to deploy Digital Experience in a container drinking a cup of co...
 
Soccnx10: IBM Connections Troubleshooting or “Get the Cow off the Ice”
Soccnx10: IBM Connections Troubleshooting or “Get the Cow off the Ice”Soccnx10: IBM Connections Troubleshooting or “Get the Cow off the Ice”
Soccnx10: IBM Connections Troubleshooting or “Get the Cow off the Ice”
 
Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i  Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i
 

Similar to What is cool with Domino V10, Proton and Node.JS, and why would I use it in my Domino Apps anyway?

DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in DominoDEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
Heiko Voigt
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
Heiko Voigt
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
Howard Greenberg
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
James Williams
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
GlobalLogic Ukraine
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Brian Culver
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the BrowserForge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Autodesk
 
Development Processes and Tooling
Development Processes and ToolingDevelopment Processes and Tooling
Development Processes and Tooling
Bora Bilgin
 
Android quick talk
Android quick talkAndroid quick talk
Android quick talk
SenthilKumar Selvaraj
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidad
Software Guru
 
Tech Thursdays: Building Products
Tech Thursdays: Building ProductsTech Thursdays: Building Products
Tech Thursdays: Building Products
Hayden Bleasel
 
How we build project for Open Source
How we build project for Open SourceHow we build project for Open Source
How we build project for Open Source
Alexander Zayats
 
Titanium appcelerator kickstart
Titanium appcelerator kickstartTitanium appcelerator kickstart
Titanium appcelerator kickstart
Alessio Ricco
 
Kiss.ts - The Keep It Simple Software Stack for 2017++
Kiss.ts - The Keep It Simple Software Stack for 2017++Kiss.ts - The Keep It Simple Software Stack for 2017++
Kiss.ts - The Keep It Simple Software Stack for 2017++
Ethan Ram
 
All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive ui
Paul van Zyl
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016Alex Wu
 
Magento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HRMagento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HR
Denis Ristic
 

Similar to What is cool with Domino V10, Proton and Node.JS, and why would I use it in my Domino Apps anyway? (20)

DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in DominoDEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the BrowserForge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the Browser
 
Development Processes and Tooling
Development Processes and ToolingDevelopment Processes and Tooling
Development Processes and Tooling
 
Android quick talk
Android quick talkAndroid quick talk
Android quick talk
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidad
 
Tech Thursdays: Building Products
Tech Thursdays: Building ProductsTech Thursdays: Building Products
Tech Thursdays: Building Products
 
How we build project for Open Source
How we build project for Open SourceHow we build project for Open Source
How we build project for Open Source
 
Titanium appcelerator kickstart
Titanium appcelerator kickstartTitanium appcelerator kickstart
Titanium appcelerator kickstart
 
Kiss.ts - The Keep It Simple Software Stack for 2017++
Kiss.ts - The Keep It Simple Software Stack for 2017++Kiss.ts - The Keep It Simple Software Stack for 2017++
Kiss.ts - The Keep It Simple Software Stack for 2017++
 
All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive ui
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
Magento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HRMagento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HR
 

Recently uploaded

Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 

Recently uploaded (20)

Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 

What is cool with Domino V10, Proton and Node.JS, and why would I use it in my Domino Apps anyway?

  • 1. What is cool with Domino V10, Proton and Node.JS, and why would I use it in my Domino Apps anyway? • Graham Acres and Heiko Voigt • Cross Canada Collaboration User Group (C3UG) 1#engageug
  • 3. Agenda • What this presentation is, and is not about • What are the new possibilities? • Demo • What went into each demo? • What are the moving parts? • Where does the code run? • What do I get that I didn’t have before? • Lessons Learned • Resources to get started! 3#engageug
  • 4. • User Group based in Canada • Customers, Business Partners, IBMers • Focus on virtual presence in 2017 • YouTube • Facebook • Twitter • LinkedIn • 36+ videos on YouTube 4#engageug www.c3ug.ca About C3UG
  • 5. About Graham • President of Brytek Systems Inc. in Vancouver, Canada • Notes / Domino application architect since 1992 (v2.1) • IBM Champion 2017-2019 • Core Team Member at Cross Canada Collaboration User Group (C3UG) • OpenNTF Board Member 2019 • Cyclist, gardener, cook, hockey nut 5#engageug
  • 6. About Heiko • CEO of SIT GmbH in Germany and Harbour Light Software Development Ltd. in Canada • Software Architect for 25+ years with N/D, Full-Stack JS Web Developer • IBM Champion 2019 • Core Team Member at Cross Canada Collaboration User Group (C3UG) • Proud father of twins • Sailor, Home brewer 6#engageug https://www.sit.de https://www.harbour-light.com
  • 7. What this talk is about • We will talk about: • React, Node.JS, Express, Socket.IO, Passport • Domino-DB, Proton, Notes, IDMA, Domino • Tooling • Security • Development vs. Deployment • We will not talk about: • Angular, Amber, Vue.JS and any other friggin’ web framework YOU currently might be excited about • OAuth and IAM – for time reasons • Comparison of backend data stores – we are #Domino4ever. • Deployment and Code Management for the sake of time 7#engageug
  • 8. 8#engageug Popularity of Package Catalogues Popularity of Programming Languages Popularity of Web Frameworks Lower your risk by adopting widespread tools – help, samples, tutorials, fixes. Why use Node.JS/Express/REACT/Domino-Db ?
  • 9. Why use Node.JS/Express/REACT/Domino-Db ? • From an HCL perspective, the AppDev Pack is a small and lightweight interface compared to other development stacks in Domino: • XPages – JSF/Java, Dojo, Components, Plugins, lots of dependencies • Java API – still a glued JNI covering the C++ Classes with all cons, heavy lifting required to re-write (see OpenNTF ODA as the better alternative) • LotusScript – outdated and lack of tooling an all levels • JavaScript in the Notes Client: Not even half baked • Web Development in pure Notes – takes a certain amount of self-hatred or masochism (Theo????) to go down that rabbit hole…  NERD: Huge Community, lots of choices, small and doable interface to build. 9#engageug
  • 10. What to use ? NERD-Stack 10#engageug Node.JS Express REACT Domino-Db Node.JS Express REACT Domino-Db API
  • 11. Demo Overview 11#engageug Domino Q.NSF HCL Nomad/ IDMA REST API based on Node.JS and Express Realtime Backend based on Node.JS and Socket.io React Frontend App React Dashboard App
  • 12. Demo responsibilities 12#engageug • React Frontend • Domino App • REST-API • Realtime Backend and Dashboard
  • 13. Demo Notes/iPad 13#engageug • Creates surveys • Creates Question of the day • Is a survey client on the iPad • “regular” Notes App with minor adjustments for tablet use
  • 15. Demo Dashboard Frontend 15#engageug • Socket.io Client • React Frontend • Realtime Usage of REST API Calls in the REST Layer
  • 16. Building Blocks: What lives where ? #engageug Domino P R O T O N Q.NSF L D A P Notes Client IDMA / HCL Nomad REST-API App Domino-DB Passport JWT Express, Socket.io Node.JS Express Node.JS Realtime App Socket.io Domino Node.js based Middleware React based Front end Dashboard Web App Domino Server Computer NGINX Reverse Proxy Harbour- light.com Survey Web App React Redux React Socket.io
  • 17. Demo Elements: Domino • Q.nsf • IDMA access • LDAP • Domino Authentication • Proton • Listens to calls from the API for Domino Data • Supports all CRUD operations 17#engageug Domino P R O T O N Q.NSF L D A P Notes Client IDMA / HCL Nomad Domino
  • 18. Demo Elements: Node.js based Middleware • REST-API App • Domino-db • Passport / JWT • Express, Socket.io • Node.js • Realtime App • Socket.io • Express • Node.js 18#engageug REST-API App Domino-DB Passport JWT Express, Socket.io Node.js Express Node.js Realtime App Socket.io Node.js based Middlware • Defines the API endpoints • Handles Authentication via LDAP and JWT • Interacts with Domino • Fires real time events as Socket-io client • Server & Client Components • Receives API Call Events from API • Publishes Summaries to Dashboard using socket.io
  • 19. API Request using Postman 19#engageug
  • 20. Demo Elements: Authentication • The React Frontend App authenticates against Domino LDAP once and receives a JSON Web Token (JWT) to pass to the subsequent API calls to do authenticated REST Calls. • All Handling is stateless, so no HTTP(s) or Domino Sessions come into play. • The API validates the passed-in JWT token and connects to Domino using a technical user and SSL encryption for Proton. • We do not need personalized data in this version of the demo – in the next stage, this will change and users will be able to authenticate using OAuth2 and IAM. • The socket.io clients log into the socket-io server without credentials and subscribe to a specific message type to send/receive data. 20#engageug REST-API App Domino-DB Passport JWT Express, Socket.io Node.js Express Node.js Realtime App Socket.io Node.js based Middlware
  • 21. Demo Elements: React based front end • Survey Web App • React • React-Redux • Axios, Redux-Thunk • Redux-Form • React-Bootstrap • Dashboard Web App • React • Socket.io Client – receives Summary data • Charting component 21#engageug React based Front end Dashboard Web App Survey Web App React Redux React Socket.io
  • 22. What do I get that I didn’t have before? • The ”Domino Way” vs Modern App Development • All-in-one vs. stringently layered and structured applications if done right -> See Mike Holmes for Details. Easier to maintain, easier to replace components, easier re-use on all layers. • Significantly more flexibility to • Interact with your, and others’ data • Expose your data (while keeping security) • Scalabilty (vertical and horizontal), Standard Deployment Mechanisms & Codestore (Git, Jenkins, Maven,….) • Flexibility of choice on the front-end from Libraries like React, Angular, Vue.JS to Client Applications using PWAs or Electron-based Apps. • What do I give up? • Nothing – the old tooling is still there to use if needed 22#engageug
  • 23. What tooling do I need? - Recommendations • Notes, Domino, Designer, AppDev Pack • Node.js, Express • Visual Studio Code • Postman • Redux DevTools • Web Browser and Browser Dev Tools • GitHub 23#engageug
  • 24. Lessons Learned • React is not a UI framework • You will rebuild your app multiple times • What we were told when we learned XPages is true! • Stick to RESTful principles when designing your API but do it by hand once before using any toolkits. • Use create-react-app to get started, especially to help in your first deployments • Be prepared to learn about Webpack ! (Check in you org, you might not be the only one) 24#engageug
  • 25. Resources, Resources, Resources • Axios • Passport • Express Validator • 4-gui • lodash • Cors • OpenAPI/Swagger • Tim Davis • Paul Withers • John Jardin • Oliver Busse • Ulrich Krause • Us () • Stephen Grider 25#engageug
  • 26. More Resources • Find our code here: https://github.com/c3ug/engage2019democode • Udemy is your friend ! • Stackoverflow.com • Upcoming C3UG video series on YouTube and Udemy • OpenNTF resources • Slack channel #dominonodejs • Community developed guides 26#engageug
  • 27. Questions Graham Acres • graham.acres@brytek.ca • @gacres99 • https://github.com/gacres/ Heiko Voigt • heiko.voigt@harbour-light.com • @HarbourLightcom • https://github.com/heikovoigt 27#engageug https://www.c3ug.ca/