What is Nuxeo Platform
Nuxeo Platform is a set of server and client-side software artifacts and tools that allow you to build, operate and maintain advanced content management applications: core business applications with strong DAM or Case Management flavors, vertical document management systems, hyperscale archival repositories and more. Among all the reasons why you would like to use Nuxeo Platform for your project, the most obvious are:
- A proven track of reached performances goals
- A state of the art technical design and software engineering tooling
- Advanced content repository, workflow and content transformation features
- An open development model with great documentation and great visibility on product evolutions that enables you to quickly reach a high level of expertise
Main components of the Nuxeo Platform are:
The Nuxeo Server, that runs on top of the Java Virtual Machine, with different deployment options. The Nuxeo Server exposes a modular set of features via REST API. The Nuxeo Package system allows to easily define what bundles are deployed on the Nuxeo Server. Nuxeo Server is often called Nuxeo Platform as a shortcut, and because it is the most important asset of the Nuxeo Platform, embedding a fully-featured repository, a content transformation grid and a workflow engine. The Nuxeo Server is benchmarked continuously to guarantee performance expectations.
Nuxeo Web UI: a flexible and pluggable content browser that allows users to perform usual content management operations in a highly productive style: browse, search, upload, preview, download, resolve tasks etc... WEB UI's strength is its capability of being heavily customized for taking into account your application's data model and custom business process.
Nuxeo Addons: as we said above, you can install additional bundles on top of the bare Nuxeo server to enrich its features and capabilities set. Nuxeo Addons compatible with a given version of the Nuxeo Server are distributed through the Nuxeo Marketplace.
Client SDKs and Nuxeo Elements: Java, JavaScript, C#, Python, PHP, iOS, DART: several clients are available to quickly start integrating with Nuxeo Server without having to know the details of our REST API. We even provide a rich set of web components, the "Nuxeo Elements" that brings out-of-the-box features that you can include in your application just by using the good HTML tag.
Nuxeo Drive: a desktop application that maps a Nuxeo repository's content to a Desktop's file system, with synchronization logics and offline access and edit capabilities, in the spirit of Enterprise File Sharing Systems like Dropbox or Box.
Nuxeo Mobile: Native Android and iOS applications developed with React Native and available on respective stores.
Build, QA and Performance analysis tooling All the tooling we use for building, maintaining and testing our software artifacts is free and open source. It is available for your own project, as a great catalyzer of your engineering practices.
Nuxeo Studio and Nuxeo CLI: Nuxeo Studio is an online application with which you can easily implement project's customization requirements: content modeling, business logic and user interface design. Nuxeo Studio is much more than a rapid application development tool: it guarantees you that your customization will be maintained automatically throughout the future releases of Nuxeo Platform components. Nuxeo CLI is a command-line tool for helping developers bootstrap their custom modules.
Additional Client Integrations: Some additional client integrations are available: Adobe CC plugin, Salesforce application, AutoCad Plugin, Slack integration and more.
PaaS and Docker Deployment Tooling Nuxeo has strong expertise in deploying Nuxeo Platform instances on docker containers, PaaS style, which you typically want to do if you are building a vertical application on top of Nuxeo and have multi-tenancy considerations
Application Development Strategies
You may be interested in using Nuxeo Platform for your project for different use cases, with a specific architecture:
- If you need a headless scalable document repository, and use Nuxeo Platform as a backend application, then use the Nuxeo REST API or any other Nuxeo SDK Client.
- If you need to build a custom web application surfacing the Nuxeo repository, then you can benefit from our rich library of UI elements to accelerate the development of your project. You can alternatively build any other web application technology or framework (Angular, React etc.) with the Nuxeo REST API or any other Nuxeo SDK Client.
- If you need to customize the Nuxeo Web UI web application, then you have to use Nuxeo Studio Designer to create your custom document layouts, pages, menus etc.
Technical Overview
Languages and Configuration/Customization Principles
All server parts of Nuxeo, including plugins, are written in Java, with a mechanism of bundles and components for packaging developments. The Web UI (the customizable client web application) is written in JavaScript (using the Polymer framework). Default application can be configured using Nuxeo Studio, an online development environment. It is also possible to write Java plugins.
Deployment
Nuxeo Server comes bundled with a Tomcat server. It requires for production to set up several other components: a data storage (relational or NoSQL), a search engine (Elasticsearch), a message system (Kafka)... Deployment options support HA, failover and can be on-premise, or in the cloud, on bare machines, virtual machines or Docker containers. For more details about the Nuxeo deployment system, please refer to the Nuxeo Reference Architectures. Nuxeo bundles can even be started on a JVM directly (i.e without an application server). This is the deployment mode in all unit tests.
Integrating Nuxeo
Calling Nuxeo Services
Nuxeo resources (Documents, Users, Tasks ...) are exposed via a REST API. Nuxeo services are exposed via an HTTP API called Nuxeo Automation.
So, if your external application needs to call the Nuxeo Server you can use plain HTTP/JSON API to do the calls, or you can use one of the client libraries we provide.
Calling External Services from the Nuxeo Server
You can extend the Nuxeo Platform to deploy your own Java Services. A standard approach is to wrap your calls to external applications inside a Nuxeo Automation Operation (or, even better, inside a Nuxeo Service wrapped in an Automation operation). Once you have this operation, you can use it Nuxeo Studio for deep integration in your business processes:
- Use it inside a Workflow.
- Bind the call to the external service on new buttons in the UI.
- Associate your external service operation with events happening inside the repository.
Data Integration
In addition of the native HTTP API, the Nuxeo Platform also provides solutions to import data inside the Nuxeo Platform.
Customizing Web UI
The Nuxeo Web UI is written on top of the Web Components standard and the paradigms of the Polymer Framework.