Typed by default
Request and response structs become the contract. Handler signatures stay explicit and compiler-friendly.
Open source · Go · Echo
EchoNext gives Echo a project layout, typed handlers, and generated OpenAPI—so every service starts clean and stays that way.
type CreateUser struct {
Name string `json:"name" validate:"required,min=2"`
Email string `json:"email" validate:"required,email"`
}
func createUser(c echo.Context, req CreateUser) (User, error) {
// req is already bound and validated
return users.Create(req)
}
app.POST("/users", createUser, echonext.Route{
Summary: "Create a user",
SuccessStatus: 201,
})Decided for you
Project layout, binding, validation, responses, and documentation all follow one set of conventions. You write the endpoints that are actually yours.
Request and response structs become the contract. Handler signatures stay explicit and compiler-friendly.
Generate an OpenAPI 3 specification from the same routes and Go types that serve production traffic.
Use familiar struct tags and receive consistent validation failures before business logic runs.
Scaffold a project, generate a domain, and run dev builds without inventing a layout first.
Build file uploads, WebSocket hubs, and gqlgen-backed GraphQL endpoints with Echo context access.
Opt into testing, database, config, metrics, request IDs, and OpenTelemetry contrib packages.
Keep Echo. Skip the plumbing.
Wrap the routes that benefit from a typed contract and keep using standard Echo middleware, groups, context methods, static assets, and error handling everywhere else.
A practical toolkit
Start with the core wrapper. Add only the integrations and contrib packages your service actually needs.
Build a validated Todo API and inspect its generated Swagger UI.
Read the guideExplore REST, GraphQL, uploads, WebSockets, observability, and production project patterns.
Browse examplesSee what is stable, what is being explored, and where community feedback can help.
View roadmapYour next service
Install the stable release, scaffold a project, and register your first typed route.