{"id":38385698,"url":"https://github.com/gominima/minima","last_synced_at":"2026-01-17T03:42:53.662Z","repository":{"id":42006298,"uuid":"422630500","full_name":"gominima/minima","owner":"gominima","description":" A simple and minimal backend framework for go made to scale ","archived":false,"fork":false,"pushed_at":"2024-06-21T07:02:24.000Z","size":558,"stargazers_count":150,"open_issues_count":0,"forks_count":15,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-01-15T00:58:42.348Z","etag":null,"topics":["go","golang","hacktoberfest","hacktoberfest-accepted","handler","http","http-server","middleware","minima","minimal","reliable","router","routing","serverless-framework","web-framework","webframework"],"latest_commit_sha":null,"homepage":"https://gominima.netlify.app","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/gominima.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/funding.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["apoorvcodes"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2021-10-29T15:44:31.000Z","updated_at":"2025-11-03T07:28:43.000Z","dependencies_parsed_at":"2024-06-22T00:03:52.776Z","dependency_job_id":"1da231c6-85c8-4bed-9277-9e9688ffc408","html_url":"https://github.com/gominima/minima","commit_stats":{"total_commits":192,"total_committers":11,"mean_commits":"17.454545454545453","dds":"0.41145833333333337","last_synced_commit":"07d00507a8bb625501154eb5ed365fc2edb0eb01"},"previous_names":["gofiable/fiable"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/gominima/minima","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gominima%2Fminima","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gominima%2Fminima/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gominima%2Fminima/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gominima%2Fminima/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gominima","download_url":"https://codeload.github.com/gominima/minima/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gominima%2Fminima/sbom","scorecard":{"id":435051,"data":{"date":"2025-08-11","repo":{"name":"github.com/gominima/minima","commit":"a63f958877079f03a960349cd482881cf78cbc7e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.4,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":1,"reason":"Found 4/27 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:29","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:28","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/docs.yml:1","Warn: no topLevel permission defined: .github/workflows/go.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/gominima/minima/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/gominima/minima/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/gominima/minima/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/gominima/minima/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docs.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/gominima/minima/docs.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docs.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/gominima/minima/docs.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docs.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/gominima/minima/docs.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/gominima/minima/go.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/gominima/minima/go.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/gominima/minima/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/gominima/minima/test.yml/main?enable=pin","Warn: goCommand not pinned by hash: .github/workflows/docs.yml:29","Info:   0 out of  11 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 11 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T04:24:49.295Z","repository_id":42006298,"created_at":"2025-08-19T04:24:49.295Z","updated_at":"2025-08-19T04:24:49.295Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28493580,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T02:39:23.645Z","status":"ssl_error","status_checked_at":"2026-01-17T02:34:19.649Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["go","golang","hacktoberfest","hacktoberfest-accepted","handler","http","http-server","middleware","minima","minimal","reliable","router","routing","serverless-framework","web-framework","webframework"],"created_at":"2026-01-17T03:42:53.021Z","updated_at":"2026-01-17T03:42:53.655Z","avatar_url":"https://github.com/gominima.png","language":"Go","funding_links":["https://github.com/sponsors/apoorvcodes"],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable no-hard-tabs no-inline-html --\u003e\n\n# Minima\n\n\u003c!-- Inline HTML inside center aligned paragraphs aren't subjected to markdown refactoring --\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://gominima.studio\"\u003e\n  \u003cimg alt=\"Minima\" src=\"https://raw.githubusercontent.com/gominima/minima/main/assets/logo.png\" /\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\" style=\"font-weight: 500\"\u003e\nMinima 🦄 is a reliable and lightweight framework for \u003ca href=\"https://www.golang.org\" target=\"_blank\"\u003eGo\u003c/a\u003e to carve the web 💻. Developed with core \u003ca href=\"https://pkg.go.dev/net/http\" target=\"_blank\"\u003enet/http\u003c/a\u003e🔌and other native packages, and with 0 dependencies.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://goreportcard.com/badge/github.com/gominima/minima\"\u003e \u003cimg src=\"https://goreportcard.com/badge/github.com/gominima/minima\" /\u003e \u003c/a\u003e\n\u003ca href=\"https://img.shields.io/github/go-mod/go-version/gominima/minima\"\u003e \u003cimg src=\"https://img.shields.io/github/go-mod/go-version/gominima/minima\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat\"\u003e \u003cimg src=\"https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://discord.gg/gRyCr5APmg\"\u003e \u003cimg src=\"https://img.shields.io/discord/916969864512548904\" /\u003e\u003c/a\u003e\n\u003cimg src=\"https://img.shields.io/tokei/lines/github/gominima/minima\" /\u003e\n\u003cimg src=\"https://img.shields.io/github/languages/code-size/gominima/minima\" /\u003e\n\u003ca href=\"https://gominima.studio\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Minima-Docs-blue\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://gominima.studio\"\u003e\u003cimg src=\"https://api.netlify.com/api/v1/badges/34ade51b-20a8-4fad-8cfd-0d574c9c40ed/deploy-status\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## ⚙️ Setup\n\nPlease make sure you have [Go](https://go.dev) version 1.15 or higher\n\n```go\nmkdir \u003cproject-name\u003e \u0026\u0026 cd  \u003cproject-name\u003e\n\ngo mod init github.com/\u003cuser-name\u003e/\u003crepo-name\u003e\n\ngo get github.com/gominima/minima\n\ngo run main.go\n```\n\n## 🦄 Quickstart\n\n```go\npackage main\n\nimport \"github.com/gominima/minima\"\n\nfunc main() {\n\tapp := minima.Engine()\n\n\tapp.Get(\"/\", func(res *minima.Response, req *minima.Request) {\n\t\tres.OK().Send(\"Hello World\")\n\t})\n\n\tapp.Listen(\":3000\")\n}\n\n```\n\n## 🔖 Guide\n\nOfficial guide: https://guide.gominima.studio\nOfficial docs: https://gominima.studio\n\n## 🔮 Features\n\n- **Reliable** - great modular API for building great server side applications\u003c/li\u003e\n- **Compatible with net/http** - use your plain old middlewares written in plain old `net/http`\u003c/li\u003e\n- **Lightweight** - clocked in ~1000 loc\u003c/li\u003e\n- **No Dependency** - just your plain old go standard libraries\u003c/li\u003e\n- **Great Documentation** - best in class precise [documentation](https://gominima.studio/)\n- **Auto Docs** - docgen for generating all of your routing docs from jsdoc like comments to json or markdown files\n\n## ❓ Why Minima\n\nMinima's name is inspired by the word minimal and is the motivation for building this framework. As a Golang developer, I was struggling to learn it in my early days due to the steeper learning curve while using `net/http`.\n\nAlso while checking out some other alternate frameworks, I found out that something like [fiber](https://github.com/gofiber/fiber) wasn't compatible with `net/http` modules like `gqlgen` and other middlewares.\n\nMinima solves this problem as it has a very narrow learning curve as well as a robust structure that supports all `net/http` modules and other middlewares without compromising performance.\n\n## 🍵 Examples\n\nHere are some basic examples related to routing and params:\n\n### 📑 Routing \u0026 Router\n\n```go\nfunc UserGetRouter() *minima.Router {\n\t// router instance which would be used by the main router\n\trouter := minima.NewRouter()\n\n\treturn router.Get(\"/user/:id\", func(res *minima.Response, req *minima.Request) {\n\t\t// getting the id parameter from route\n\t\tid := req.Param(\"id\")\n\n\t\t// instead of adding a param in route, you just need to fetch it\n\n\t\tusername := req.Query(\"name\")\n\n\t\t// get user from database\n\t\tuserdata, err := db.FindUser(id, username)\n\n\t\tif err != nil {\n\t\t\t// check for errors\n\t\t\tres.NotFound().Send(\"No user found with particular id\")\n\t\t}\n\t\t// send user data\n\t\tres.OK().Json(userdata)\n\t})\n}\n\nfunc main() {\n\t// main minima instance\n\tapp := minima.New()\n\t// UseRouter method takes minima.router as a param\n\t// it appends all the routes used in that specific router to the main instance\n\tapp.UseRouter(UserGetRouter())\n\n\t// running the app at port 3000\n\tapp.Listen(\":3000\")\n}\n```\n\n### 📑 Params\n\n```go\nfunc main() {\n\tapp := minima.New()\n\n\tapp.Get(\"/getuser/:id\", func(res *minima.Response, req *minima.Request) {\n\t\tuserid := req.Param(\"id\")\n\t\t// check if user id is available\n\t\tif userid == \"\" {\n\t\t\tres.Error(404, \"No user found\")\n\t\t\tpanic(\"No user id found in request\")\n\t\t}\n\t\tfmt.Print(userid)\n\t\t//Will print 20048 from router /getuser/200048\n\t})\n}\n```\n\n### 📑 Query Params\n\n```go\nfunc main() {\n\tapp := minima.New()\n\n\tapp.Get(\"/getuser\", func(response *minima.Response, request *minima.Request) {\n\t\t// query params work a bit differently\n\t\t// instead of adding a param in route, you just need to fetch it\n\n\t\tuserid := req.Query(\"id\")\n\n\t\tif userid == \"\" {\n\t\t\tres.Error(404, \"No user found\")\n\t\t\tpanic(\"No user id found in request\")\n\t\t}\n\t\tfmt.Print(userid)\n\t\t// the above will print 20048 from router /getuser?id=20048\n\t})\n}\n```\n\n## 📒 Minima Interface\n\nMinima is based on a custom implementation of radix tree which makes it extremely performant. The router itself is fully compatible with [`net/http`](https://pkg.go.dev/net/http)\n\n### 🔖 Minima's Interface\n\n```go\ntype Minima interface {\n\t// Minima interface is built over net/http so every middleware is compatible with it\n\n\t// initializes net/http server with address\n\tListen(address string) error\n    \n\n\t//static file serve methods\n\tFile(pth string, dir string) //serves a single static file to route\n\tStatic(pth string, dir string) //serves whole directory with specified pth ex /static/main.html\n\t// main handler interface\n\tServeHTTP(w http.ResponseWriter, q *http.Request)\n\n\t// main router methods\n\tGet(path string, handler ...Handler) *minima\n\tPatch(path string, handler ...Handler) *minima\n\tPost(path string, handler ...Handler) *minima\n\tPut(path string, handler ...Handler) *minima\n\tOptions(path string, handler ...Handler) *minima\n\tHead(path string, handler ...Handler) *minima\n\tDelete(path string, handler ...Handler) *minima\n\n\t// takes middlewares as a param and adds them to routes\n\t// middlewares initializes before route handler is mounted\n\tUse(handler Handler) *minima\n\n       //Takes http.Handler and appends it to middleware chain\n\tUseRaw(handler func(http.Handler) http.Handler) *minima\n\n        // an custom handler when route is not matched\n\tNotFound(handler Handler)*minima\n\n\t// mounts routes to specific base path\n\tMount(basePath string, router *Router) *minima\n\n\t// takes minima.Router as param and adds the routes from router to main instance\n\tUseRouter(router *Router) *minima\n\n\t// works as a config for minima, you can add multiple middlewares and routers at once\n\tUseConfig(config *Config) *minima\n\n\t// shutdowns the net/http server\n\tShutdown(ctx context.Context) error\n\n\t// prop methods\n\tSetProp(key string, value interface{}) *minima\n\tGetProp(key string) interface{}\n}\n```\n\n### 🔖 Response and Request Interfaces\n\nBoth response and request interfaces of minima are written in `net/http` so you can use any of your old route middlewares in minima out of the box without any hassle.\n\n```go\n\ntype Res interface {\n\t// response interface is built over http.ResponseWriter for easy and better utility\n\n\t// Header methods\n\tGetHeader(key string) string // gets a header from response body\n        \n\tSetHeader(key string, value string)  *Response // sets a new header to response body\n\n\tDelHeader(key string)  *Response // Deletes a header from response body\n        \n\tCloneHeaders() http.Header // clones all headers of the response body\n\n\tSetlenght(len string) *Response // sets content length of the response body\n\n\tSetBaseHeaders() *Response // sets a good stack of base headers for response body\n\n\tFlushHeaders() // flushes headers\n\n\t// utility functions for easier usage\n\tSend(content string) *Response      //send content\n\tWriteBytes(bytes []byte) error      //writes bytes to the page\n\tJSON(content interface{}) *Response //sends data in json format\n\tXML(content interface{}, indent string) //sends data in xml format\n\tStream(contentType string read io.Reader) // streams content to the route\n\tNoContent(code int)\n\tError(status int, str string) *Response\n\n\t// this functions returns http.ResponseWriter instance which means you could use any of your alrady written middlewares in minima!\n\tRaw() http.ResponseWriter\n\n\t// renders an html file with data to the page\n\tRender(path string, data interface{}) *Response\n        \n\t// custom method when there's an error\n\tError(content interface{}) *Response\n        \n\t// closes io.Writer connection from the route\n\tCloseConn() *Response\n\n\t// redirects to given url\n\tRedirect(url string) *Response\n\n\t// sets header status\n\tStatus(code int) *Response\n\n\t//cookie methods\n\tSetCookie(cookie *http.Cookie) *Response // sets a new cookie to the response\n\n\t\n\tSetCookie(cookie *http.Cookie) *Response // clears a cookie to the response\n\n}\n\ntype Req interface {\n\t// minima request interface is built on http.Request\n\n\t// returns param from route \n\tParam(name string) string\n        \n\t// sets a new param to the request instance\n\tSetParam(key string, value) string\n\t\n\t//returns query param from route url\n\tQuery(key string) string\n        \n\t//returns query params to a string\n\tQueryString() string\n        \n\t//returns raw url.Values\n\tQueryParams() url.Values\n        \n\t//returns the ip of the request origin\n\tIP() string\n\n\t//returns whether the request is tls or not\n\tIsTLS() bool\n\n\t//returns whether the request is a socket or not\n\tIsSocket() bool\n\n\t//returns scheme type of request body\n\tSchemeType() string\n\n\t//Gets form value from request body \n\tFormValue(key string) string\n\n\t//Gets all the form param values\n\tFormParams() (url.Values, error)\n\n\t//Gets file from request \n\tFormFile(key string) (*multipart.FileHeader, error)\n\n\t//Gets request Multipart form\n\tMultipartForm() (*multipart.Form, error)\n\t// returns path url from the route\n\tPath() string\n\n\t// returns raw request body\n\tBody() map[string][]string\n\n\t// finds given key value from body and returns it\n\tBodyValue(key string) []string\n\n\t// returns instance of minima.IncomingHeader for incoming header requests\n\tHeader() *IncomingHeader\n\n\t// returns route method ex.get,post\n\tMethod() string\n\n\t// Header methods\n\tSetHeader(key string, value string) *Response //sets a new header to request body\n        \n\t//Get a header from request body\n\tGetHeader(key string) string\n\n\t//Cookie methods\n        Cookies() []*http.Cookie // gets all cookies from request body\n\n\tGetCookie(key string) *http.Cookie // gets a specific cookie from request body\n\n}\n```\n\n## 🔌 Middlewares\n\nMinima's middlewares are written in its own custom `res` and `req` interfaces in accordance with the standard libraries maintained by Go. You can use `res.Raw()` to get the `http.ResponseWriter` instance and `req.Raw()` to getthe `http.Request` instance, meaning all community written middlewares are compatible with Minima.\n\nMinima also takes `http.Handler` while using `.UseRaw` function and runs it in a chain.\n\nHere is an example of standard `net/http` middleware being used with minima:\n\n```go\nfunc MyMiddleWare(res *minima.Response, req *minima.Request) {\n\tw := res.Raw() // raw http.ResponseWriter instance\n\tr := req.Raw() // raw http.Request instance\n\n\t// your normal net/http middleware\n\tw.Write([]byte(r.URL.Path))\n}\napp.UseRaw(HttpHandler())\n```\n\n## 💫 Contributing\n\n**If you wanna help grow this project or say a thank you!**\n\n1. Give minima a [GitHub star](https://github.com/gominima/minima/stargazers)\n2. Fork Minima and Contribute\n3. Write a review or blog on Minima\n4. Join our [Discord](https://discord.gg/gRyCr5APmg) community\n\n### Contributors\n\n#### Lead Maintainers\n\n- [@apoorvcodes](https://github.com/apoorvcodes)\n- [@megatank58](https://github.com/megatank58)\n\n#### Core Team\n\n- [@apoorvcodes](https://github.com/apoorvcodes)\n- [@megatank58](https://github.com/megatank58)\n- [@Shubhaankar-Sharma](https://github.com/Shubhaankar-Sharma)\n- [@savioxavier](https://github.com/savioxavier)\n\n#### Community Contributors\n\nThanks to all the contributors, without whom this project would not have been possible:\n\n\u003ca href=\"https://github.com/gominima/minima/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=gominima/minima\" /\u003e\n\u003c/a\u003e\n\u003cbr\u003e\n\nBe a part of this contribution list by contributing today!\n\nPlease note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.\n\n## 🧾 License\n\n**Copyright (c) 2021-present [Apoorv](https://github.com/apoorvcodes) and [Contributors](https://github.com/gominima/minima/graphs/contributors). Minima is a Free and Open Source Software licensed under [MIT License](https://github.com/gominima/minima/blob/main/LICENSE)**\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgominima%2Fminima","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgominima%2Fminima","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgominima%2Fminima/lists"}