SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
Escaping 
the! 
yellow 
bubble 
Experiences with rewriting a Domino app using MEAN
Topics 
• Evolution of web development 
• The MEAN stack 
• Getting started 
• MongoDb, Express, Angular, Node 
• Rewriting the Teamroom app with MEAN
Disclaimer 
• We’re in the DEV track 
• So expect a technical session 
• This session does NOT contain: 
• Objective C! 
• Swift! 
• Java! 
• It does contain: HTML, CSS and JavaScript
/me 
• Freelance full-stack web developer 
• XPages, web, mobile, Teamstudio Unplugged 
• Open source 
• OpenNTF Board 
• Bootstrap4XPages, XPages Debug Toolbar, 
Bootcards 
• Technology junkie
Development shift 
• Shift in how web apps are developed 
• Logic moving from server to client 
• From tightly coupled to loosely coupled using 
APIs 
• Driving forces: mobile & cloud 
• Offline hybrid apps don’t have a server
Traditional model 
Client! 
(browser) 
Server 
Request page 
- process request 
- get data 
- create HTML 
Response 
• HTML 
• CSS 
• Javascript 
display 
• PHP, ASP, JSP, Domino, XPages
Client-side JavaScript apps 
Client! 
(browser) 
Server 
Request page/ app 
Response 
(static HTML, JS, 
CSS) 
render 
API 
Form data 
Data (JSON)
Into the new world 
• All application logic written in JavaScript 
• On first request, the server sends the application 
source to the client 
• Runs completely in the browser 
• When it needs data, an API is called 
• Typically using REST and JSON
Pros and cons 
Pros! 
• app can respond faster 
• strict separation from 
back-end 
• building API first allows 
for multiple clients 
• generic skill set 
Cons! 
• client rendering is slower 
• less compatibility with 
older browsers 
• SEO 
• accessibility
Remember… 
• There is no ‘one size fits all’ 
• Depends on numerous factors 
• Your users/ devices/ browsers 
• Available development skills 
• Your infrastructure
Ingredients 
• Server providing a REST API 
• Database 
• And some (or a lot) JavaScript that creates the 
app 
• jQuery, Dojo 
• Framework like Angular, Backbone, Ember
The MEAN stack 
• Full-stack JavaScript framework for modern web 
applications 
• Remember LAMP (Linux, Apache, MySQL, PHP)
The MNEA stack 
• More logical order: MNEA (backend to frontend) 
• MongoDB: NoSQL database 
• NodeJS: JavaScript server engine 
• Express: application running on Node to make it easier 
to write applications 
• AngularJS: client-side front end framework 
• All components are open source 
• Runs on Windows or Mac
The MEAN stack 
• MEAN is used as an acronym 
• It is also a ‘product’: 
• MEAN.io (Linnovate) 
• MEAN.js 
• Offer boilerplate and sample code to get you up 
and running quickly
Getting started 
• A little different from XPages… 
• Forget about Domino Designer 
• You’re writing JavaScript, HTML, 
and CSS 
• Terminal is your new best friend
Getting started 
• And you’ll need a text editor 
• Use Notepad if you like :-) 
• But there are better alternatives 
• Syntax highlighting, code completion, debugging 
• I like Sublime Text 3, but there are more: 
• WebStorm (JavaScript IDE), Coda 2, Brackets
MongoDB 
• Very popular NoSQL database 
• High performance & -scalability 
• Sharding 
• Run locally or in the cloud 
• BlueMix, mongolab.com, Joyent, Amazon Web Services 
• Open source AGPL 3 license 
• Changes to MongoDB must be made public, but your 
apps not
NodeJS 
• “A platform to build fast and scalable network 
applications” 
• Simply put: a JavaScript server engine 
• Built using Google’s V8 Engine 
• It can be a web server, app server, API server
• Doesn’t have a fancy UI
Express 
• Web application framework, built on top of 
NodeJS 
• Used in the MEAN stack for the server side 
component: 
• Serving static resources (HTML, JS, Images, 
CSS) 
• Providing API routes to send/ receive data to/ 
from the Angular app
Express
AngularJS 
• Front-end web application framework 
• Runs in the browser, all client side JavaScript 
• Helps to create dynamic sites / Single Page 
Applications 
• Built-in functions to do partials 
• Built with testing in mind 
• Uses client-side templating
“Angular is what HTML would have been 
had it been designed for applications”
• Initial release 2009 
• Developed by and the community 
• Major driver for user (developer) adoption 
• Model-View-Controller (MVC) to make 
development and testing easier 
• Decouples DOM manipulation from application 
logic
Sidestep: MVC Frameworks 
• ‘Force’ you to structure your code 
• Model = data 
• View = what user’s see (HTML) 
• Controller = glues Model & View together 
• Less spaghetti code 
• AngularJS, Ember, Backbone, Knockout, and a lot more 
• todomvc.com
• HTML with custom attributes (‘directives’) 
• Tells Angular that it needs to ‘do’ something
AngularJS demos 
• Demos showcasing some of Angular’s out-of-the-box 
features 
• Using remote data, served by Domino Data 
Services (DDS) 
• See http://www.browniesblog.com/A55CBC/ 
blog.nsf/dx/09042013111234MBRF6E.htm 
• Can also use REST service from the ExtLib (or 
write one yourself)
AngularJS demo 
• Local Domino server 
• Static files served from domino/html folder 
• I want to serve them from a server 
• Same domain - so no CORS (Cross Origin Resource Sharing) 
issues 
• Could also have used NodeJS, Apache, … 
• Demo files and NSF: 
https://github.com/markleusink/XPagesBeerAngular
Let’s start simple…
Moving to MEAN 
• Subset of Teamroom 
• Rewritten in Angular 
• Data imported in Mongo 
Teamroom 
NSF 
MongoDB@ 
(Mongolab) 
NodeJS 
server 
Domino 
app & data (REST) 
AngularJS 
app 
browser
Moving to MEAN - 1 
• Install software: MongoDb, NodeJS, Express, 
Angular 
• Create a basic data model for TeamRoom docs
Moving to MEAN - 2 
• Script to get data from Domino into 
MongoDb 
• Connect to Domino REST API 
• Retrieve documents as JSON 
• Call MongoDb REST API for every 
document 
• Beware of invalid JSON ! 
Teamroom 
NSF 
NodeJS 
server 
MongoDB@ 
(Mongolab)
Moving to MEAN - 3 
• Write a REST API using Express running on 
Node 
• Proxy to get data from Mongo 
Node 
Express 
Browser 
MongoDB 
(@mongolab)
Moving to MEAN - 4 
• Write Angular app 
• Using Bootcards as the UI Framework 
• Source: https://github.com/teamstudio/ 
Teamroom2Mongo
Not finished (yet) 
• Proof of concept 
• Still a lot of areas to work on/ 
investigate 
• More functions from Teamroom 
• Authentication/ security 
• Full CRUD
Why? 
• Way forward for web development 
• Required if you want to build mobile hybrid apps 
• Cordova, PhoneGap, Worklight 
• No server-side web framework needed 
• Serve multiple clients
Conclusions 
• Quite a different skill set… 
• Many people learning, but only few have mastered it 
• Young technology 
• Best practices are just evolving 
• Need to pick the right components to use 
• Fun and ‘fresh’ way to develop apps
Questions? 
@markleusink 
m.leusink@linqed.eu 
http://linqed.eu

