{"id":15203021,"url":"https://github.com/badgerati/pode","last_synced_at":"2025-10-08T07:35:33.533Z","repository":{"id":37587510,"uuid":"112536545","full_name":"Badgerati/Pode","owner":"Badgerati","description":"Pode is a Cross-Platform PowerShell web framework for creating REST APIs, Web Sites, and TCP/SMTP servers","archived":false,"fork":false,"pushed_at":"2025-05-21T22:36:04.000Z","size":33337,"stargazers_count":946,"open_issues_count":94,"forks_count":96,"subscribers_count":49,"default_branch":"develop","last_synced_at":"2025-05-21T23:05:47.738Z","etag":null,"topics":["active-directory","authentication","cross-platform","docker","framework","hacktoberfest","https","openapi","powershell","powershell-core","raspberry-pi","rest","server","serverless","session","swagger","unix","web","webserver","windows"],"latest_commit_sha":null,"homepage":"https://badgerati.github.io/Pode","language":"PowerShell","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/Badgerati.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["Badgerati"],"ko_fi":"badgerati","custom":["https://www.paypal.me/badgerati"]}},"created_at":"2017-11-29T22:46:48.000Z","updated_at":"2025-05-18T14:57:45.000Z","dependencies_parsed_at":"2024-01-07T12:51:51.296Z","dependency_job_id":"4fe74cb6-fba1-4959-9ad1-2ee2383d7018","html_url":"https://github.com/Badgerati/Pode","commit_stats":{"total_commits":1701,"total_committers":29,"mean_commits":58.6551724137931,"dds":"0.16754850088183426","last_synced_commit":"9a99c9620063edb4989563d741d611b96d02c97f"},"previous_names":[],"tags_count":84,"template":false,"template_full_name":null,"purl":"pkg:github/Badgerati/Pode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badgerati%2FPode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badgerati%2FPode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badgerati%2FPode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badgerati%2FPode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Badgerati","download_url":"https://codeload.github.com/Badgerati/Pode/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badgerati%2FPode/sbom","scorecard":{"id":19844,"data":{"date":"2025-08-11","repo":{"name":"github.com/Badgerati/Pode","commit":"f940490890fc5a8d0652e245504d0b3a6f8451ee"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.3,"checks":[{"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":2,"reason":"Found 2/7 approved changesets -- score normalized to 2","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":"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":"Maintained","score":4,"reason":"0 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/PSScriptAnalyzer.yml:40","Info: jobLevel 'actions' permission set to 'read': .github/workflows/PSScriptAnalyzer.yml:42","Info: topLevel 'contents' permission set to 'read': .github/workflows/PSScriptAnalyzer.yml:35","Warn: no topLevel permission defined: .github/workflows/VirusTotal-Releases.yml:1","Warn: no topLevel permission defined: .github/workflows/VirusTotal.yml:1","Warn: no topLevel permission defined: .github/workflows/ci-coverage.yml:1","Warn: no topLevel permission defined: .github/workflows/ci-docs.yml:1","Warn: no topLevel permission defined: .github/workflows/ci-no-build-needed.yml:1","Warn: no topLevel permission defined: .github/workflows/ci-powershell.yml:1","Warn: no topLevel permission defined: .github/workflows/ci-pwsh7_5.yml:1","Warn: no topLevel permission defined: .github/workflows/ci-pwsh_lts.yml:1","Warn: no topLevel permission defined: .github/workflows/ci-pwsh_preview.yml:1","Warn: no topLevel permission defined: .github/workflows/label-issue-project.yml:1","Warn: no topLevel permission defined: .github/workflows/open-issue-project.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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v2.12.1 not signed: https://api.github.com/repos/Badgerati/Pode/releases/215048760","Warn: release artifact v2.12.0 not signed: https://api.github.com/repos/Badgerati/Pode/releases/201897012","Warn: release artifact v2.11.1 not signed: https://api.github.com/repos/Badgerati/Pode/releases/183256861","Warn: release artifact v2.11.0 not signed: https://api.github.com/repos/Badgerati/Pode/releases/177474962","Warn: release artifact v2.10.1 not signed: https://api.github.com/repos/Badgerati/Pode/releases/157625262","Warn: release artifact v2.12.1 does not have provenance: https://api.github.com/repos/Badgerati/Pode/releases/215048760","Warn: release artifact v2.12.0 does not have provenance: https://api.github.com/repos/Badgerati/Pode/releases/201897012","Warn: release artifact v2.11.1 does not have provenance: https://api.github.com/repos/Badgerati/Pode/releases/183256861","Warn: release artifact v2.11.0 does not have provenance: https://api.github.com/repos/Badgerati/Pode/releases/177474962","Warn: release artifact v2.10.1 does not have provenance: https://api.github.com/repos/Badgerati/Pode/releases/157625262"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"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/PSScriptAnalyzer.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/PSScriptAnalyzer.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/PSScriptAnalyzer.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/PSScriptAnalyzer.yml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/VirusTotal-Releases.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/VirusTotal-Releases.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/VirusTotal.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/VirusTotal.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/VirusTotal.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/VirusTotal.yml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/VirusTotal.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/VirusTotal.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-coverage.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/ci-coverage.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-coverage.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/ci-coverage.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-docs.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/ci-docs.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-docs.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/ci-docs.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-powershell.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/ci-powershell.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-powershell.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/ci-powershell.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-pwsh7_5.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/ci-pwsh7_5.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-pwsh7_5.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/ci-pwsh7_5.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-pwsh_lts.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/ci-pwsh_lts.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-pwsh_lts.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/ci-pwsh_lts.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-pwsh_preview.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/ci-pwsh_preview.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-pwsh_preview.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/ci-pwsh_preview.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/label-issue-project.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/label-issue-project.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/open-issue-project.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/Badgerati/Pode/open-issue-project.yml/develop?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating mcr.microsoft.com/powershell:7.5-ubuntu-24.04 to mcr.microsoft.com/powershell:7.5-ubuntu-24.04@sha256:042240d57ec9e47e511033b92625a8d95875ee5860af3015992c248b58a8be81","Warn: containerImage not pinned by hash: alpine.dockerfile:1: pin your Docker image by updating mcr.microsoft.com/powershell:7.5-alpine-3.20 to mcr.microsoft.com/powershell:7.5-alpine-3.20@sha256:a6beeddb2fcf45547c9099fba091ce231e51aa374fe62ecc182f7c28b69a6cbf","Warn: containerImage not pinned by hash: arm32.dockerfile:1: pin your Docker image by updating mcr.microsoft.com/powershell:7.5-ubuntu-22.04-arm32 to mcr.microsoft.com/powershell:7.5-ubuntu-22.04-arm32@sha256:7d723942158a105683f53fe1bf350b9e041ed3ae1956e6f45fd12e82233a9256","Warn: containerImage not pinned by hash: examples/Dockerfile:1","Warn: containerImage not pinned by hash: packers/docker/arm32/Dockerfile:1: pin your Docker image by updating arm32v7/ubuntu:bionic to arm32v7/ubuntu:bionic@sha256:f9d8624e98e31a551d490e0bc3e1ea76319974ddae819c641be1158857b3ddc7","Info:   0 out of  18 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   5 containerImage 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":"SAST","score":5,"reason":"SAST tool is not run on all commits -- score normalized to 5","details":["Warn: 16 commits out of 30 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-14T16:32:43.194Z","repository_id":37587510,"created_at":"2025-08-14T16:32:43.194Z","updated_at":"2025-08-14T16:32:43.194Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278909700,"owners_count":26066887,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["active-directory","authentication","cross-platform","docker","framework","hacktoberfest","https","openapi","powershell","powershell-core","raspberry-pi","rest","server","serverless","session","swagger","unix","web","webserver","windows"],"created_at":"2024-09-28T04:22:10.540Z","updated_at":"2025-10-08T07:35:33.482Z","avatar_url":"https://github.com/Badgerati.png","language":"PowerShell","readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/Badgerati/Pode/raw/develop/images/icon-new.svg?raw=true\" width=\"250\" /\u003e\n\u003c/p\u003e\n\n[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/Badgerati/Pode/master/LICENSE.txt)\n[![Documentation](https://img.shields.io/github/v/release/badgerati/pode?label=docs\u0026logo=readthedocs\u0026logoColor=white)](https://badgerati.github.io/Pode)\n[![GitHub Actions](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fbadgerati%2Fpode%2Fbadge\u0026style=flat\u0026label=GitHub)](https://actions-badge.atrox.dev/badgerati/pode/goto)\n[![Code Coverage](https://coveralls.io/repos/github/Badgerati/Pode/badge.svg?branch=develop)](https://coveralls.io/github/Badgerati/Pode?branch=develop)\n[![Discord](https://img.shields.io/discord/887398607727255642?logo=discord\u0026logoColor=white)](https://discord.gg/fRqeGcbF6h)\n\n[![Chocolatey](https://img.shields.io/chocolatey/dt/pode.svg?label=Chocolatey\u0026colorB=a1301c\u0026logo=chocolatey\u0026logoColor=white)](https://chocolatey.org/packages/pode)\n[![PowerShell](https://img.shields.io/powershellgallery/dt/pode.svg?label=PowerShell\u0026colorB=085298\u0026logo=powershell\u0026logoColor=white)](https://www.powershellgallery.com/packages/Pode)\n[![Docker](https://img.shields.io/docker/pulls/badgerati/pode.svg?label=Docker\u0026logoColor=white\u0026logo=docker)](https://hub.docker.com/r/badgerati/pode/)\n\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/Badgerati?color=%23ff69b4\u0026logo=github\u0026style=flat\u0026label=Sponsers)](https://github.com/sponsors/Badgerati)\n[![Ko-fi](https://img.shields.io/static/v1?logo=kofi\u0026label=Ko-fi\u0026logoColor=white\u0026message=Buy+me+a+coffee\u0026color=ff5f5f)](https://ko-fi.com/badgerati)\n[![PayPal](https://img.shields.io/static/v1?logo=paypal\u0026label=PayPal\u0026logoColor=white\u0026message=Donate\u0026color=00457C)](https://paypal.me/badgerati)\n\n\u003e 💝 A lot of my free time, evenings, and weekends goes into making Pode happen; please do consider sponsoring as it will really help! 😊\n\n- [📘 Documentation](#-documentation)\n- [🚀 Features](#-features)\n- [📦 Install](#-install)\n- [🙌 Contributing](#-contributing)\n- [🌎 Roadmap](#-roadmap)\n\nPode is a Cross-Platform framework for creating web servers to host [REST APIs](https://badgerati.github.io/Pode/Tutorials/Routes/Overview/), [Web Pages](https://badgerati.github.io/Pode/Tutorials/Routes/Examples/WebPages/), and [SMTP/TCP](https://badgerati.github.io/Pode/Servers/) Servers. Pode also allows you to render dynamic files using [`.pode`](https://badgerati.github.io/Pode/Tutorials/Views/Pode/) files, which are just embedded PowerShell, or other [Third-Party](https://badgerati.github.io/Pode/Tutorials/Views/ThirdParty/) template engines. Plus many more features, including [Azure Functions](https://badgerati.github.io/Pode/Hosting/AzureFunctions/) and [AWS Lambda](https://badgerati.github.io/Pode/Hosting/AwsLambda/) support!\n\n```powershell\n\nStart-PodeServer -ScriptBlock {\n    Add-PodeEndPoint -Address localhost -port 32005 -Protocol Http\n    Add-PodeRoute -Method Get -Path '/ping' -ScriptBlock {\n        Write-PodeJsonResponse -Value @{value = 'pong' }\n    }\n}\n\n```\n\nSee [here](https://badgerati.github.io/Pode/Getting-Started/FirstApp) for building your first app! Don't know HTML, CSS, or JavaScript? No problem! [Pode.Web](https://github.com/Badgerati/Pode.Web) is currently a work in progress, and lets you build web pages using purely PowerShell!\n\n## 📘 Documentation\n\nAll documentation and tutorials for Pode can be [found here](https://badgerati.github.io/Pode) - this documentation will be for the latest release.\n\nTo see the docs for other releases, branches or tags, you can host the documentation locally. To do so you'll need to have the [`InvokeBuild`](https://github.com/nightroman/Invoke-Build) module installed; then:\n\n```powershell\nInvoke-Build Docs\n```\n\nThen navigate to `http://127.0.0.1:8000` in your browser.\n\n## 🚀 Features\n\n* Cross-platform using PowerShell Core (with support for PS5)\n* Docker support, including images for ARM/Raspberry Pi\n* Azure Functions, AWS Lambda, and IIS support\n* OpenAPI specification version 3.0.x and 3.1.0\n* OpenAPI documentation with Swagger, Redoc, RapidDoc, StopLight, OpenAPI-Explorer and RapiPdf\n* Listen on a single or multiple IP(v4/v6) address/hostnames\n* Cross-platform support for HTTP(S), WS(S), SSE, SMTP(S), and TCP(S)\n* Host REST APIs, Web Pages, and Static Content (with caching)\n* Support for custom error pages\n* Request and Response compression using GZip/Deflate\n* Multi-thread support for incoming requests\n* Inbuilt template engine, with support for third-parties\n* Async timers for short-running repeatable processes\n* Async scheduled tasks using cron expressions for short/long-running processes\n* Supports logging to CLI, Files, and custom logic for other services like LogStash\n* Cross-state variable access across multiple runspaces\n* Restart the server via file monitoring, or defined periods/times\n* Ability to allow/deny requests from certain IP addresses and subnets\n* Basic rate limiting for IP addresses and subnets\n* Middleware and Sessions on web servers, with Flash message and CSRF support\n* Authentication on requests, such as Basic, Windows and Azure AD\n* Authorisation support on requests, using Roles, Groups, Scopes, etc.\n* Support for dynamically building Routes from Functions and Modules\n* Generate/bind self-signed certificates\n* Secret management support to load secrets from vaults\n* Support for File Watchers\n* In-memory caching, with optional support for external providers (such as Redis)\n* (Windows) Open the hosted server as a desktop application\n* FileBrowsing support\n* Localization (i18n) in Arabic, German, Spanish, France, Italian, Japanese, Korean, Polish, Portuguese, and Chinese\n\n## 📦 Install\n\nYou can install Pode from either Chocolatey, the PowerShell Gallery, or Docker:\n\n```powershell\n# chocolatey\nchoco install pode\n\n# powershell gallery\nInstall-Module -Name Pode\n\n# docker\ndocker pull badgerati/pode\n```\n\n## 🙌 Contributing\n\n\u003e The full contributing guide can be [found here](https://github.com/Badgerati/Pode/blob/develop/.github/CONTRIBUTING.md)\n\nPull Requests, Bug Reports and Feature Requests are welcome! Feel free to help out with Issues and Projects!\n\nTo run the unit tests, run the following command from the root of the repository (this will build Pode and, if needed, auto-install Pester/.NET):\n\n```powershell\nInvoke-Build Test\n```\n\nTo just build Pode, before running any examples, run the following:\n\n```powershell\nInvoke-Build Build\n```\n\nMore information on how to build Pode can be [found here](./docs/Getting-Started/build.md)\n\nTo work on issues you can fork Pode, and then open a Pull Request for approval. Pull Requests should be made against the `develop` branch. Each Pull Request should also have an appropriate issue created.\n\n## 🌎 Roadmap\n\nYou can find a list of the features, enhancements and ideas that will hopefully one day make it into Pode [here in the documentation](https://badgerati.github.io/Pode/roadmap/).\n\nThere is also a [Project Board](https://github.com/users/Badgerati/projects/2) in the beginnings of being setup for Pode, with milestone progression and current roadmap issues and ideas. If you see any draft issues you wish to discuss, or have an idea for one, please discuss it over on [Discord](https://discord.gg/fRqeGcbF6h) in the `#ideas` or `#pode` channel.\n","funding_links":["https://github.com/sponsors/Badgerati","https://ko-fi.com/badgerati","https://www.paypal.me/badgerati","https://paypal.me/badgerati"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbadgerati%2Fpode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbadgerati%2Fpode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbadgerati%2Fpode/lists"}