# dvtate/fiy architecture

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

- Interactive diagram: https://gitdiagram.com/dvtate/fiy
- Repository: https://github.com/dvtate/fiy

## Overview

FIY is a platform for hosting federated apps: requests enter its HTTP server and are handled through the server’s module system, while modules provide app-specific behavior. The repository also includes federation identity and peer support, several built-in apps, and a standalone asset CDN. The server session and several module implementations were not sampled, so links involving their internal dispatch are limited to relationships supported by the available excerpts and file tree.

Main entry points: [`mods/git/src/Routes/ApiRouter.hpp`](https://github.com/dvtate/fiy/blob/master/mods/git/src/Routes/ApiRouter.hpp) (Git routes and APIs), [`protocol/Server/Server.cpp`](https://github.com/dvtate/fiy/blob/master/protocol/Server/Server.cpp) (HTTP listener), [`protocol/mods/Mod.cpp`](https://github.com/dvtate/fiy/blob/master/protocol/mods/Mod.cpp) (Module lifecycle), [`protocol/peers/Peers.cpp`](https://github.com/dvtate/fiy/blob/master/protocol/peers/Peers.cpp) (Peer registry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_hosting["Server hosting"]
  node_server["Protocol server<br/>[main.cpp]"]
  node_listener["HTTP listener<br/>[Server.cpp]"]
  node_session["Request session<br/>[Session.cpp]"]
  node_router["Server router<br/>[Router.cpp]"]
  node_modmanager["Module manager<br/>[Mods.cpp]"]
  node_module["Module lifecycle<br/>[Mod.cpp]"]
  node_connector["Module connectors<br/>[ModConnector.hpp]"]
end

subgraph group_federation["Federation and identity"]
  node_users[("Local users<br/>[LocalUsers.cpp]")]
  node_peers[("Peer registry<br/>[Peers.cpp]")]
  node_peer_auth["Peer authentication<br/>[PeerAuth.cpp]"]
  node_http_client["HTTP clients<br/>[HttpsClient.hpp]"]
  node_oauth["OAuth app<br/>[mod.cpp]"]
  node_notifications["Notifications app<br/>[mod.cpp]"]
  node_proxy["Reverse proxy app<br/>[mod.cpp]"]
end

subgraph group_apps["Built-in apps"]
  node_git["Git app<br/>[mod.cpp]"]
  node_git_routes["Git routes and APIs<br/>[ApiRouter.hpp]"]
  node_git_repos["Repository operations<br/>[Repos.cpp]"]
  node_git_db[("Git app database<br/>[DB.cpp]")]
  node_contacts["Contacts app<br/>[mod.cpp]"]
  node_contacts_ui["Contacts interface<br/>[main.ts]"]
  node_social["Social app<br/>[Posts.cpp]"]
  node_mail["Mail app<br/>[mod.cpp]"]
end

subgraph group_assets["Assets and delivery"]
  node_static["Static file app<br/>[mod.cpp]"]
  node_cdn["Asset CDN<br/>[main.cpp]"]
end

node_user(("App user"))

node_user -->|"sends requests"| node_listener
node_listener -->|"opens session"| node_session
node_server -->|"starts listener"| node_listener
node_modmanager -->|"manages lifecycle"| node_module
node_module -->|"selects connector"| node_connector
node_git -->|"routes requests"| node_git_routes
node_git_routes -->|"uses repository operations"| node_git_repos
node_git_routes -->|"queries app data"| node_git_db
node_contacts_ui -.->|"uses app API"| node_contacts
node_peer_auth -.->|"checks peer state"| node_peers
node_http_client -.->|"contacts peers"| node_peers

click node_server "https://github.com/dvtate/fiy/blob/master/protocol/main.cpp"
click node_listener "https://github.com/dvtate/fiy/blob/master/protocol/Server/Server.cpp"
click node_session "https://github.com/dvtate/fiy/blob/master/protocol/Server/Session.cpp"
click node_router "https://github.com/dvtate/fiy/blob/master/protocol/Server/Router.cpp"
click node_modmanager "https://github.com/dvtate/fiy/blob/master/protocol/mods/Mods.cpp"
click node_module "https://github.com/dvtate/fiy/blob/master/protocol/mods/Mod.cpp"
click node_connector "https://github.com/dvtate/fiy/blob/master/protocol/mods/ModConnector.hpp"
click node_users "https://github.com/dvtate/fiy/blob/master/protocol/users/LocalUsers.cpp"
click node_peers "https://github.com/dvtate/fiy/blob/master/protocol/peers/Peers.cpp"
click node_peer_auth "https://github.com/dvtate/fiy/blob/master/protocol/peers/PeerAuth.cpp"
click node_http_client "https://github.com/dvtate/fiy/blob/master/protocol/HttpsClient.hpp"
click node_git "https://github.com/dvtate/fiy/blob/master/mods/git/src/mod.cpp"
click node_git_routes "https://github.com/dvtate/fiy/blob/master/mods/git/src/Routes/ApiRouter.hpp"
click node_git_repos "https://github.com/dvtate/fiy/blob/master/mods/git/src/Repos/Repos.cpp"
click node_git_db "https://github.com/dvtate/fiy/blob/master/mods/git/src/DB.cpp"
click node_contacts "https://github.com/dvtate/fiy/blob/master/mods/contacts/src/mod.cpp"
click node_contacts_ui "https://github.com/dvtate/fiy/blob/master/mods/contacts/frontend/src/main.ts"
click node_social "https://github.com/dvtate/fiy/blob/master/mods/social/src/Posts.cpp"
click node_mail "https://github.com/dvtate/fiy/blob/master/mods/mail/mod.cpp"
click node_static "https://github.com/dvtate/fiy/blob/master/mods/static/mod.cpp"
click node_cdn "https://github.com/dvtate/fiy/blob/master/mods/storage/cdn/main.cpp"
click node_oauth "https://github.com/dvtate/fiy/blob/master/mods/oauth/mod.cpp"
click node_notifications "https://github.com/dvtate/fiy/blob/master/mods/notifications/mod.cpp"
click node_proxy "https://github.com/dvtate/fiy/blob/master/mods/reverse_proxy/mod.cpp"

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_server,node_listener,node_session,node_router,node_modmanager,node_module,node_connector,node_user toneBlue
class node_users,node_peers,node_peer_auth,node_http_client,node_oauth,node_notifications,node_proxy toneAmber
class node_git,node_git_routes,node_git_repos,node_git_db,node_contacts,node_contacts_ui,node_social,node_mail toneMint
class node_static,node_cdn toneRose
```

## Components

### Server hosting

- [Protocol server](https://github.com/dvtate/fiy/blob/master/protocol/main.cpp): `protocol/main.cpp`
- [HTTP listener](https://github.com/dvtate/fiy/blob/master/protocol/Server/Server.cpp): `protocol/Server/Server.cpp`
- [Request session](https://github.com/dvtate/fiy/blob/master/protocol/Server/Session.cpp): `protocol/Server/Session.cpp`
- [Server router](https://github.com/dvtate/fiy/blob/master/protocol/Server/Router.cpp): `protocol/Server/Router.cpp`
- [Module manager](https://github.com/dvtate/fiy/blob/master/protocol/mods/Mods.cpp): `protocol/mods/Mods.cpp`
- [Module lifecycle](https://github.com/dvtate/fiy/blob/master/protocol/mods/Mod.cpp): `protocol/mods/Mod.cpp`
- [Module connectors](https://github.com/dvtate/fiy/blob/master/protocol/mods/ModConnector.hpp): `protocol/mods/ModConnector.hpp`

### Federation and identity

- [Local users](https://github.com/dvtate/fiy/blob/master/protocol/users/LocalUsers.cpp): `protocol/users/LocalUsers.cpp`
- [Peer registry](https://github.com/dvtate/fiy/blob/master/protocol/peers/Peers.cpp): `protocol/peers/Peers.cpp`
- [Peer authentication](https://github.com/dvtate/fiy/blob/master/protocol/peers/PeerAuth.cpp): `protocol/peers/PeerAuth.cpp`
- [HTTP clients](https://github.com/dvtate/fiy/blob/master/protocol/HttpsClient.hpp): `protocol/HttpsClient.hpp`
- [OAuth app](https://github.com/dvtate/fiy/blob/master/mods/oauth/mod.cpp): `mods/oauth/mod.cpp`
- [Notifications app](https://github.com/dvtate/fiy/blob/master/mods/notifications/mod.cpp): `mods/notifications/mod.cpp`
- [Reverse proxy app](https://github.com/dvtate/fiy/blob/master/mods/reverse_proxy/mod.cpp): `mods/reverse_proxy/mod.cpp`

### Built-in apps

- [Git app](https://github.com/dvtate/fiy/blob/master/mods/git/src/mod.cpp): `mods/git/src/mod.cpp`
- [Git routes and APIs](https://github.com/dvtate/fiy/blob/master/mods/git/src/Routes/ApiRouter.hpp): `mods/git/src/Routes/ApiRouter.hpp`
- [Repository operations](https://github.com/dvtate/fiy/blob/master/mods/git/src/Repos/Repos.cpp): `mods/git/src/Repos/Repos.cpp`
- [Git app database](https://github.com/dvtate/fiy/blob/master/mods/git/src/DB.cpp): `mods/git/src/DB.cpp`
- [Contacts app](https://github.com/dvtate/fiy/blob/master/mods/contacts/src/mod.cpp): `mods/contacts/src/mod.cpp`
- [Contacts interface](https://github.com/dvtate/fiy/blob/master/mods/contacts/frontend/src/main.ts): `mods/contacts/frontend/src/main.ts`
- [Social app](https://github.com/dvtate/fiy/blob/master/mods/social/src/Posts.cpp): `mods/social/src/Posts.cpp`
- [Mail app](https://github.com/dvtate/fiy/blob/master/mods/mail/mod.cpp): `mods/mail/mod.cpp`

### Assets and delivery

- [Static file app](https://github.com/dvtate/fiy/blob/master/mods/static/mod.cpp): `mods/static/mod.cpp`
- [Asset CDN](https://github.com/dvtate/fiy/blob/master/mods/storage/cdn/main.cpp): `mods/storage/cdn/main.cpp`

### Other components

- **App user**

## Connections

- App user → HTTP listener: sends requests
- HTTP listener → Request session: opens session
- Protocol server → HTTP listener: starts listener
- Module manager → Module lifecycle: manages lifecycle
- Module lifecycle → Module connectors: selects connector
- Git app → Git routes and APIs: routes requests
- Git routes and APIs → Repository operations: uses repository operations
- Git routes and APIs → Git app database: queries app data
- Contacts interface → Contacts app: uses app API
- Peer authentication → Peer registry: checks peer state
- HTTP clients → Peer registry: contacts peers
