At the heart of Surf is a site assembly framework that bundles a full site construction object model and toolkit for building websites and applications.
- A Site Dispatcher to create pages easily, link them to the overall navigation of a website, and build pages in a way that promotes reusability.
- Templates for defining a page layout once and then reusing it across a large set of pages. You can develop pages using FreeMarker, JSP, HTML, or Java.
- A UI Library containing reusable UI components comprising back-end application logic and front-end presentation code that can be bound into regions (or slots) within a page or template.
- Pages that you can render in multiple formats, such as print, PDF, or mobile device.
- AJAX support for integration with the Yahoo! User Interface (YUI) library.
- Forms in a rich forms engine for rendering and collecting data.
- Remote: encapsulates any number of data sources with out-of-the-box support for the content application server
- Credentials: manages user authentication with out-of-the-box support for the content application server
With the CMIS client API, Surf provides an open stack for implementing web-based, content-enabled applications.