# talha50819/jagger architecture

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

- Interactive diagram: https://gitdiagram.com/talha50819/jagger
- Repository: https://github.com/talha50819/jagger

## Overview

Jagger is a web application for administering SAML federations and entity metadata, with additional support for Shibboleth attribute policies and notifications. The principal workflow is an administrator signing in, registering or editing an identity/service provider, and managing its federation membership and metadata. Other documented capabilities include metadata synchronization, a combined circle of trust, policy-based attribute release, and subscriptions. The tree and README establish these product areas; sampled controller and worker code supports selected authentication and background-job links, but most feature internals were not sampled.

Main entry points: [`application/controllers/Gworkers.php`](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Gworkers.php) (Background workers), [`application/controllers/Mdqworker.php`](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Mdqworker.php) (MDQ worker), [`application/controllers/tools/Sync_metadata.php`](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/tools/Sync_metadata.php) (Metadata synchronization), [`application/models/Provider.php`](https://github.com/talha50819/jagger/blob/1.x-stable/application/models/Provider.php) (Domain models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_dashboard["Dashboard<br/>[Dashboard.php]"]
  node_auth["Authentication<br/>[Auth.php]"]
  node_reports["Reports<br/>[Awaiting.php]"]
end

subgraph group_federation["Federation and metadata"]
  node_provider_registration["Provider registration"]
  node_entity_management["Entity management<br/>[Entityedit.php]"]
  node_federation_management["Federation management<br/>[Manage.php]"]
  node_metadata["Metadata views<br/>[Metadata.php]"]
  node_metadata_sync["Metadata synchronization<br/>[Sync_metadata.php]"]
  node_trust_circle["Circle of trust"]
end

subgraph group_policy["Policy and notifications"]
  node_attribute_policy["Attribute policies"]
  node_notifications["Notifications<br/>[Subscriber.php]"]
end

subgraph group_operations["Operations"]
  node_admin_tools["Administration<br/>[Sysprefs.php]"]
  node_task_scheduler["Task scheduler<br/>[Taskscheduler.php]"]
  node_worker["Background workers<br/>[Gworkers.php]"]
  node_mdq_worker["MDQ worker<br/>[Mdqworker.php]"]
  node_email_queue["Email queue<br/>[MailQueue.php]"]
end

subgraph group_domain["Domain and persistence"]
  node_auth_service["Auth service<br/>[Jauth.php]"]
  node_models["Domain models<br/>[Provider.php]"]
  node_database[("Relational database")]
end

node_admin(("Administrator"))
node_shibboleth(("Shibboleth IdP"))
node_external_federation(("External federation"))
node_email_service(("Email service"))
node_message_broker["Message broker"]

node_admin -->|"opens"| node_dashboard
node_admin -->|"signs in"| node_auth
node_auth -->|"authenticates"| node_auth_service
node_admin -->|"registers entity"| node_provider_registration
node_admin -->|"edits entity"| node_entity_management
node_admin -->|"manages federation"| node_federation_management
node_admin -->|"views metadata"| node_metadata
node_admin -->|"starts synchronization"| node_metadata_sync
node_admin -->|"configures policy"| node_attribute_policy
node_admin -->|"manages subscriptions"| node_notifications
node_admin -->|"views reports"| node_reports
node_admin -->|"configures system"| node_admin_tools
node_external_federation -->|"provides metadata"| node_metadata_sync
node_metadata_sync -->|"fetches metadata"| node_external_federation
node_task_scheduler -->|"stores tasks"| node_database
node_worker -->|"reads queued mail"| node_email_queue
node_worker -->|"sends mail"| node_email_service
node_worker -->|"checks scheduled tasks"| node_database
node_message_broker -.->|"delivers jobs"| node_mdq_worker
node_mdq_worker -.->|"consumes jobs"| node_message_broker
node_mdq_worker -->|"refreshes trust graph"| node_trust_circle
node_trust_circle -->|"reads providers"| node_models
node_auth_service -->|"updates user"| node_models
node_models -->|"persists entities"| node_database
node_attribute_policy -.->|"supports IdP policy"| node_shibboleth

click node_dashboard "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Dashboard.php"
click node_auth "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Auth.php"
click node_auth_service "https://github.com/talha50819/jagger/blob/1.x-stable/application/libraries/Jauth.php"
click node_provider_registration "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Providerregistration.php"
click node_entity_management "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/manage/Entityedit.php"
click node_federation_management "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/federations/Manage.php"
click node_metadata "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Metadata.php"
click node_metadata_sync "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/tools/Sync_metadata.php"
click node_trust_circle "https://github.com/talha50819/jagger/blob/1.x-stable/application/libraries/Gworkertemplates.php"
click node_attribute_policy "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/manage/Attributepolicy.php"
click node_notifications "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/notifications/Subscriber.php"
click node_reports "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/reports/Awaiting.php"
click node_admin_tools "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/smanage/Sysprefs.php"
click node_task_scheduler "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/smanage/Taskscheduler.php"
click node_worker "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Gworkers.php"
click node_mdq_worker "https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Mdqworker.php"
click node_email_queue "https://github.com/talha50819/jagger/blob/1.x-stable/application/models/MailQueue.php"
click node_models "https://github.com/talha50819/jagger/blob/1.x-stable/application/models/Provider.php"
click node_database "https://github.com/talha50819/jagger/blob/1.x-stable/application/config/database-default.php"

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_dashboard,node_auth,node_reports toneBlue
class node_provider_registration,node_entity_management,node_federation_management,node_metadata,node_metadata_sync,node_trust_circle toneAmber
class node_attribute_policy,node_notifications toneMint
class node_admin_tools,node_task_scheduler,node_worker,node_mdq_worker,node_email_queue toneRose
class node_auth_service,node_models,node_database,node_admin,node_shibboleth,node_external_federation,node_email_service,node_message_broker toneIndigo
```

## Components

### Web interface

- [Dashboard](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Dashboard.php): `application/controllers/Dashboard.php`
- [Authentication](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Auth.php): `application/controllers/Auth.php`
- [Reports](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/reports/Awaiting.php): `application/controllers/reports/Awaiting.php`

### Federation and metadata

- [Provider registration](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Providerregistration.php): `application/controllers/Providerregistration.php`
- [Entity management](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/manage/Entityedit.php): `application/controllers/manage/Entityedit.php`
- [Federation management](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/federations/Manage.php): `application/controllers/federations/Manage.php`
- [Metadata views](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Metadata.php): `application/controllers/Metadata.php`
- [Metadata synchronization](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/tools/Sync_metadata.php): `application/controllers/tools/Sync_metadata.php`
- [Circle of trust](https://github.com/talha50819/jagger/blob/1.x-stable/application/libraries/Gworkertemplates.php): `application/libraries/Gworkertemplates.php`

### Policy and notifications

- [Attribute policies](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/manage/Attributepolicy.php): `application/controllers/manage/Attributepolicy.php`
- [Notifications](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/notifications/Subscriber.php): `application/controllers/notifications/Subscriber.php`

### Operations

- [Administration](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/smanage/Sysprefs.php): `application/controllers/smanage/Sysprefs.php`
- [Task scheduler](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/smanage/Taskscheduler.php): `application/controllers/smanage/Taskscheduler.php`
- [Background workers](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Gworkers.php): `application/controllers/Gworkers.php`
- [MDQ worker](https://github.com/talha50819/jagger/blob/1.x-stable/application/controllers/Mdqworker.php): `application/controllers/Mdqworker.php`
- [Email queue](https://github.com/talha50819/jagger/blob/1.x-stable/application/models/MailQueue.php): `application/models/MailQueue.php`

### Domain and persistence

- [Auth service](https://github.com/talha50819/jagger/blob/1.x-stable/application/libraries/Jauth.php): `application/libraries/Jauth.php`
- [Domain models](https://github.com/talha50819/jagger/blob/1.x-stable/application/models/Provider.php): `application/models/Provider.php`
- [Relational database](https://github.com/talha50819/jagger/blob/1.x-stable/application/config/database-default.php): `application/config/database-default.php`

### Other components

- **Administrator**
- **Shibboleth IdP**
- **External federation**
- **Email service**
- **Message broker**

## Connections

- Administrator → Dashboard: opens
- Administrator → Authentication: signs in
- Authentication → Auth service: authenticates
- Administrator → Provider registration: registers entity
- Administrator → Entity management: edits entity
- Administrator → Federation management: manages federation
- Administrator → Metadata views: views metadata
- Administrator → Metadata synchronization: starts synchronization
- Administrator → Attribute policies: configures policy
- Administrator → Notifications: manages subscriptions
- Administrator → Reports: views reports
- Administrator → Administration: configures system
- External federation → Metadata synchronization: provides metadata
- Metadata synchronization → External federation: fetches metadata
- Task scheduler → Relational database: stores tasks
- Background workers → Email queue: reads queued mail
- Background workers → Email service: sends mail
- Background workers → Relational database: checks scheduled tasks
- Message broker → MDQ worker: delivers jobs
- MDQ worker → Message broker: consumes jobs
- MDQ worker → Circle of trust: refreshes trust graph
- Circle of trust → Domain models: reads providers
- Auth service → Domain models: updates user
- Domain models → Relational database: persists entities
- Attribute policies → Shibboleth IdP: supports IdP policy
