Typed by default
Request and response structs become the contract. Handler signatures stay explicit and compiler-friendly.
Open source · Go · Echo
EchoNext adds typed handlers, request validation, and automatic OpenAPI documentation to Echo—without taking away the framework you already know.
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,
})One source of truth
Your Go types drive binding, validation, responses, and API documentation. Fewer parallel definitions means fewer opportunities for drift.
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 projects, generate domains, run development builds, and manage common project tasks.
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. Add confidence.
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 endpoint
Install the stable release, register your first typed route, and let EchoNext carry the repetitive parts.