Examples
The examples in this repository are complete stacks that run Zen IdP side by side with real software, end to end, with a single command. Each folder carries its own compose.yaml and config.yaml, so there is nothing to configure and nothing to generate:
git clone https://github.com/varavelio/zen-idp.git
cd zen-idp/examples/<example>/
docker compose up
You only need Docker and an authenticator app for the TOTP codes. If you do not have one at hand, the TOTP generator produces the same codes in your browser from the secret pasted into it.
One demo user for every example
All the examples share the same hardcoded credentials, so you register alice's TOTP secret in your authenticator once and every stack accepts her. Each config.yaml spells out the demo values in comments right next to where they are used, including alice's TOTP secret. The stacks also share the same demo ports, so run one example at a time on the same machine.
OAuth2 Proxy: Protect any web app
https://github.com/varavelio/zen-idp/tree/main/examples/oauth2-proxy
OAuth2 Proxy sits in front of a web application and signs everyone in through Zen IdP before requests reach it. The application itself does not change, which is what makes this the right pattern for internal dashboards, home lab services, or any older tool that was never built with OIDC in mind. The example protects a small nginx demo page and prints the identity headers that OAuth2 Proxy forwards to it.
Grafana: Sign in with Zen IdP
https://github.com/varavelio/zen-idp/tree/main/examples/grafana
Grafana is a dashboarding and metrics visualization tool that speaks OIDC natively. This example points its login at Zen IdP through Grafana's generic OAuth provider, so the Grafana sign-in page becomes the Zen IdP sign-in page, with the same identifier and TOTP flow as everywhere else.