Guides and Tutorials

Choosing How to Customize the UI

Updated: July 17, 2023

The Nuxeo Platform proposes different technologies for the client side of the application. The choice of one technology vs. another depends on both the project's stakes and its context.

You mainly have two strategies for the UI you will propose to your users:

  • Either customize the existing web application, which is JSF/SEAM based. You'll be able to reach a great customization point by just using Studio, and you will also be able to extend it writing your own facelets (XHTML) templates and Seam components. In this approach, you can keep the standard layout and just add your "business" flavor from Studio, but you can also completely redesign the layout, as some of the Nuxeo Platform users did.
  • Or write your own application UI with the technology of your choice, using our APIs and client SDKs.

Customizing the Back Office

The Nuxeo Platform's default web UI is based on JSF (a Java EE standard) for the UI component model, and Seam for the navigation and context management. This application is designed to be extended, at every corner: theme, layout, forms, tabs, URLs using our extension point system, and extended using the web app core technologies.

Key points: The Nuxeo Platform's JSF interface is fully modular and very easy to customize:

  • Highly configurable via Nuxeo Studio,
  • Resilient: this application is the result of 7 years of continuous development and improvements. It has been tested on thousands of projects, each one bringing its own constraints.
  • Great forms framework, configurable document listings, etc.

Typical use case:

  • Business application,
  • Document management back office.

More information on the Studio space and on the "JSF UI Framework" section.

Front Apps

The Nuxeo Platform can be seen as a complete remote repository exposing all its features via APIs. In that case, you are the one who chooses your UI framework. Indeed, you can wrap the repository behind:

  • An HTML5/JavaScript based application using for instance AngularJS , or any other JavaScript framework (AmberJS, node.js, ...), using our JavaScript client;
  • A Java portal, such as Liferay, JBoss Portal, Jahia, uPortal, ... You can use Nuxeo Java client for implementing portlets that will have interactions with the repository;
  • Any other technology, such as PHP, Ruby on Rails, ... using our REST API directly.

With this approach you will of course have more developments to do on the UI, but you will be free to use the technology of your choice, and to be as crazy as you want in terms of UI layout.

Nuxeo WebEngine

Nuxeo WebEngine is a light web framework provided by the Nuxeo Platform. You can use it for implementing new UIs. For that reasons, we could have put it in the "Write your own application" category, but since the framework is edited by Nuxeo, let's have a dedicated section :smile:

Technologies:

  • JAX-RS style
  • FreeMarker,
  • Java scripting (Groovy or other).

Key points: Nuxeo WebEngine enables web developers to easily create a customized web interface on top of the Nuxeo Platform. Nuxeo WebEngine consumes URLs and for each segment of the URL instantiates a Java object that is in charge of consuming the remaining part of the URL and also return the web page at some point.

  • Simple template engine based on FreeMarker
  • Direct and easy access to HTML,
  • Java scripting support

Typical use case: Nuxeo WebEngine is designed to expose the Nuxeo Platform's managed content in a web experience. In many cases, the JSF interface is used for the back office management while Nuxeo WebEngine provides the front office interface. Furthermore, with the JAX-RS support, Nuxeo WebEngine allows rapid creation of REST applications on top of the Nuxeo Platform.

WebEngine is a light framework
Nuxeo WebEngine is a web-framework because it provides you with a way to structure how you implement the standard "MVC" pattern. But it is light because it doesn't provide any widgets library, any collection of ready to use templates, etc. Nuxeo aims at letting this framework as light as it is now and encourage users to leverage popular web framework when requiring many UI components. Actually, Nuxeo WebEngine is light enough to be easily used in parallel of those JavaScript framework.