SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
DEV117 - Unleash the Power of
the AppDev Pack and Node.js in
Domino
Graham Acres, Heiko Voigt
Canadian Cloud & Collaboration User Group
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!
About C3UG
• User Group based in Canada
• Customers, Business Partners, HCLers
• Focus on virtual presence in 2017
– YouTube
– Facebook
– Twitter
– LinkedIn
• 42+ videos on YouTube
Canadian Cloud & Collaboration User Group
www.c3ug.ca
About Graham
• President of Brytek Systems Inc. in Vancouver,
Canada
• Notes / Domino application architect since 1992
(v2.1)
• HCL Master 2019, IBM Champion 2017-2019
• Core Team Member at C3UG
• OpenNTF Board Member 2019
• Cyclist, gardener, cook, hockey nut
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 Web Developer
• HCL Master 2019, IBM Champion 2019
• Core Team Member at C3UG
• Proud father of twins
• Sailor, Home brewer
https://www.sit.dehttps://www.harbour-light.com
What This Talk is About
• We will talk about:
– React, Node.JS, Express, Socket.io
– Domino-DB, Proton, Notes, Nomad, Domino
– IAM and OAuth2
– 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
– Comparison of backend data stores – we are
#Domino4ever.
– Deployment and Code Management for the sake of time
Why use Node.JS/Express/REACT/Domino-Db ?
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 ?
• 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 despite new V10 classes
– JavaScript in the Notes Client: Not even half baked
– Web Development in old school Notes: let us just not go down that rabbit
hole!
è NERD: Huge community, lots of choices, small and doable interface to
build.
What to use? NERD-Stack
Node.JS
Express
REACT
Domino-Db Node.JS
Express
REACT
Domino-Db
API
Demo Overview
Domino
Q.NSF
HCL Nomad
REST API
based on
Node.JS and Express
Realtime Backend
based on
Node.JS and Socket.io
React Frontend
App
React Dashboard
App
Demo: Notes / iPad
• Creates surveys
• Creates Question of the day
• Is a survey client on the iPad
• “regular” Notes App with minor
adjustments for tablet use
Demo: Dashboard App
• Socket.io Client
• React Frontend
• Realtime Usage of REST API
Calls in the REST Layer
Demo: React Frontend App
https://www.harbour-light.com/c3ug-qotd/index.html
Building Blocks: What Lives Where?
Q.NSF Domino P
R
O
T
O
N
L
D
A
P
Notes
Client
HCL
Nomad
Domino
React based
Front end
Dashboard
Web App
REST-API App
Domino-DB
Express, Socket.io
Node.JS
Express
Node.JS
Realtime App
Socket.io
Node.js based
Middleware
Domino Server Computer
NGINX
Reverse
Proxy
Harbour-
light.com
Survey Web App
React
Redux
React
Socket.io
IAM Server
Demo Elements: Domino
• Q.nsf
• Notes Client / Nomad access
• Proton
• Listens to calls from the API for
Domino Data
– Supports all CRUD operations
• IAM
– Application Authentication
Domino P
R
O
T
O
N
Q.NSF
L
D
A
P
Notes
Client
HCL
Nomad
Domino
Demo Elements: Node.js based Middleware
• REST-API App
– Domino-db
– Express, Socket.io
– Node.js
– IAM Interaction
• Realtime App
– Socket.io
– Express
– Node.js
REST-API App
Domino-DB
Express, Socket.io
Node.js
Express
Node.js
Realtime App
Socket.io
Node.js based
Middlware
• Defines the API endpoints
• Handles Authentication IAM
• Interacts with Domino
• Fires realtime events as
Socket-io client
• Receives API Call Events from
API
• Publishes Summaries to
Dashboard
using socket.io
Demo Elements: What is the IAM Service ?
• A separate Server-component, based on Node.js for:
• Standard OAuth 2.0 Authorizations for Applications,
not only for domino-db but also for .NET/Java/etc.
• Access Control Features using ACL und Scopes*
• Secure Password Management
• Single Sign On
• Components:
• domino-iam-service – node.js based Server
• oauth-dsapi-extension: Domino Http-Server REST-Services with OAuth2
• node-iam-client: node.js client module for apps using domino-db and
node.js with Domino
• Other Languages like .NET or Java can access IAM using a standard REST-Interface
Demo Elements: What are Grant Types ?
Grant Type: HOW do I get an Access Token ?
In our demo, we are using the client credential flow.
IMPLICIT equals Password grant
Demo Elements: What are Scopes ?
A sort of Access Control in OAuth2.
• Not every application needs all the rights that a user has, sometimes a
subset is enough, e.g. reading profile data.
• A scope defines a certain access right – they can be used as single scope
or as a list of scopes that the user/administrator (depending on the grant type)
grant the application for use.
• The AppDevPack defines these Scopes:
• Basic Information (ID, Name and Email of a User)
• Offline Access (App can download Data without user interaction
-> mobile Apps)
• Free-/Busy Time AccessCalendar Read Access
• Calendar Write Access
• Domino Database Access – via domino-db
Demo Elements: Application Definition in IAM
REST-API App
Domino-DB
Express, Socket.io
Node.js
Express
Node.js
Realtime App
Socket.io
Node.js based
Middlware
Demo Elements: 1st API-Call: get the Access Token
Front-EndAPI
IAM
Domino
1) Send Client ID and
Client Secret
5) Send back access
Token or Error-Code.
2) Ask for Access
Token
3) Receive Access
Token
Demo Elements: Subsequent API Calls
Front-EndAPI
IAM
Domino
1) Send Request plus
access token
6) Send back
data/result/Errors
2) Introspect
Access Token
3) Receive Introspection Result
4) CRUD Operation
5) Create Response
Demo Elements: React based Front End App
• 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
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)
– Scalability (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
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
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)
Resources, Resources, Resources
• Axios
• Passport
• Express Validator
• 4-gui
• lodash
• Cors
• Tim Davis
• Paul Withers
• John Jardin
• Oliver Busse
• Ulrich Krause
• Us (J)
• Stephen Grider
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
Questions
Graham Acres
• graham.acres@brytek.ca
• @gacres99
• https://github.com/gacres/
Heiko Voigt
• heiko.voigt@harbour-light.com
• @HarbourLightcom
• https://github.com/heikovoigt
https://www.c3ug.ca/
API Request using Postman
Demo Responsibilities
• React Frontend • Domino App
• REST-API
• Realtime Backend and Dashboard
• IAM & OAuth2

