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.
- 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, 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' }
}
}