Más contenido relacionado

La actualidad más candente

The fundamental problems of GUI applications and why people choose React
The fundamental problems of GUI applications and why people choose ReactThe fundamental problems of GUI applications and why people choose React
The fundamental problems of GUI applications and why people choose ReactOliver N
 
BP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPagesBP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPagesedm00se
 
ASP.NET - Introduction to Web Forms and MVC
ASP.NET - Introduction to Web Forms and MVCASP.NET - Introduction to Web Forms and MVC
ASP.NET - Introduction to Web Forms and MVCBilal Amjad
 
Single Page Applications on JavaScript and ASP.NET MVC4
Single Page Applications on JavaScript and ASP.NET MVC4Single Page Applications on JavaScript and ASP.NET MVC4
Single Page Applications on JavaScript and ASP.NET MVC4Yuriy Shapovalov
 
Developing an aspnet web application
Developing an aspnet web applicationDeveloping an aspnet web application
Developing an aspnet web applicationRahul Bansal
 
ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1Kumar S
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkBob German
 
Server and client rendering of single page apps
Server and client rendering of single page appsServer and client rendering of single page apps
Server and client rendering of single page appsThomas Heymann
 
Modern Web Development in 2015
Modern Web Development in 2015Modern Web Development in 2015
Modern Web Development in 2015Oliver N
 