Contenu connexe

Tendances

Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"
Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"
Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"Fwdays
 
Alfresco DevCon 2019 Performance Tools of the Trade
Alfresco DevCon 2019   Performance Tools of the TradeAlfresco DevCon 2019   Performance Tools of the Trade
Alfresco DevCon 2019 Performance Tools of the TradeLuis Colorado
 
Alfresco Development Framework Basic
Alfresco Development Framework BasicAlfresco Development Framework Basic
Alfresco Development Framework BasicMario Romano
 
Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Paul Withers
 
Write Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js MunichWrite Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js MunichMike North
 
Real World Rails Deployment
Real World Rails DeploymentReal World Rails Deployment
Real World Rails DeploymentAlan Hecht
 
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 WorkbenchHoward Greenberg
 
Ceylon From Here to Infinity: The Big Picture and What's Coming
Ceylon From Here to Infinity: The Big Picture and What's Coming Ceylon From Here to Infinity: The Big Picture and What's Coming
Ceylon From Here to Infinity: The Big Picture and What's Coming Virtual JBoss User Group
 
Active Cloud DB at CloudComp '10
Active Cloud DB at CloudComp '10Active Cloud DB at CloudComp '10
Active Cloud DB at CloudComp '10Chris Bunch
 
Increasing performance with Elixir Tasks
Increasing performance with Elixir TasksIncreasing performance with Elixir Tasks
Increasing performance with Elixir TasksJeffrey Chan
 
NCUG 2019: Super charge your API’s with Reactive streams
NCUG 2019: Super charge your API’s with Reactive streamsNCUG 2019: Super charge your API’s with Reactive streams
NCUG 2019: Super charge your API’s with Reactive streamsFrank van der Linden
 
CI/CD and Asset Serving for Single Page Apps
CI/CD and Asset Serving for Single Page AppsCI/CD and Asset Serving for Single Page Apps
CI/CD and Asset Serving for Single Page AppsMike North
 
Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Pavel Chunyayev
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for TestingMukta Aphale
 
