# fg-tida/fg-tida-tracker architecture

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

- Interactive diagram: https://gitdiagram.com/fg-tida/fg-tida-tracker
- Repository: https://github.com/fg-tida/fg-tida-tracker

## Overview

FG-TIDA Datatracker is a customized document, contribution, and meeting tracker. Members submit topic-based contributions; administrators manage documents, groups, meetings, agendas, resources, and dates. Optional GitHub synchronization supports adopted work items and versioned builds. The graph preserves these documented product areas and the substantial inherited modules identified in the source index. Source excerpts do not show most request routing or workflow calls, so documented links cite the README and other connections are omitted rather than inferred.

Main entry points: [`ietf/fgtida/admin.py`](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/fgtida/admin.py) (FG-TIDA administration), [`ietf/urls.py`](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/urls.py) (Web application), [`ietf/group/models.py`](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/group/models.py) (Topic groups), [`ietf/fgtida/accounts.py`](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/fgtida/accounts.py) (Accounts and MFA)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User experience"]
  node_web["Web application<br/>[urls.py]"]
  node_agenda_ui["Agenda interface<br/>[Agenda.vue]"]
end

subgraph group_work["FG-TIDA workflows"]
  node_accounts["Accounts and MFA<br/>[accounts.py]"]
  node_fgtida_admin["FG-TIDA administration<br/>[admin.py]"]
  node_documents[("Documents and revisions<br/>[models.py]")]
  node_contributions["Contribution submission<br/>[views.py]"]
  node_groups[("Topic groups<br/>[models.py]")]
  node_meetings[("Meetings and agendas<br/>[models.py]")]
  node_meeting_views["Meeting workflows<br/>[views.py]"]
end

subgraph group_platform["Datatracker platform"]
  node_people[("People and identities<br/>[models.py]")]
  node_names[("Name registry<br/>[models.py]")]
  node_sync_tasks["Synchronization tasks<br/>[tasks.py]"]
  node_rfc_index["RFC index sync<br/>[rfcindex.py]"]
  node_blob_replication["Blob replication<br/>[replication.py]"]
  node_blob_storage[("Blob storage<br/>[storage.py]")]
  node_file_storage["File storage<br/>[storage.py]"]
  node_logging["Application logging<br/>[log.py]"]
  node_mail["Mail delivery<br/>[mail.py]"]
end

subgraph group_integrations["External integrations"]
  node_github["GitHub App and Actions"]
  node_smtp["ITU mail transport"]
end

node_members(("Members"))
node_administrators(("Administrators"))

node_members -->|"use"| node_web
node_administrators -->|"manage"| node_web
node_web -->|"authenticate"| node_accounts
node_web -->|"submit"| node_contributions
node_web -->|"browse"| node_meetings
node_web -.->|"display agenda"| node_agenda_ui
node_administrators -->|"configure"| node_fgtida_admin
node_fgtida_admin -->|"manage"| node_documents
node_fgtida_admin -->|"manage"| node_groups
node_fgtida_admin -->|"manage"| node_meetings
node_members -->|"join topic"| node_groups
node_contributions -->|"submit to"| node_groups
node_fgtida_admin -->|"configure sync"| node_github
node_github -->|"sync versions"| node_documents
node_accounts -.->|"manage identities"| node_people
node_people -->|"resolve names"| node_names
node_sync_tasks -->|"run index sync"| node_rfc_index
node_blob_storage -->|"queue replication"| node_blob_replication
node_file_storage -->|"store files"| node_blob_storage
node_mail -->|"send mail"| node_smtp
node_fgtida_admin -.->|"queue notifications"| node_mail