IBM Digital Experience Theme Customization
IBM Digital Experience Theme CustomizationIBM Digital Experience Theme Customization
IBM Digital Experience Theme CustomizationVan Staub, MBA
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesMark Roden
 
Introduction to asp.net
Introduction to asp.netIntroduction to asp.net
Introduction to asp.netSHADAB ALI
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...SPTechCon
 
Industrial training seminar ppt on asp.net
Industrial training seminar ppt on asp.netIndustrial training seminar ppt on asp.net
Industrial training seminar ppt on asp.netPankaj Kushwaha
 
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)Chris O'Brien
 
ASP.NET Presentation
ASP.NET PresentationASP.NET Presentation
ASP.NET Presentationdimuthu22
 
Introduction to ASP.NET
Introduction to ASP.NETIntroduction to ASP.NET
Introduction to ASP.NETRajkumarsoy
 
Introduction to ASP.NET
Introduction to ASP.NETIntroduction to ASP.NET
Introduction to ASP.NETPeter Gfader
 
Codemotion 2013 - Designing complex applications using html5 and knockoutjs
Codemotion 2013 - Designing complex applications using html5 and knockoutjsCodemotion 2013 - Designing complex applications using html5 and knockoutjs
Codemotion 2013 - Designing complex applications using html5 and knockoutjsFabio Franzini
 

La actualidad más candente (20)

The fundamental problems of GUI applications and why people choose React
The fundamental problems of GUI applications and why people choose ReactThe fundamental problems of GUI applications and why people choose React
The fundamental problems of GUI applications and why people choose React
 
BP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPagesBP101: A Modernized Workflow w/ Domino/XPages
BP101: A Modernized Workflow w/ Domino/XPages
 
ASP.NET - Introduction to Web Forms and MVC
ASP.NET - Introduction to Web Forms and MVCASP.NET - Introduction to Web Forms and MVC
ASP.NET - Introduction to Web Forms and MVC
 
Single Page Applications on JavaScript and ASP.NET MVC4
Single Page Applications on JavaScript and ASP.NET MVC4Single Page Applications on JavaScript and ASP.NET MVC4
Single Page Applications on JavaScript and ASP.NET MVC4
 
Developing an aspnet web application
Developing an aspnet web applicationDeveloping an aspnet web application
Developing an aspnet web application
 
ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint Framework
 
Server and client rendering of single page apps
Server and client rendering of single page appsServer and client rendering of single page apps
Server and client rendering of single page apps
 
Modern Web Development in 2015
Modern Web Development in 2015Modern Web Development in 2015
Modern Web Development in 2015
 
IBM Digital Experience Theme Customization
IBM Digital Experience Theme CustomizationIBM Digital Experience Theme Customization
IBM Digital Experience Theme Customization
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPages
 
Introduction to asp.net
Introduction to asp.netIntroduction to asp.net
Introduction to asp.net
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
 
Industrial training seminar ppt on asp.net
Industrial training seminar ppt on asp.netIndustrial training seminar ppt on asp.net
Industrial training seminar ppt on asp.net
 
Asp.net basic
Asp.net basicAsp.net basic
Asp.net basic
 
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)
Chris OBrien - Pitfalls when developing with the SharePoint Framework (SPFx)
 