AWS Lambda Function with Kotlin
AWS Lambda Function with KotlinAWS Lambda Function with Kotlin
AWS Lambda Function with KotlinTroy Miles
 
A Personal Journey
A Personal JourneyA Personal Journey
A Personal JourneyMichael Lihs
 
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...Frank van der Linden
 
Extending Alfresco Digital Workspace with Docusign
Extending Alfresco Digital Workspace with DocusignExtending Alfresco Digital Workspace with Docusign
Extending Alfresco Digital Workspace with DocusignLuis Colorado
 
Ship It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemShip It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemYi-Ting Cheng
 
Being With Rails App For 3 Years
Being With Rails App For 3 YearsBeing With Rails App For 3 Years
Being With Rails App For 3 Yearsdeeeki
 

Tendances (20)

Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"
Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"
Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"
 
Alfresco DevCon 2019 Performance Tools of the Trade
Alfresco DevCon 2019   Performance Tools of the TradeAlfresco DevCon 2019   Performance Tools of the Trade
Alfresco DevCon 2019 Performance Tools of the Trade
 
Alfresco Development Framework Basic
Alfresco Development Framework BasicAlfresco Development Framework Basic
Alfresco Development Framework Basic
 
Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications
 
Write Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js MunichWrite Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js Munich
 
Real World Rails Deployment
Real World Rails DeploymentReal World Rails Deployment
Real World Rails Deployment
 
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
 
Ceylon From Here to Infinity: The Big Picture and What's Coming
Ceylon From Here to Infinity: The Big Picture and What's Coming Ceylon From Here to Infinity: The Big Picture and What's Coming
Ceylon From Here to Infinity: The Big Picture and What's Coming
 
Active Cloud DB at CloudComp '10
Active Cloud DB at CloudComp '10Active Cloud DB at CloudComp '10
Active Cloud DB at CloudComp '10
 
Increasing performance with Elixir Tasks
Increasing performance with Elixir TasksIncreasing performance with Elixir Tasks
Increasing performance with Elixir Tasks
 
NCUG 2019: Super charge your API’s with Reactive streams
NCUG 2019: Super charge your API’s with Reactive streamsNCUG 2019: Super charge your API’s with Reactive streams
NCUG 2019: Super charge your API’s with Reactive streams
 
CI/CD and Asset Serving for Single Page Apps
CI/CD and Asset Serving for Single Page AppsCI/CD and Asset Serving for Single Page Apps
CI/CD and Asset Serving for Single Page Apps
 
Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for Testing
 
AWS Lambda Function with Kotlin
AWS Lambda Function with KotlinAWS Lambda Function with Kotlin
AWS Lambda Function with Kotlin
 
A Personal Journey
A Personal JourneyA Personal Journey
A Personal Journey
 
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
 
Extending Alfresco Digital Workspace with Docusign
Extending Alfresco Digital Workspace with DocusignExtending Alfresco Digital Workspace with Docusign
Extending Alfresco Digital Workspace with Docusign
 
Ship It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemShip It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails Ecosystem
 
Being With Rails App For 3 Years
Being With Rails App For 3 YearsBeing With Rails App For 3 Years
Being With Rails App For 3 Years
 

Similaire à DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino

What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...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
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016Alex Wu
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015WaveMaker, Inc.
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2Docker, Inc.
 
A295 nodejs-knowledge-accelerator
A295   nodejs-knowledge-acceleratorA295   nodejs-knowledge-accelerator
A295 nodejs-knowledge-acceleratorMichael Dawson
 
Building production-quality apps with Node.js
Building production-quality apps with Node.jsBuilding production-quality apps with Node.js
Building production-quality apps with Node.jsmattpardee
 
.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp.NET Cloud-Native Bootcamp
.NET Cloud-Native BootcampVMware Tanzu
 
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript FrameworksBuilding Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript FrameworksFITC
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleIT Arena
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureSARCCOM
 
Architecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering CultureArchitecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering Cultureifnu bima
 
DevOps and Cloud at NI
DevOps and Cloud at NIDevOps and Cloud at NI
DevOps and Cloud at NIErnest Mueller
 
Docker and containers - For Boston Docker Meetup Workshop in March 2015
Docker and containers - For Boston Docker Meetup Workshop in March 2015Docker and containers - For Boston Docker Meetup Workshop in March 2015
Docker and containers - For Boston Docker Meetup Workshop in March 2015Jonas Rosland
 
