- Live updates & UI event handling
- Composable components
- Reactive state when needed
- Built with UX in mind
Back-end UI Framework
for feature-rich, secure, and fast web apps in Go
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
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.
TutorialLicense
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.
Use doors at no cost for development, testing, and evaluation.
Personal, education, research, and non-profit projects can run in production for free.
Commercial production use is covered by simple lifetime licenses — no subscriptions, no surprises.
Each version automatically converts to AGPL-3.0 after 4 years.