A demo application, implemented in the XPages runtime, with a Domino NoSQL database, for Java HttpServlets and front-end development practices.
XPages Java HTML JavaScript CSS


App of Ice and Fire

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.

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

Front-End Development Without a Domino Server (or Designer)

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.

Basic Project Layout

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