Frontend-grade interactivity on a full-stack scale without npm. Entirely in Go.
Automated, private ephemeral endpoinds under the hood. No API needed.
Single control flow in Go with automatic real-time client sync. Just works.
Bundle scripts, host assets, serve private files, automate CSP. One binary.
type Search struct { input doors.Source[string] // reactive state } elem (s Search) Main() { <input (doors.AInput{ On: func(ctx context.Context, r doors.RequestInput) bool { s.input.Update(ctx, r.Event().Value) // mutate state return false }, }) type="text" placeholder="search"> ~// subscribe results to state changes ~(doors.Sub(s.input, s.results)) } elem (s Search) results(input string) { ~(for _, user := range Users.Search(input) { <card> ~(user.Name) </card> }) }
“It feels like programming again”— 10+ years in web dev
HTMX coordinates behavior through HTML attributes and endpoints. Doors lets you write interactive flow directly in Go. HTMX is HTML enhancement; Doors is a UI runtime.
With JS stacks, user flow and much of the business logic live in the browser, while the server is mostly a read/write backend. Doors runs that flow on the server in Go, with the browser as a display and input layer.
SaaS, business systems, customer portals, admin panels, internal tools, and realtime apps — especially those with heavy user flows and complex business logic.
Static non-iteractive pages, client-first apps with simple routing, and offline PWAs.
Yes. Doors keeps JavaScript optional, but gives you the tools to integrate it cleanly for small UI enhancements or embedded micro-apps.
Yes. Doors is stateful, so scaling and rollouts require different strategies than stateless apps. The server includes mechanics that make load balancing and interruption-free updates much simpler.
Typically not. Doors is designed to run efficiently. Actual usage depends on app complexity and state design, but active-page overhead is often under 50 KB.
Doors is in beta. It is ready for development and can be used in production with caution, but you should expect fixes and updates as the ecosystem matures.