Facet is the data-driven Web framework. Turn your API into HTML, no code required.
863
Facet transforms REST APIs into web interfaces using simple HTML templates. You already have the API—just add templates where you want HTML.
The core idea: Your API structure is your site structure.
Your API:
├── /shop/products → Returns JSON
└── /shop/products/123 → Returns JSON
Add templates:
└── templates/
└── shop/
└── products/
├── list.html → Renders /shop/products as HTML
└── view.html → Renders /shop/products/123 as HTML
Result:
├── /shop/products → HTML for browsers, JSON for APIs
└── /shop/products/123 → HTML for browsers, JSON for APIs
No routing files. No controllers. No duplicate logic. Just drop templates where your data lives.
Try it yourself (quickstart):
# Start the quickstart stack (MongoDB + Facet)
docker compose up
# If you want to build a local image instead:
# mvn -pl core -am -DskipTests package
# docker compose up --build
# Visit in browser (login required)
open http://localhost:8080/
Note: the root docker-compose.yml builds a local image by default. To use the published image, replace the build: section with image: softinstigate/facet:latest.
Login with admin / secret, then visit /mydb/products to see the seeded data rendered by the default template.
Add a product via curl and refresh the HTML list:
curl -X POST http://localhost:8080/mydb/products \
-u admin:secret \
-H "Content-Type: application/json" \
-d '{"name":"Desk Lamp","price":49,"category":"Home"}'
open http://localhost:8080/mydb/products
Visit the GitHub repo for more information.
Content type
Image
Digest
sha256:c97dae84f…
Size
151.2 MB
Last updated
about 1 month ago
docker pull softinstigate/facet