ASP.NET Presentation
ASP.NET PresentationASP.NET Presentation
ASP.NET Presentation
 
Introduction to ASP.NET
Introduction to ASP.NETIntroduction to ASP.NET
Introduction to ASP.NET
 
Introduction to ASP.NET
Introduction to ASP.NETIntroduction to ASP.NET
Introduction to ASP.NET
 
Codemotion 2013 - Designing complex applications using html5 and knockoutjs
Codemotion 2013 - Designing complex applications using html5 and knockoutjsCodemotion 2013 - Designing complex applications using html5 and knockoutjs
Codemotion 2013 - Designing complex applications using html5 and knockoutjs
 

Destacado

Stop (de)bugging me!
Stop (de)bugging me!Stop (de)bugging me!
Stop (de)bugging me!Mark Leusink
 
Blug2013 frameworks
Blug2013 frameworksBlug2013 frameworks
Blug2013 frameworksMark Myers
 
IBM Bluemix for Administrators with Focus on XPages
IBM Bluemix for Administrators with Focus on XPagesIBM Bluemix for Administrators with Focus on XPages
IBM Bluemix for Administrators with Focus on XPagesNiklas Heidloff
 
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Mark Leusink
 
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
 
Collaborative Line of Business Applications on IBM Bluemix
Collaborative Line of Business Applications on IBM BluemixCollaborative Line of Business Applications on IBM Bluemix
Collaborative Line of Business Applications on IBM BluemixNiklas Heidloff
 

Destacado (7)

Stop (de)bugging me!
Stop (de)bugging me!Stop (de)bugging me!
Stop (de)bugging me!
 
Blug2013 frameworks
Blug2013 frameworksBlug2013 frameworks
Blug2013 frameworks
 
IBM Bluemix for Administrators with Focus on XPages
IBM Bluemix for Administrators with Focus on XPagesIBM Bluemix for Administrators with Focus on XPages
IBM Bluemix for Administrators with Focus on XPages
 
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
 
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...
 
Collaborative Line of Business Applications on IBM Bluemix
Collaborative Line of Business Applications on IBM BluemixCollaborative Line of Business Applications on IBM Bluemix
Collaborative Line of Business Applications on IBM Bluemix
 
Iconus 2016
Iconus 2016Iconus 2016
Iconus 2016
 

Similar a Escaping the yellow bubble - rewriting Domino using MongoDb and Angular

MEAN Stack WeNode Barcelona Workshop
MEAN Stack WeNode Barcelona WorkshopMEAN Stack WeNode Barcelona Workshop
MEAN Stack WeNode Barcelona WorkshopValeri Karpov
 
TDD a REST API With Node.js and MongoDB
TDD a REST API With Node.js and MongoDBTDD a REST API With Node.js and MongoDB
TDD a REST API With Node.js and MongoDBValeri Karpov
 
Developing and Testing a MongoDB and Node.js REST API
Developing and Testing a MongoDB and Node.js REST APIDeveloping and Testing a MongoDB and Node.js REST API
Developing and Testing a MongoDB and Node.js REST APIAll Things Open
 
Xamarin.Forms Bootcamp
Xamarin.Forms BootcampXamarin.Forms Bootcamp
Xamarin.Forms BootcampMike Melusky
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?Balajihope
 
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
 
Jumpstarting Your Cloud Journey with OSS on Amazon Lightsail
 Jumpstarting Your Cloud Journey with OSS on Amazon Lightsail Jumpstarting Your Cloud Journey with OSS on Amazon Lightsail
Jumpstarting Your Cloud Journey with OSS on Amazon LightsailAmazon Web Services
 
Meanstack Introduction by Kishore Chandra
Meanstack Introduction by Kishore ChandraMeanstack Introduction by Kishore Chandra
Meanstack Introduction by Kishore ChandraKishore Chandra
 
MEAN Stack Warm-up
MEAN Stack Warm-upMEAN Stack Warm-up
MEAN Stack Warm-upTroy Miles
 
