v0.5.7 beta
Back-end UI Framework

for feature-rich, secure, and fast web apps in Go

← Click

type Counter struct {
	// dynamic component
	door doors.Door
	// local state
	count int
}

// fragment render function
templ (c *Counter) Render() {
	// attach click handler to the next element
	@doors.AClick{
		On: func(ctx context.Context, _ doors.REvent[doors.PointerEvent]) bool {
			c.increment(ctx)
			// not done, keep hook active
			return false
		},
	}
	<button class="contrast">Click Me</button>
	// render dynamic component 
	@c.door {
		// initial content
		← Click
	}
}

func (c *Counter) increment(ctx context.Context) {
	c.count += 1
	// update dynamic component with the new content
	c.door.Update(ctx, doors.Text(c.count))
}

Features

Modern like SPA
  • Live updates & UI event handling
  • Composable components
  • Reactive state when needed
  • Built with UX in mind
API-Free Architecture
  • What’s visible is all that’s accessible
  • No REST/GraphQL APIs required
  • Browser acts as human I/O
Explicit & Type-Safe
  • Direct connection from event to DOM update
  • State as dependency
  • Route as data
Straight like MPA
  • Server owns the control flow
  • Natural server-side rendering
  • Fast loads and functional href links
  • Form handling via FormData requests
NPM-Free Development
  • No Node.js required to build or run
  • Front-end JS/TS integration when needed
  • JS/TS builder and bundler included
Performant & Lightweight
  • Non-blocking event handling & parallel rendering
  • Extra-thin client side (<10KB gzipped)
  • Minimal server RAM footprint (~40KB average page)

Perfect For

SaaS Products

Iterate fast with only server-side code; integrate external systems directly within the server environment.

Business Process Automation (ERP, CRM, etc.)

Control UI flow from the server; forget the pain of API permissions.

Customer Portals

Keep sophisticated business logic and sensitive operations in a secure, type-safe environment.

Administrative and Internal Tools

Get the job done with zero JavaScript.

Tutorial

License

doors is source-available under the BUSL-1.1 from doors dev LLC. It’s designed to be generous for builders and clear for businesses. This is a quick overview — see license for the binding terms.
Free while you build

Use doors at no cost for development, testing, and evaluation.

Free for non-commercial production

Personal, education, research, and non-profit projects can run in production for free.

Clear commercial path

Commercial production use is covered by simple lifetime licenses — no subscriptions, no surprises.

Future open source

Each version automatically converts to AGPL-3.0 after 4 years.

See pricing & plans