13 providing an ide for creating, simulating and assessing accessible applica...
13 providing an ide for creating, simulating and assessing accessible applica...13 providing an ide for creating, simulating and assessing accessible applica...
13 providing an ide for creating, simulating and assessing accessible applica...AEGIS-ACCESSIBLE Projects
 
How to build a JavaScript toolkit
How to build a JavaScript toolkitHow to build a JavaScript toolkit
How to build a JavaScript toolkitMichael Nelson
 
Docker Training - June 2015
Docker Training - June 2015Docker Training - June 2015
Docker Training - June 2015{code}
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 

Similaire à DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino (20)

What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
 
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...
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
 
A295 nodejs-knowledge-accelerator
A295   nodejs-knowledge-acceleratorA295   nodejs-knowledge-accelerator
A295 nodejs-knowledge-accelerator
 
Building production-quality apps with Node.js
Building production-quality apps with Node.jsBuilding production-quality apps with Node.js
Building production-quality apps with Node.js
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
Android quick talk
Android quick talkAndroid quick talk
Android quick talk
 
.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp
 
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript FrameworksBuilding Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering Culture
 
Architecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering CultureArchitecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering Culture
 
DevOps and Cloud at NI
DevOps and Cloud at NIDevOps and Cloud at NI
DevOps and Cloud at NI
 
Docker and containers - For Boston Docker Meetup Workshop in March 2015
Docker and containers - For Boston Docker Meetup Workshop in March 2015Docker and containers - For Boston Docker Meetup Workshop in March 2015
Docker and containers - For Boston Docker Meetup Workshop in March 2015
 
13 providing an ide for creating, simulating and assessing accessible applica...
13 providing an ide for creating, simulating and assessing accessible applica...13 providing an ide for creating, simulating and assessing accessible applica...
13 providing an ide for creating, simulating and assessing accessible applica...
 
How to build a JavaScript toolkit
How to build a JavaScript toolkitHow to build a JavaScript toolkit
How to build a JavaScript toolkit
 
Docker Training - June 2015
Docker Training - June 2015Docker Training - June 2015
Docker Training - June 2015
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 