click node_web "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/urls.py"
click node_agenda_ui "https://github.com/fg-tida/fg-tida-tracker/blob/main/client/agenda/Agenda.vue"
click node_accounts "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/fgtida/accounts.py"
click node_fgtida_admin "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/fgtida/admin.py"
click node_documents "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/doc/models.py"
click node_contributions "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/submit/views.py"
click node_groups "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/group/models.py"
click node_meetings "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/meeting/models.py"
click node_meeting_views "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/meeting/views.py"
click node_people "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/person/models.py"
click node_names "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/name/models.py"
click node_sync_tasks "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/sync/tasks.py"
click node_rfc_index "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/sync/rfcindex.py"
click node_blob_replication "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/blobdb/replication.py"
click node_blob_storage "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/blobdb/storage.py"
click node_file_storage "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/utils/storage.py"
click node_logging "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/utils/log.py"
click node_mail "https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/utils/mail.py"

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_web,node_agenda_ui toneBlue
class node_accounts,node_fgtida_admin,node_documents,node_contributions,node_groups,node_meetings,node_meeting_views toneAmber
class node_people,node_names,node_sync_tasks,node_rfc_index,node_blob_replication,node_blob_storage,node_file_storage,node_logging,node_mail toneMint
class node_github,node_smtp toneRose
class node_members,node_administrators toneIndigo
```

## Components

### User experience

- [Web application](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/urls.py): `ietf/urls.py`
- [Agenda interface](https://github.com/fg-tida/fg-tida-tracker/blob/main/client/agenda/Agenda.vue): `client/agenda/Agenda.vue`

### FG-TIDA workflows

- [Accounts and MFA](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/fgtida/accounts.py): `ietf/fgtida/accounts.py`
- [FG-TIDA administration](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/fgtida/admin.py): `ietf/fgtida/admin.py`
- [Documents and revisions](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/doc/models.py): `ietf/doc/models.py`
- [Contribution submission](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/submit/views.py): `ietf/submit/views.py`
- [Topic groups](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/group/models.py): `ietf/group/models.py`
- [Meetings and agendas](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/meeting/models.py): `ietf/meeting/models.py`
- [Meeting workflows](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/meeting/views.py): `ietf/meeting/views.py`

### Datatracker platform

- [People and identities](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/person/models.py): `ietf/person/models.py`
- [Name registry](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/name/models.py): `ietf/name/models.py`
- [Synchronization tasks](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/sync/tasks.py): `ietf/sync/tasks.py`
- [RFC index sync](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/sync/rfcindex.py): `ietf/sync/rfcindex.py`
- [Blob replication](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/blobdb/replication.py): `ietf/blobdb/replication.py`
- [Blob storage](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/blobdb/storage.py): `ietf/blobdb/storage.py`
- [File storage](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/utils/storage.py): `ietf/utils/storage.py`
- [Application logging](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/utils/log.py): `ietf/utils/log.py`
- [Mail delivery](https://github.com/fg-tida/fg-tida-tracker/blob/main/ietf/utils/mail.py): `ietf/utils/mail.py`

### External integrations

- **GitHub App and Actions**
- **ITU mail transport**

### Other components

- **Members**
- **Administrators**

## Connections

- Members → Web application: use (evidence: `README.md`)
- Administrators → Web application: manage (evidence: `README.md`)
- Web application → Accounts and MFA: authenticate (evidence: `README.md`)
- Web application → Contribution submission: submit (evidence: `README.md`)
- Web application → Meetings and agendas: browse (evidence: `README.md`)
- Web application → Agenda interface: display agenda
- Administrators → FG-TIDA administration: configure (evidence: `README.md`)
- FG-TIDA administration → Documents and revisions: manage (evidence: `README.md`)
- FG-TIDA administration → Topic groups: manage (evidence: `README.md`)
- FG-TIDA administration → Meetings and agendas: manage (evidence: `README.md`)
- Members → Topic groups: join topic (evidence: `README.md`)
- Contribution submission → Topic groups: submit to (evidence: `README.md`)
- FG-TIDA administration → GitHub App and Actions: configure sync (evidence: `README.md`)
- GitHub App and Actions → Documents and revisions: sync versions (evidence: `README.md`)
- Accounts and MFA → People and identities: manage identities
- People and identities → Name registry: resolve names (evidence: `ietf/person/models.py`)
- Synchronization tasks → RFC index sync: run index sync (evidence: `ietf/sync/tasks.py`)
- Blob storage → Blob replication: queue replication (evidence: `ietf/blobdb/storage.py`)
- File storage → Blob storage: store files (evidence: `ietf/utils/storage.py`)
- Mail delivery → ITU mail transport: send mail (evidence: `README.md`)
- FG-TIDA administration → Mail delivery: queue notifications
