{"id":19169061,"url":"https://github.com/dreamph/cenery","last_synced_at":"2026-06-19T04:30:22.723Z","repository":{"id":227034270,"uuid":"770248581","full_name":"dreamph/cenery","owner":"dreamph","description":"Dynamic Golang Web Framework","archived":false,"fork":false,"pushed_at":"2025-01-24T11:13:15.000Z","size":32,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-24T12:20:52.840Z","etag":null,"topics":["clean-architecture","echo","fiber","golang","rest-api","web-framework"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dreamph.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-11T08:09:44.000Z","updated_at":"2025-01-24T11:12:15.000Z","dependencies_parsed_at":"2025-01-24T12:31:33.896Z","dependency_job_id":null,"html_url":"https://github.com/dreamph/cenery","commit_stats":null,"previous_names":["dreamph/cenery"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamph%2Fcenery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamph%2Fcenery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamph%2Fcenery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamph%2Fcenery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dreamph","download_url":"https://codeload.github.com/dreamph/cenery/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240250354,"owners_count":19771778,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clean-architecture","echo","fiber","golang","rest-api","web-framework"],"created_at":"2024-11-09T09:44:51.849Z","updated_at":"2026-06-19T04:30:22.693Z","avatar_url":"https://github.com/dreamph.png","language":"Go","funding_links":["https://www.buymeacoffee.com/dreamph"],"categories":[],"sub_categories":[],"readme":"# cenery\n\nGolang Web Framework\n- Dynamic change engine between Fiber and Echo\n- Simple \u0026 Easy\n\n\nInstall\n=======\n``` sh\ngo get github.com/dreamph/cenery\n```\n\nExample\n=======\n``` go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\n\t\"github.com/dreamph/cenery\"\n\techoengine \"github.com/dreamph/cenery/engine/echo\"\n\tfiberengine \"github.com/dreamph/cenery/engine/fiber\"\n\tgojson \"github.com/goccy/go-json\"\n\t\"github.com/gofiber/fiber/v2\"\n\tfiberrecover \"github.com/gofiber/fiber/v2/middleware/recover\"\n\t\"github.com/labstack/echo/v4\"\n\techomiddleware \"github.com/labstack/echo/v4/middleware\"\n)\n\ntype ErrorResponse struct {\n\tMessage string `json:\"message\"`\n}\n\ntype CreateRequest struct {\n\tName string `json:\"name\"`\n}\n\ntype CreateResponse struct {\n\tData string `json:\"data\"`\n}\n\ntype UploadRequest struct {\n\tName string           `json:\"name\"`\n\tFile *cenery.FileData `json:\"-\"`\n}\n\ntype UploadResponse struct {\n\tName     string `json:\"name\"`\n\tFileName string `json:\"fileName\"`\n}\n\nfunc NewEchoWithCustomize() cenery.App {\n\techoApp := echo.New()\n\techoApp.Use(echomiddleware.Recover())\n\treturn echoengine.New(echoApp)\n}\n\nfunc NewEchoApp() cenery.App {\n\treturn echoengine.NewApp()\n}\n\nfunc NewFiberAppWithCustomize() cenery.App {\n\tfiberApp := fiber.New(fiber.Config{\n\t\tJSONDecoder: gojson.Unmarshal,\n\t\tJSONEncoder: gojson.Marshal,\n\t})\n\tfiberApp.Use(fiberrecover.New())\n\treturn fiberengine.New(fiberApp)\n}\n\nfunc NewFiberApp() cenery.App {\n\treturn fiberengine.NewApp()\n}\n\nfunc main() {\n\tapp := NewFiberApp()\n\t// or\n\t// app := NewEchoApp()\n\n\tapp.Use(func(c cenery.Ctx) error {\n\t\tfmt.Println(\"global middleware\")\n\t\treturn c.Next()\n\t})\n\n\tapp.Get(\"/\", func(c cenery.Ctx) error {\n\t\treturn c.SendString(200, \"hello\")\n\t})\n\n\tapp.Post(\"/create\", func(c cenery.Ctx) error {\n\t\trequest := \u0026CreateRequest{}\n\t\terr := c.BodyParser(request)\n\t\tif err != nil {\n\t\t\treturn c.SendJSON(400, \u0026ErrorResponse{Message: err.Error()})\n\t\t}\n\t\treturn c.SendJSON(200, \u0026CreateResponse{Data: \"welcome : \" + request.Name})\n\t})\n\n\tapp.Post(\"/upload\", func(c cenery.Ctx) error {\n\t\tfmt.Println(\"handler uploading..\")\n\t\trequest := \u0026UploadRequest{}\n\t\terr := c.BodyParser(request)\n\t\tif err != nil {\n\t\t\treturn c.SendJSON(400, \u0026ErrorResponse{Message: err.Error()})\n\t\t}\n\n\t\trequest.File = c.FormFile(\"file\")\n\n\t\tfmt.Println(\"handler upload success\")\n\n\t\tc.Response().SetHeader(\"TEST\", \"1\")\n\n\t\treturn c.SendJSON(200, \u0026UploadResponse{Name: request.Name, FileName: request.File.FileName})\n\t})\n\n\terr := app.Listen(\":2000\")\n\tif err != nil {\n\t\tlog.Fatal(err.Error())\n\t}\n}\n\n//curl -X POST http://localhost:2000/create -d '{\"name\":\"cenery\"}'\n//curl -v -F name=cenery -F file=@test.txt http://localhost:2000/upload\n\n\n```\n\n\nBuy Me a Coffee\n=======\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/dreamph)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreamph%2Fcenery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdreamph%2Fcenery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreamph%2Fcenery/lists"}