a demo app of how to build a modern web app in a Domino application container (NSF) with the XPages runtime
You should download the latest release; the master branch can pick up a bit of changes between releases. Either way, you need to perform the below steps for setting up your Domino (and Designer) environment (java.pol
, JARs), followed by an npm install
(4.x LTS and 6.9 LTS have been tested).
This is an evolution of my demo app, "An App of Ice and Fire". There are currently branches for the stand-alone (single NSF) and Bluemix deployable (data and app NSFs segregated), along with the task runners being consolidated and front-end (UI layer of the) app being moved into its source with the ODP/WebContent/
path being the published, optimized path.
This application requires some JAR files to be contained within the /jvm/lib/ext/ path. Alternatively, they can be added to the application NSF's Code/JARs
path; the bottom line is that they must reside in the Java build path.
- com.google.Gson
- Apache Commons IOUtils
- a
notes.ini
edit (add HTTPEnableMethods=PUT,DELETE next to your local web preview port) OR adding PUT and DELETE as allowed methods in your Internet Site document for your server - the lwpd.domino.adapter.jar JAR needs to be added
I've marked where I've used GSON in my Java classes and have almost entirely provided the working com.ibm.commons.util.io.json equivalent. You can also manually work around the Apache Commons libraries, as they're mostly just helper utilities. I do recommend using them though, so if you can't access your server's file system, you can import them into the NSF.
For reasoning on why I recommend placing those JARs on your server, please consult my blog post on the subject.
Run the commands below from a command line, either from Terminal, etc. on *nix or Git BASH (or BASH environment in 10) for Windows.
Command | Result |
---|---|
npm run clean |
cleans ODP/WebContent/ |
npm run build |
cleans, lints and builds |
npm run dev |
preview, lint, build, watch, live reload |
Made possible by json-server
, you can run npm run dev
to develop against the front-end assets in src/
without a Domino server or Domino Designer; this will obviously lack the backing logic by the Domino based HTTPServets.
The front-end assets' source is all in src/
. A build will place the optimized assets into ODP/WebContent/
. The ODP must be imported into your NSF in Domino Designer to run correctly.
├── ODP
│ └── WebContent
├── ReadMe.md
├── bower.json
├── db.json
├── gulpfile.js
├── package.json
├── routes.json
└── src
├── css
├── index.html
├── js
├── partials
└── tags
The bluemix
branch contains a build optimized into a separate App ODP
from a Data ODP
, which correspond to the app and data NSFs, so as to allow for Bluemix deployment. The master
branch contains a version of things build for single NSF deployment.
The want/need to reconcile the concerns involved in modern front-end tooling combined with Domino/XPages back-end performance is born of a love for the web and automation. For more, read up on my chronicles on edm00se.io.
The MIT License (MIT) © 2016 Eric McCormick