Progressive Web Apps and React
Progressive Web Apps and ReactProgressive Web Apps and React
Progressive Web Apps and ReactMike Melusky
 
Simple Cloud with Amazon Lightsail - Mike Coleman
Simple Cloud with Amazon Lightsail - Mike ColemanSimple Cloud with Amazon Lightsail - Mike Coleman
Simple Cloud with Amazon Lightsail - Mike ColemanAmazon Web Services
 
Advanced Web Technology.pptx
Advanced Web Technology.pptxAdvanced Web Technology.pptx
Advanced Web Technology.pptxssuser35fdf2
 
AppScale @ LA.rb
AppScale @ LA.rbAppScale @ LA.rb
AppScale @ LA.rbChris Bunch
 

Similar a Escaping the yellow bubble - rewriting Domino using MongoDb and Angular (20)

20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
MEAN Stack WeNode Barcelona Workshop
MEAN Stack WeNode Barcelona WorkshopMEAN Stack WeNode Barcelona Workshop
MEAN Stack WeNode Barcelona Workshop
 
Mean stack
Mean stackMean stack
Mean stack
 
TDD a REST API With Node.js and MongoDB
TDD a REST API With Node.js and MongoDBTDD a REST API With Node.js and MongoDB
TDD a REST API With Node.js and MongoDB
 
Developing and Testing a MongoDB and Node.js REST API
Developing and Testing a MongoDB and Node.js REST APIDeveloping and Testing a MongoDB and Node.js REST API
Developing and Testing a MongoDB and Node.js REST API
 
Xamarin.Forms Bootcamp
Xamarin.Forms BootcampXamarin.Forms Bootcamp
Xamarin.Forms Bootcamp
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
 
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
 
Jumpstarting Your Cloud Journey with OSS on Amazon Lightsail
 Jumpstarting Your Cloud Journey with OSS on Amazon Lightsail Jumpstarting Your Cloud Journey with OSS on Amazon Lightsail
Jumpstarting Your Cloud Journey with OSS on Amazon Lightsail
 
Top 10 web application development frameworks 2016
Top 10 web application development frameworks 2016Top 10 web application development frameworks 2016
Top 10 web application development frameworks 2016
 
Meanstack Introduction by Kishore Chandra
Meanstack Introduction by Kishore ChandraMeanstack Introduction by Kishore Chandra
Meanstack Introduction by Kishore Chandra
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
The MEAN Stack
The MEAN StackThe MEAN Stack
The MEAN Stack
 
MEAN Stack Warm-up
MEAN Stack Warm-upMEAN Stack Warm-up
MEAN Stack Warm-up
 
Progressive Web Apps and React
Progressive Web Apps and ReactProgressive Web Apps and React
Progressive Web Apps and React
 
Simple Cloud with Amazon Lightsail - Mike Coleman
Simple Cloud with Amazon Lightsail - Mike ColemanSimple Cloud with Amazon Lightsail - Mike Coleman
Simple Cloud with Amazon Lightsail - Mike Coleman
 
20120802 timisoara
20120802 timisoara20120802 timisoara
20120802 timisoara
 
Advanced Web Technology.pptx
Advanced Web Technology.pptxAdvanced Web Technology.pptx
Advanced Web Technology.pptx
 
AppScale @ LA.rb
AppScale @ LA.rbAppScale @ LA.rb
AppScale @ LA.rb
 

Más de Mark Leusink

Now what can you really build with DQL and web components?
Now what can you really build with DQL and web components?Now what can you really build with DQL and web components?
Now what can you really build with DQL and web components?Mark Leusink
 
Creating mobile apps - an introduction to Ionic (Engage 2016)
Creating mobile apps - an introduction to Ionic (Engage 2016)Creating mobile apps - an introduction to Ionic (Engage 2016)
Creating mobile apps - an introduction to Ionic (Engage 2016)Mark Leusink
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinarMark Leusink
 
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014Mark Leusink
 
Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Mark Leusink
 
