We’ve been working on Facet, which treats HTML as a presentation layer for data you already own.
The philosophy
Most web frameworks assume you start with the UI and add an API later. Facet inverts that.
If your data is already in MongoDB and your API already works, adding HTML output is a presentation concern, not a new application.
Facet treats it that way: a template is a view over data you already own, not a reason to restructure your backend.
How it works
You have MongoDB collections. RESTHeart exposes them as REST endpoints (simple config, zero backend code). Facet lets you decorate these with templates. Drop templates/products/index.html and GET /products serves HTML to browsers, JSON to API clients. Content negotiation handles the rest.
Technical details
-
Convention-based path mapping (template location = API path)
-
Templates use Pebble (Twig-like syntax, popular in PHP world)
-
Developed in Java 25
-
Direct access to JSON documents in templates
-
Hot-reload for templates (edit, refresh, done)
Use case
You have MongoDB collections powering an API. You need admin dashboards, internal tools, or data browsers. Instead of building a separate frontend or writing controllers, you add templates. Collections → API → HTML in one stack.
License: Apache 2.0
Home: getfacet.org
Repo: github.com/SoftInstigate/facet
Curious if anyone else finds this useful.