---
title: "ForgeUI"
tagline: "Server-rendered UI"
language: "Go"
license: "Apache-2.0"
since: "2025"
canonical: "https://xraph.com/work/forgeui"
---

# ForgeUI

Server-rendered UI for Go, built on templ with a templui component set and Tailwind. Alpine and HTMX helpers where you need interactivity, an esbuild and Tailwind asset pipeline with fingerprinting, a Go-to-JavaScript RPC bridge, and about 1,600 Lucide icons. Bastion’s dashboard is written in it.

## Install

```bash
go get github.com/xraph/forgeui
```

## What it is

An SSR-first UI framework for Go, built on templ with templui components, Tailwind and shadcn-inspired design. You write the whole frontend in Go with compile-time type safety.

## What it includes

- 35-plus production components, server-rendered with no required client-side dependency.
- Alpine.js integration covering directives, stores, magic helpers and plugins, plus HTMX attribute helpers and server-side utilities.
- Client-side routing through Pinecone Router for SPA-style navigation.
- About 1,600 Lucide icons with customisation.
- A Go-to-JavaScript RPC bridge for calling Go functions from the client.
- An asset pipeline with esbuild, Tailwind processing and file fingerprinting.
- A hot-reload dev server, a scaffolding CLI, a theme system over CSS variables, and a plugin architecture with dependency management.

## Where it earns its place

Bastion's admin dashboard is written in ForgeUI. That is the case it is for: an internal or operational interface attached to a Go service, where standing up a separate frontend build, a separate deploy and a separate set of API contracts costs more than the interface is worth.

---

*Unpublished draft. Not peer reviewed and not submitted to a venue.*


## Anatomy

- **Components**: Server-rendered building blocks with no client framework.
- **Templating**: Typed views compiled with the binary.
- **Assets**: Bundling and fingerprinting handled by the extension.

## Constraints and trade-offs

- (decision) Server-rendered by default. A dashboard is not a reason to adopt a front-end build chain.