Introduction to Bootstrap (with XPages)
Introduction to Bootstrap (with XPages)Introduction to Bootstrap (with XPages)
Introduction to Bootstrap (with XPages)Mark Leusink
 
Stop (de)bugging me - ICON UK 2013
Stop (de)bugging me - ICON UK 2013Stop (de)bugging me - ICON UK 2013
Stop (de)bugging me - ICON UK 2013Mark Leusink
 

Más de Mark Leusink (7)

Now what can you really build with DQL and web components?
Now what can you really build with DQL and web components?Now what can you really build with DQL and web components?
Now what can you really build with DQL and web components?
 
Creating mobile apps - an introduction to Ionic (Engage 2016)
Creating mobile apps - an introduction to Ionic (Engage 2016)Creating mobile apps - an introduction to Ionic (Engage 2016)
Creating mobile apps - an introduction to Ionic (Engage 2016)
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinar
 
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
 
Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)
 
Introduction to Bootstrap (with XPages)
Introduction to Bootstrap (with XPages)Introduction to Bootstrap (with XPages)
Introduction to Bootstrap (with XPages)
 
Stop (de)bugging me - ICON UK 2013
Stop (de)bugging me - ICON UK 2013Stop (de)bugging me - ICON UK 2013
Stop (de)bugging me - ICON UK 2013
 

Último

DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 

Último (20)

DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 

