Badgerati / Pode

Pode is a Cross-Platform PowerShell web framework for creating REST APIs, Web Sites, and TCP/SMTP servers
https://badgerati.github.io/Pode
MIT License
865 stars 92 forks source link
active-directory authentication cross-platform docker framework hacktoberfest https openapi powershell powershell-core raspberry-pi rest server serverless session swagger unix web webserver windows

MIT licensed Documentation GitHub Actions Code Coverage Discord

Chocolatey PowerShell Docker

GitHub Sponsors Ko-fi PayPal

💝 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 for creating web servers to host REST APIs, Web Pages, and SMTP/TCP Servers. Pode also allows you to render dynamic files using .pode files, which are just embedded PowerShell, or other Third-Party template engines. Plus many more features, including Azure Functions and AWS Lambda support!


Start-PodeServer -ScriptBlock {
    Add-PodeEndPoint -Address localhost -port 32005 -Protocol Http
    Add-PodeRoute -Method Get -Path '/ping' -ScriptBlock {
        Write-PodeJsonResponse -Value @{value = 'pong' }
    }
}

See here for building your first app! Don't know HTML, CSS, or JavaScript? No problem! Pode.Web is currently a work in progress, and lets you build web pages using purely PowerShell!

📘 Documentation

All documentation and tutorials for Pode can be found here - this documentation will be for the latest release.

To 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 module installed; then:

Invoke-Build Docs

Then navigate to http://127.0.0.1:8000 in your browser.

🚀 Features

📦 Install

You can install Pode from either Chocolatey, the PowerShell Gallery, or Docker:

# chocolatey
choco install pode

# powershell gallery
Install-Module -Name Pode

# docker
docker pull badgerati/pode

🙌 Contributing

The full contributing guide can be found here

Pull Requests, Bug Reports and Feature Requests are welcome! Feel free to help out with Issues and Projects!

To 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):

Invoke-Build Test

To just build Pode, before running any examples, run the following:

Invoke-Build Build

More information on how to build Pode can be found here

To 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.

🌎 Roadmap

You can find a list of the features, enhancements and ideas that will hopefully one day make it into Pode here in the documentation.

There is also a Project Board 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 in the #ideas or #pode channel.