# cyclenerd/google-cloud-identity-platform architecture

> Architecture diagram of the GitHub repository cyclenerd/google-cloud-identity-platform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cyclenerd/google-cloud-identity-platform
- Repository: https://github.com/cyclenerd/google-cloud-identity-platform

## Overview

This repository is a Google Cloud Identity Platform sign-in demo and configuration guide. A user selects a provider-specific page, signs in through Firebase Authentication, views account details, and can retrieve an ID token for inspection or backend use. The README documents GitHub, GitLab, Microsoft, and Google setup plus security; provider scripts show the popup and token-display flow. The tree includes a PSGI app and a Perl JWT script, but their internals were not sampled, so their runtime wiring is not inferred.

Main entry points: [`page/github.js`](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/github.js) (GitHub auth flow), [`page/gitlab.js`](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/gitlab.js) (GitLab auth flow), [`page/google.js`](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/google.js) (Google auth flow), [`page/microsoft.js`](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/microsoft.js) (Microsoft auth flow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_demo["Web demo"]
  node_app["Web app server<br/>[app.psgi]"]
  node_landing["Demo landing<br/>[index.html]"]
  node_github_page["GitHub sign-in page<br/>[github.html]"]
  node_gitlab_page["GitLab sign-in page<br/>[gitlab.html]"]
  node_google_page["Google sign-in page<br/>[google.html]"]
  node_microsoft_page["Microsoft sign-in page<br/>[microsoft.html]"]
end

subgraph group_identity["Identity flows"]
  node_config["Firebase config<br/>[config.js]"]
  node_github_flow["GitHub auth flow<br/>[github.js]"]
  node_gitlab_flow["GitLab auth flow<br/>[gitlab.js]"]
  node_google_flow["Google auth flow<br/>[google.js]"]
  node_microsoft_flow["Microsoft auth flow<br/>[microsoft.js]"]
  node_firebase["Firebase Identity Platform"]
  node_jwt["JWT verifier<br/>[jwt.pl]"]
end

subgraph group_guides["Setup guides"]
  node_github_guide["GitHub setup guide<br/>[github.md]"]
  node_gitlab_guide["GitLab setup guide<br/>[gitlab.md]"]
  node_google_guide["Google setup guide<br/>[google.md]"]
  node_microsoft_guide["Microsoft setup guide<br/>[microsoft.md]"]
  node_security_guide["Security guidance<br/>[security.md]"]
end

node_user(("User"))
node_github["GitHub"]
node_gitlab["GitLab"]
node_google["Google"]
node_microsoft["Microsoft"]
node_jwtio["JWT debugger"]

node_user -->|"opens demo"| node_landing
node_user -->|"selects provider"| node_github_page
node_user -->|"selects provider"| node_gitlab_page
node_user -->|"selects provider"| node_google_page
node_user -->|"selects provider"| node_microsoft_page
node_github_page -->|"loads script"| node_github_flow
node_gitlab_page -->|"loads script"| node_gitlab_flow
node_google_page -->|"loads script"| node_google_flow
node_microsoft_page -->|"loads script"| node_microsoft_flow
node_github_flow -->|"reads config"| node_config
node_gitlab_flow -->|"reads config"| node_config
node_google_flow -->|"reads config"| node_config
node_microsoft_flow -->|"reads config"| node_config
node_github_flow -->|"popup auth"| node_firebase
node_gitlab_flow -->|"popup auth"| node_firebase
node_google_flow -->|"popup auth"| node_firebase
node_microsoft_flow -->|"popup auth"| node_firebase
node_firebase -->|"OAuth login"| node_github
node_firebase -->|"OIDC login"| node_gitlab
node_firebase -->|"OAuth login"| node_google
node_firebase -->|"OAuth login"| node_microsoft
node_github_flow -->|"gets ID token"| node_firebase
node_gitlab_flow -->|"gets ID token"| node_firebase
node_google_flow -->|"gets ID token"| node_firebase
node_microsoft_flow -->|"gets ID token"| node_firebase
node_github_flow -->|"opens token"| node_jwtio
node_gitlab_flow -->|"opens token"| node_jwtio
node_google_flow -->|"opens token"| node_jwtio
node_microsoft_flow -->|"opens token"| node_jwtio
node_user -->|"reads setup"| node_github_guide
node_user -->|"reads setup"| node_gitlab_guide
node_user -->|"reads setup"| node_google_guide
node_user -->|"reads setup"| node_microsoft_guide
node_user -->|"reads guidance"| node_security_guide

click node_app "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/app.psgi"
click node_landing "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/index.html"
click node_github_page "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/github.html"
click node_gitlab_page "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/gitlab.html"
click node_google_page "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/google.html"
click node_microsoft_page "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/microsoft.html"
click node_config "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/config.js"
click node_github_flow "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/github.js"
click node_gitlab_flow "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/gitlab.js"
click node_google_flow "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/google.js"
click node_microsoft_flow "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/microsoft.js"
click node_jwt "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/jwt.pl"
click node_github_guide "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/github.md"
click node_gitlab_guide "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/gitlab.md"
click node_google_guide "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/google.md"
click node_microsoft_guide "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/microsoft.md"
click node_security_guide "https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/security.md"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_landing,node_github_page,node_gitlab_page,node_google_page,node_microsoft_page,node_user toneBlue
class node_config,node_github_flow,node_gitlab_flow,node_google_flow,node_microsoft_flow,node_firebase,node_jwt toneAmber
class node_github_guide,node_gitlab_guide,node_google_guide,node_microsoft_guide,node_security_guide toneMint
class node_github,node_gitlab,node_google,node_microsoft,node_jwtio toneIndigo
```

## Components

### Web demo

- [Web app server](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/app.psgi): `app.psgi`
- [Demo landing](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/index.html): `page/index.html`
- [GitHub sign-in page](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/github.html): `page/github.html`
- [GitLab sign-in page](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/gitlab.html): `page/gitlab.html`
- [Google sign-in page](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/google.html): `page/google.html`
- [Microsoft sign-in page](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/microsoft.html): `page/microsoft.html`

### Identity flows

- [Firebase config](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/config.js): `page/config.js`
- [GitHub auth flow](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/github.js): `page/github.js`
- [GitLab auth flow](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/gitlab.js): `page/gitlab.js`
- [Google auth flow](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/google.js): `page/google.js`
- [Microsoft auth flow](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/page/microsoft.js): `page/microsoft.js`
- **Firebase Identity Platform**
- [JWT verifier](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/jwt.pl): `jwt.pl`

### Setup guides

- [GitHub setup guide](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/github.md): `github.md`
- [GitLab setup guide](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/gitlab.md): `gitlab.md`
- [Google setup guide](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/google.md): `google.md`
- [Microsoft setup guide](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/microsoft.md): `microsoft.md`
- [Security guidance](https://github.com/cyclenerd/google-cloud-identity-platform/blob/master/security.md): `security.md`

### Other components

- **User**
- **GitHub**
- **GitLab**
- **Google**
- **Microsoft**
- **JWT debugger**

## Connections

- User → Demo landing: opens demo
- User → GitHub sign-in page: selects provider
- User → GitLab sign-in page: selects provider
- User → Google sign-in page: selects provider
- User → Microsoft sign-in page: selects provider
- GitHub sign-in page → GitHub auth flow: loads script
- GitLab sign-in page → GitLab auth flow: loads script
- Google sign-in page → Google auth flow: loads script
- Microsoft sign-in page → Microsoft auth flow: loads script
- GitHub auth flow → Firebase config: reads config
- GitLab auth flow → Firebase config: reads config
- Google auth flow → Firebase config: reads config
- Microsoft auth flow → Firebase config: reads config
- GitHub auth flow → Firebase Identity Platform: popup auth
- GitLab auth flow → Firebase Identity Platform: popup auth
- Google auth flow → Firebase Identity Platform: popup auth
- Microsoft auth flow → Firebase Identity Platform: popup auth
- Firebase Identity Platform → GitHub: OAuth login
- Firebase Identity Platform → GitLab: OIDC login
- Firebase Identity Platform → Google: OAuth login
- Firebase Identity Platform → Microsoft: OAuth login
- GitHub auth flow → Firebase Identity Platform: gets ID token
- GitLab auth flow → Firebase Identity Platform: gets ID token
- Google auth flow → Firebase Identity Platform: gets ID token
- Microsoft auth flow → Firebase Identity Platform: gets ID token
- GitHub auth flow → JWT debugger: opens token
- GitLab auth flow → JWT debugger: opens token
- Google auth flow → JWT debugger: opens token
- Microsoft auth flow → JWT debugger: opens token
- User → GitHub setup guide: reads setup
- User → GitLab setup guide: reads setup
- User → Google setup guide: reads setup
- User → Microsoft setup guide: reads setup
- User → Security guidance: reads guidance