Dernier

Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Dernier (20)

Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino

  • 1. DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino Graham Acres, Heiko Voigt Canadian Cloud & Collaboration User Group
  • 2.
  • 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!
  • 4. About C3UG • User Group based in Canada • Customers, Business Partners, HCLers • Focus on virtual presence in 2017 – YouTube – Facebook – Twitter – LinkedIn • 42+ videos on YouTube Canadian Cloud & Collaboration User Group www.c3ug.ca
  • 5. About Graham • President of Brytek Systems Inc. in Vancouver, Canada • Notes / Domino application architect since 1992 (v2.1) • HCL Master 2019, IBM Champion 2017-2019 • Core Team Member at C3UG • OpenNTF Board Member 2019 • Cyclist, gardener, cook, hockey nut
  • 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 Web Developer • HCL Master 2019, IBM Champion 2019 • Core Team Member at C3UG • Proud father of twins • Sailor, Home brewer https://www.sit.dehttps://www.harbour-light.com
  • 7. What This Talk is About • We will talk about: – React, Node.JS, Express, Socket.io – Domino-DB, Proton, Notes, Nomad, Domino – IAM and OAuth2 – 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 – Comparison of backend data stores – we are #Domino4ever. – Deployment and Code Management for the sake of time
  • 8. Why use Node.JS/Express/REACT/Domino-Db ? Popularity of Package Catalogues Popularity of Programming Languages Popularity of Web Frameworks Lower your risk by adopting widespread tools – help, samples, tutorials, fixes.
  • 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 despite new V10 classes – JavaScript in the Notes Client: Not even half baked – Web Development in old school Notes: let us just not go down that rabbit hole! è NERD: Huge community, lots of choices, small and doable interface to build.
  • 10. What to use? NERD-Stack Node.JS Express REACT Domino-Db Node.JS Express REACT Domino-Db API
  • 11. Demo Overview Domino Q.NSF HCL Nomad 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: Notes / iPad • Creates surveys • Creates Question of the day • Is a survey client on the iPad • “regular” Notes App with minor adjustments for tablet use
  • 13. Demo: Dashboard App • Socket.io Client • React Frontend • Realtime Usage of REST API Calls in the REST Layer
  • 14. Demo: React Frontend App https://www.harbour-light.com/c3ug-qotd/index.html
  • 15. Building Blocks: What Lives Where? Q.NSF Domino P R O T O N L D A P Notes Client HCL Nomad Domino React based Front end Dashboard Web App REST-API App Domino-DB Express, Socket.io Node.JS Express Node.JS Realtime App Socket.io Node.js based Middleware Domino Server Computer NGINX Reverse Proxy Harbour- light.com Survey Web App React Redux React Socket.io IAM Server
  • 16. Demo Elements: Domino • Q.nsf • Notes Client / Nomad access • Proton • Listens to calls from the API for Domino Data – Supports all CRUD operations • IAM – Application Authentication Domino P R O T O N Q.NSF L D A P Notes Client HCL Nomad Domino
  • 17. Demo Elements: Node.js based Middleware • REST-API App – Domino-db – Express, Socket.io – Node.js – IAM Interaction • Realtime App – Socket.io – Express – Node.js REST-API App Domino-DB Express, Socket.io Node.js Express Node.js Realtime App Socket.io Node.js based Middlware • Defines the API endpoints • Handles Authentication IAM • Interacts with Domino • Fires realtime events as Socket-io client • Receives API Call Events from API • Publishes Summaries to Dashboard using socket.io
  • 18. Demo Elements: What is the IAM Service ? • A separate Server-component, based on Node.js for: • Standard OAuth 2.0 Authorizations for Applications, not only for domino-db but also for .NET/Java/etc. • Access Control Features using ACL und Scopes* • Secure Password Management • Single Sign On • Components: • domino-iam-service – node.js based Server • oauth-dsapi-extension: Domino Http-Server REST-Services with OAuth2 • node-iam-client: node.js client module for apps using domino-db and node.js with Domino • Other Languages like .NET or Java can access IAM using a standard REST-Interface
  • 19. Demo Elements: What are Grant Types ? Grant Type: HOW do I get an Access Token ? In our demo, we are using the client credential flow. IMPLICIT equals Password grant
  • 20. Demo Elements: What are Scopes ? A sort of Access Control in OAuth2. • Not every application needs all the rights that a user has, sometimes a subset is enough, e.g. reading profile data. • A scope defines a certain access right – they can be used as single scope or as a list of scopes that the user/administrator (depending on the grant type) grant the application for use. • The AppDevPack defines these Scopes: • Basic Information (ID, Name and Email of a User) • Offline Access (App can download Data without user interaction -> mobile Apps) • Free-/Busy Time AccessCalendar Read Access • Calendar Write Access • Domino Database Access – via domino-db
  • 21. Demo Elements: Application Definition in IAM REST-API App Domino-DB Express, Socket.io Node.js Express Node.js Realtime App Socket.io Node.js based Middlware
  • 22. Demo Elements: 1st API-Call: get the Access Token Front-EndAPI IAM Domino 1) Send Client ID and Client Secret 5) Send back access Token or Error-Code. 2) Ask for Access Token 3) Receive Access Token
  • 23. Demo Elements: Subsequent API Calls Front-EndAPI IAM Domino 1) Send Request plus access token 6) Send back data/result/Errors 2) Introspect Access Token 3) Receive Introspection Result 4) CRUD Operation 5) Create Response
  • 24. Demo Elements: React based Front End App • 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 React based Front end Dashboard Web App Survey Web App React Redux React Socket.io
  • 25. 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) – Scalability (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
  • 26. 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
  • 27. 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)
  • 28. Resources, Resources, Resources • Axios • Passport • Express Validator • 4-gui • lodash • Cors • Tim Davis • Paul Withers • John Jardin • Oliver Busse • Ulrich Krause • Us (J) • Stephen Grider
  • 29. 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
  • 30. Questions Graham Acres • graham.acres@brytek.ca • @gacres99 • https://github.com/gacres/ Heiko Voigt • heiko.voigt@harbour-light.com • @HarbourLightcom • https://github.com/heikovoigt https://www.c3ug.ca/
  • 31.
  • 32. API Request using Postman
  • 33. Demo Responsibilities • React Frontend • Domino App • REST-API • Realtime Backend and Dashboard • IAM & OAuth2