• Stars
    star
    768
  • Rank 56,959 (Top 2 %)
  • Language
    PowerShell
  • License
    Other
  • Created over 6 years ago
  • Updated 24 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Pode is a Cross-Platform PowerShell web framework for creating REST APIs, Web Sites, and TCP/SMTP servers

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!

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

  • 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, Swagger, and ReDoc support
  • Listen on a single or multiple IP address/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

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

More Repositories

1

Pode.Web

Web template framework for use with the Pode PowerShell web server
PowerShell
174
star
2

Monocle

PowerShell Web Automation module, made to make automating websites easier
PowerShell
60
star
3

Parcel

Cross-platform PowerShell package manager and provisioner
PowerShell
24
star
4

Picassio

Picassio is a PowerShell automated provisioning/deployment tool for Windows
PowerShell
21
star
5

Fudge

Fudge is a PowerShell tool to help manage software packages via Chocolatey for specific development projects. Think NPM and Bower, but for Chocolatey
PowerShell
20
star
6

IISManager

PowerShell module to help manage IIS instances, which can also be run from PowerShell Core
PowerShell
19
star
7

PoshHosts

Cross-platform module to control the hosts file from the command line
PowerShell
19
star
8

Pode.Game

2D game framework for use with the Pode PowerShell web server
PowerShell
13
star
9

PowerUI

PowerShell framework for WPF
PowerShell
12
star
10

PsRedis

PowerShell Module for interacting with Redis caches
PowerShell
11
star
11

StringLib

Open-source string library for LUA which adds additional string functionality. Version: 1.1.2
Lua
9
star
12

Fogg

PowerShell tool to aide and simplify the creation, deployment and provisioning of infrastructure in Azure
PowerShell
7
star
13

Picassio2

Picassio2 is a Code-over-Config version of Picassio, and far more flexible for automation using PowerShell
PowerShell
7
star
14

PowerVCR

PowerVCR is a PowerShell web request recorder and playback module
PowerShell
6
star
15

Pode.Kestrel

Kestrel Listener for the Pode PowerShell web server
C#
5
star
16

NotifyMeCI

Notify Me CI is an application to notify you of CI tasks across varying Servers
C#
4
star
17

Sky-Engine

2D Game Engine for use with the Android platform, written in Java. Version: 0.9.5
Java
4
star
18

pode-smtp-server

SMTP Server with Frontend and REST API using Pode and PowerShell
PowerShell
4
star
19

Hook

A cross-platform PowerShell module for creating async hooks on events, and triggering associated actions
PowerShell
4
star
20

Pode.Ldap

Extension module for Pode that enables cross-platform LDAP authentication
PowerShell
4
star
21

PSClass

PowerShell module to help determine class dependencies, and the order that you need to import them
PowerShell
3
star
22

Edison

Edison is an open source unit/integration test framework for .NET
C#
3
star
23

PSMorseCode

Convert from and to Morse Code in PowerShell
PowerShell
3
star
24

smtpy

smtpy is a lightwight python Windows service which runs as a mock SMTP server, storing emails in a SQLite database.
Python
3
star
25

Pode.Yaml

Extension module for Pode, it allows you to parse and send YAML requests and responses
PowerShell
3
star
26

Icarus

Icarus is a simple JSON data store.
C#
2
star
27

PSCoveralls

Cross-platform PowerShell module that allows you to publish Pester code coverage results to Coveralls.io
PowerShell
2
star
28

Table

Implementation of a Table class in C#, and sson also Java.
C#
2
star
29

useful-scripts

General personal useful scripts
AutoHotkey
1
star
30

Logbook

Logbook is a simple error logging tool, that stores all log messages in JSON format files
C#
1
star
31

Warcraft-Map-IDs

A list of nearly every possible triggered Map Area ID within World of Warcraft, for use with LUA.
1
star
32

Grape

PowerShell
1
star
33

WebRequestAPI

WRAPI, a web request library to make fetching websites, xml documents and other things on the web simpler.
C#
1
star
34

Build-Pipeline-Theme

Jenkins Build Pipeline plugin custom CSS theme
CSS
1
star
35

QuestWatcher

WoW AddOn to help automatically watch Quests when changing between areas
Lua
1
star
36

Haxxor

Haxxor is a simple encrpytion/decrpytion framework, which support multiple methods of encryption
C#
1
star
37

VisitorList

A data structure, written in Java, for storing a set of keys, each with a set of links; keeping in memory whether those links have been visited to from their parent key. Because this is a List, it retains the order in which keys and links are added, which may be crucial for some algorithms. If this is not the case, you may be more interested in the VisitorMap.
1
star
38

pode-openfaas

OpenFAAS template for Pode
Dockerfile
1
star
39

SortedList

Implementation of a Sorted List, written in Java. Can be used with objects that implement the Comparable interface, or if they don't, then by supplying a Comparator object.
Java
1
star
40

VisitorMap

A data structure, written in Java, for storing a set of keys, each with a set of links; keeping in memory whether those links have been visited to from their parent key. Because this is a Map, it does not retain the order in which keys and links are added. If retaining the order is necessary, you may be more interested in the VisitorList.
1
star