index - mdaneri/Pode GitHub Wiki
Welcome!
💝 A lot of my free time, evenings, and weekends goes into making Pode happen; please do consider sponsoring as it will really help! 😊
Pode is a Cross-Platform framework to create web servers that host REST APIs, Web Sites, and TCP/SMTP Servers. It also allows you to render dynamic files using .pode files, which is effectively embedded PowerShell, or other Third-Party template engines. Pode also has support for middleware, sessions, authentication, and logging; as well as access and rate limiting features. There's also Azure Functions and AWS Lambda support!
🚀 Features
- ✅ Cross-platform using PowerShell Core (with support for PS5)
- ✅ Docker support, including images for ARM/Raspberry Pi
- ✅ Azure Functions, AWS Lambda, and IIS support
- ✅ OpenAPI specification version 3.0.x and 3.1.0
- ✅ OpenAPI documentation with Swagger, Redoc, RapidDoc, StopLight, OpenAPI-Explorer and RapiPdf
- ✅ Listen on a single or multiple IP(v4/v6) addresses/hostnames
- ✅ Cross-platform support for HTTP(S), WS(S), SSE, SMTP(S), and TCP(S)
- ✅ Host REST APIs, Web Pages, and Static Content (with caching)
- ✅ Support for custom error pages
- ✅ Request and Response compression using GZip/Deflate
- ✅ Multi-thread support for incoming requests
- ✅ Inbuilt template engine, with support for third-parties
- ✅ Async timers for short-running repeatable processes
- ✅ Async scheduled tasks using cron expressions for short/long-running processes
- ✅ Supports logging to CLI, Files, and custom logic for other services like LogStash
- ✅ Cross-state variable access across multiple runspaces
- ✅ Restart the server via file monitoring, or defined periods/times
- ✅ Ability to allow/deny requests from certain IP addresses and subnets
- ✅ Basic rate limiting for IP addresses and subnets
- ✅ Middleware and Sessions on web servers, with Flash message and CSRF support
- ✅ Authentication on requests, such as Basic, Windows and Azure AD
- ✅ Authorisation support on requests, using Roles, Groups, Scopes, etc.
- ✅ Enhanced authentication support, including Basic, Bearer (with JWT), Certificate, Digest, Form, OAuth2, and ApiKey (with JWT).
- ✅ Support for dynamically building Routes from Functions and Modules
- ✅ Generate/bind self-signed certificates
- ✅ Secret management support to load secrets from vaults
- ✅ Support for File Watchers
- ✅ In-memory caching, with optional support for external providers (such as Redis)
- ✅ (Windows) Open the hosted server as a desktop application
- ✅ FileBrowsing support
- ✅ Localization (i18n) in Arabic, German, Spanish, France, Italian, Japanese, Korean, Polish, Portuguese,Dutch and Chinese
🏢 Companies using Pode
🔥 Quick Look!
Below is a quick example of using Pode to create a single REST API endpoint to return a JSON response. It will listen on an endpoint, create the route, and respond with a JSON object when http://localhost:8080/ping is called:
Start-PodeServer {
Add-PodeEndpoint -Address localhost -Port 8080 -Protocol Http
Add-PodeRoute -Method Get -Path '/ping' -ScriptBlock {
Write-PodeJsonResponse -Value @{ 'value' = 'pong' }
}
}