Escaping the yellow bubble - rewriting Domino using MongoDb and Angular

  • 1. Escaping the! yellow bubble Experiences with rewriting a Domino app using MEAN
  • 2. Topics • Evolution of web development • The MEAN stack • Getting started • MongoDb, Express, Angular, Node • Rewriting the Teamroom app with MEAN
  • 3. Disclaimer • We’re in the DEV track • So expect a technical session • This session does NOT contain: • Objective C! • Swift! • Java! • It does contain: HTML, CSS and JavaScript
  • 4. /me • Freelance full-stack web developer • XPages, web, mobile, Teamstudio Unplugged • Open source • OpenNTF Board • Bootstrap4XPages, XPages Debug Toolbar, Bootcards • Technology junkie
  • 5. Development shift • Shift in how web apps are developed • Logic moving from server to client • From tightly coupled to loosely coupled using APIs • Driving forces: mobile & cloud • Offline hybrid apps don’t have a server
  • 6. Traditional model Client! (browser) Server Request page - process request - get data - create HTML Response • HTML • CSS • Javascript display • PHP, ASP, JSP, Domino, XPages
  • 7. Client-side JavaScript apps Client! (browser) Server Request page/ app Response (static HTML, JS, CSS) render API Form data Data (JSON)
  • 8. Into the new world • All application logic written in JavaScript • On first request, the server sends the application source to the client • Runs completely in the browser • When it needs data, an API is called • Typically using REST and JSON
  • 9. Pros and cons Pros! • app can respond faster • strict separation from back-end • building API first allows for multiple clients • generic skill set Cons! • client rendering is slower • less compatibility with older browsers • SEO • accessibility
  • 10. Remember… • There is no ‘one size fits all’ • Depends on numerous factors • Your users/ devices/ browsers • Available development skills • Your infrastructure
  • 11. Ingredients • Server providing a REST API • Database • And some (or a lot) JavaScript that creates the app • jQuery, Dojo • Framework like Angular, Backbone, Ember
  • 12. The MEAN stack • Full-stack JavaScript framework for modern web applications • Remember LAMP (Linux, Apache, MySQL, PHP)
  • 13. The MNEA stack • More logical order: MNEA (backend to frontend) • MongoDB: NoSQL database • NodeJS: JavaScript server engine • Express: application running on Node to make it easier to write applications • AngularJS: client-side front end framework • All components are open source • Runs on Windows or Mac
  • 14. The MEAN stack • MEAN is used as an acronym • It is also a ‘product’: • MEAN.io (Linnovate) • MEAN.js • Offer boilerplate and sample code to get you up and running quickly
  • 15. Getting started • A little different from XPages… • Forget about Domino Designer • You’re writing JavaScript, HTML, and CSS • Terminal is your new best friend
  • 16. Getting started • And you’ll need a text editor • Use Notepad if you like :-) • But there are better alternatives • Syntax highlighting, code completion, debugging • I like Sublime Text 3, but there are more: • WebStorm (JavaScript IDE), Coda 2, Brackets
  • 17. MongoDB • Very popular NoSQL database • High performance & -scalability • Sharding • Run locally or in the cloud • BlueMix, mongolab.com, Joyent, Amazon Web Services • Open source AGPL 3 license • Changes to MongoDB must be made public, but your apps not
  • 18. NodeJS • “A platform to build fast and scalable network applications” • Simply put: a JavaScript server engine • Built using Google’s V8 Engine • It can be a web server, app server, API server
  • 19. • Doesn’t have a fancy UI
  • 20.
  • 21. Express • Web application framework, built on top of NodeJS • Used in the MEAN stack for the server side component: • Serving static resources (HTML, JS, Images, CSS) • Providing API routes to send/ receive data to/ from the Angular app
  • 23.
  • 24. AngularJS • Front-end web application framework • Runs in the browser, all client side JavaScript • Helps to create dynamic sites / Single Page Applications • Built-in functions to do partials • Built with testing in mind • Uses client-side templating
  • 25. “Angular is what HTML would have been had it been designed for applications”
  • 26. • Initial release 2009 • Developed by and the community • Major driver for user (developer) adoption • Model-View-Controller (MVC) to make development and testing easier • Decouples DOM manipulation from application logic
  • 27. Sidestep: MVC Frameworks • ‘Force’ you to structure your code • Model = data • View = what user’s see (HTML) • Controller = glues Model & View together • Less spaghetti code • AngularJS, Ember, Backbone, Knockout, and a lot more • todomvc.com
  • 28. • HTML with custom attributes (‘directives’) • Tells Angular that it needs to ‘do’ something
  • 29. AngularJS demos • Demos showcasing some of Angular’s out-of-the-box features • Using remote data, served by Domino Data Services (DDS) • See http://www.browniesblog.com/A55CBC/ blog.nsf/dx/09042013111234MBRF6E.htm • Can also use REST service from the ExtLib (or write one yourself)
  • 30. AngularJS demo • Local Domino server • Static files served from domino/html folder • I want to serve them from a server • Same domain - so no CORS (Cross Origin Resource Sharing) issues • Could also have used NodeJS, Apache, … • Demo files and NSF: https://github.com/markleusink/XPagesBeerAngular
  • 32. Moving to MEAN • Subset of Teamroom • Rewritten in Angular • Data imported in Mongo Teamroom NSF MongoDB@ (Mongolab) NodeJS server Domino app & data (REST) AngularJS app browser
  • 33. Moving to MEAN - 1 • Install software: MongoDb, NodeJS, Express, Angular • Create a basic data model for TeamRoom docs
  • 34. Moving to MEAN - 2 • Script to get data from Domino into MongoDb • Connect to Domino REST API • Retrieve documents as JSON • Call MongoDb REST API for every document • Beware of invalid JSON ! Teamroom NSF NodeJS server MongoDB@ (Mongolab)
  • 35. Moving to MEAN - 3 • Write a REST API using Express running on Node • Proxy to get data from Mongo Node Express Browser MongoDB (@mongolab)
  • 36. Moving to MEAN - 4 • Write Angular app • Using Bootcards as the UI Framework • Source: https://github.com/teamstudio/ Teamroom2Mongo
  • 37. Not finished (yet) • Proof of concept • Still a lot of areas to work on/ investigate • More functions from Teamroom • Authentication/ security • Full CRUD
  • 38. Why? • Way forward for web development • Required if you want to build mobile hybrid apps • Cordova, PhoneGap, Worklight • No server-side web framework needed • Serve multiple clients
  • 39. Conclusions • Quite a different skill set… • Many people learning, but only few have mastered it • Young technology • Best practices are just evolving • Need to pick the right components to use • Fun and ‘fresh’ way to develop apps