The UI for Spline project
Spline UI app is implemented as a single-page application (SPA), available alone as well as packed as a Docker image or a WAR-file. Choose according to your deployment preferences.
See gallery
Spline UI needs to know where Spline Consumer API sits. Spline Consumer API endpoint is accessed from the user browser directly, so use appropriate IP or host name.
docker container run \
-e SPLINE_CONSUMER_URL=http://localhost:8080/consumer \
-p 9090:8080 \
absaoss/spline-web-ui:latest
Open Spline UI in a browser - http://localhost:9090
Download a WAR-file using the link above, and deploy it into any J2EE-compatible Web Container, e.g. Tomcat, Jetty, JBoss etc.
A WAR-file provides several alternative ways how to set configuration parameters:
-
JNDI
(for example in a
context.xml
in the Tomcat server)<Environment name="spline/consumer/url" value="..." type="java.lang.String"/>
-
JVM property
$JAVA_OPTS -Dspline.consumer.url=...
-
System environment variable
export SPLINE_CONSUMER_URL=...
It is possible to use compiled UI sources placed at some CDN server. In that the application can be configured with query parameters like so:
<iframe
src="https://cdn.jsdelivr.net/path-to-compiled-app-assets/index.html?_splineConsumerApiUrl=ENCODED_CONSUMER_API_PATH&_targetUrl=ENCODED_APP_PATH&_isEmbeddedMode=true">
</iframe>
All available config query parameters list:
Name | Description | Default | Required |
---|---|---|---|
_splineConsumerApiUrl |
Spline Consumer API URI | true | |
_isEmbeddedMode |
Embedded mode settings | false |
false |
_targetUrl |
App will be redirected to that url right after initialization. The path should start with / |
/ |
false |
_splineConsumerApiUrl
is a required query parameter.
- Install the LTS version of Node.js: https://nodejs.org/en/download/
- Install the latest version of NPM:
npm i -g npm@latest
- Install dependencies:
- Go to the ui directory:
cd <root>/ui
- Run
npm ci
- Go to the ui directory:
- Build the project:
- Go to the ui directory:
cd <root>/ui
- Run
npm run build::CDN
- Go to the ui directory:
- CDN resources is everything inside
<root>/ui/dist
mvn clean install
cd deployment/web
mvn install -P docker -D dockerfile.repositoryUrl=my
It will create my/spline-web-ui
image and two tags: $version
and latest
See Building Spline docker images for details.
Config file should be placed in the directory:
- after build in the dist folder
/dist/assets/config.json
- or before build
/src/assets/config.json
(this option applies for development)
The example of the config can be found here: /src/assets/config.example.json
The list of all configuration properties along with their default values are stored in the config.default.json
.
Properties provided in the config.json
overwrite corresponding properties from the config.default.json
.
Run npm start
for a dev server. Navigate to http://localhost:4300/
. The app will automatically reload if you change any of the source files.
Run npm run build
to build the project. The build artifacts will be stored in the dist/
directory. When build completes
replace SPLINE_UI_DEPLOY_CONTEXT
in the dist/app/index.html
accordingly to your deployment schema, and verify/create dist/app/assets/config.json
as described above.
Spline UI version number mimics Semantic Versioning structure, although it doesn't strictly follow it. The reason is that it's difficult to define what is a Public API1 of the Spline UI in terms of Semantic Versioning.
But for the sake of consistency, Spline UI version uses a similar three-digit pattern with the pre-release and build labels, but slightly different meaning of the major and minor components.
-
The major version component indicates the Spline REST major version it supports with guarantee. The Spline server with the major version that is higher than the UI major version can also be supported, depending on the reason why that major version was incremented at the first place. (Spline server exposes multiple different APIs, and a given major version might expose exactly the same Consumer API that the previous one did).
-
The minor version component is incremented when new important features or significant internal changes are introduced.
-
The patch version component is incremented on bugfixes and small enhancements.
Copyright 2020 ABSA Group Limited
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Footnotes
-
Semantic Versioning specification relies on the definition of the Public API that the given application exposes and the changes to which is communicated by incrementing the version numbers. ↩