# luoh07/2026 architecture

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

- Interactive diagram: https://gitdiagram.com/luoh07/2026
- Repository: https://github.com/luoh07/2026

## Overview

This is a Flask/Jinja wiki for XMU-China’s 2026 iGEM team. A visitor requests a page; Flask selects and renders its template with shared layout and, for Members, member data. The rendered site uses mapped iGEM-hosted assets and browser-side interactions. The repository also supports Frozen-Flask static export. The graph reflects the README and sampled runtime code; unsampled template wiring is shown only where documented or directly supported.

Main entry points: [`app.py`](https://github.com/luoh07/2026/blob/main/app.py) (Flask app), [`wiki/pages`](https://github.com/luoh07/2026/tree/main/wiki/pages) (Wiki pages), [`wiki/pages/members/index.html`](https://github.com/luoh07/2026/blob/main/wiki/pages/members/index.html) (Members page), [`wiki/layout.html`](https://github.com/luoh07/2026/blob/main/wiki/layout.html) (Shared layout)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Wiki delivery"]
  node_app["Flask app<br/>[app.py]"]
  node_routes["Page routes<br/>[app.py]"]
  node_layout["Shared layout<br/>[layout.html]"]
  node_navigation["Header and footer<br/>[menu.html]"]
end

subgraph group_content["Wiki content"]
  node_pagecontent["Wiki pages"]
  node_members["Members page<br/>[index.html]"]
  node_membersections["Member sections"]
  node_memberdata["Member data<br/>[members.json]"]
end

subgraph group_assets["Assets and interactions"]
  node_assetmap["Asset map<br/>[asset-map.json]"]
  node_assetresolver["Browser asset resolver<br/>[asset-resolver.js]"]
  node_igemcdn["iGEM asset host"]
  node_memberhover["Member card effects"]
  node_description["Description interactions<br/>[description.js]"]
  node_titlegrid["Title grid<br/>[title.js]"]
  node_sitecss["Site styles"]
  node_fonts["Font stylesheet<br/>[fonts.css]"]
end

subgraph group_export["Static export"]
  node_freezer["Frozen-Flask exporter<br/>[app.py]"]
  node_staticoutput["Static site output"]
end

node_visitor(("Site visitor"))

node_visitor -->|"requests page"| node_routes
node_routes -->|"renders template"| node_pagecontent
node_routes -->|"renders Members"| node_members
node_app -->|"loads data"| node_memberdata
node_members -->|"includes sections"| node_membersections
node_layout -->|"uses shared chrome"| node_navigation
node_app -->|"loads mappings"| node_assetmap
node_assetresolver -->|"resolves asset URLs"| node_igemcdn
node_memberhover -.->|"fetches mapped assets"| node_igemcdn
node_pagecontent -->|"uses styles"| node_sitecss
node_description -->|"enhances page"| node_pagecontent
node_titlegrid -->|"draws title grid"| node_members
node_app -->|"renders stylesheet"| node_fonts
node_app -->|"registers export"| node_freezer
node_freezer -->|"freezes pages"| node_pagecontent
node_freezer -->|"writes site"| node_staticoutput

click node_app "https://github.com/luoh07/2026/blob/main/app.py"
click node_routes "https://github.com/luoh07/2026/blob/main/app.py"
click node_layout "https://github.com/luoh07/2026/blob/main/wiki/layout.html"
click node_navigation "https://github.com/luoh07/2026/blob/main/wiki/menu.html"
click node_pagecontent "https://github.com/luoh07/2026/tree/main/wiki/pages"
click node_members "https://github.com/luoh07/2026/blob/main/wiki/pages/members/index.html"
click node_membersections "https://github.com/luoh07/2026/tree/main/wiki/pages/members"
click node_memberdata "https://github.com/luoh07/2026/blob/main/data/members.json"
click node_assetmap "https://github.com/luoh07/2026/blob/main/asset-map.json"
click node_assetresolver "https://github.com/luoh07/2026/blob/main/static/asset-resolver.js"
click node_memberhover "https://github.com/luoh07/2026/blob/main/static/members/sticky-note-hover.js"
click node_description "https://github.com/luoh07/2026/blob/main/static/description/description.js"
click node_titlegrid "https://github.com/luoh07/2026/blob/main/static/members/title/title.js"
click node_sitecss "https://github.com/luoh07/2026/tree/main/static"
click node_fonts "https://github.com/luoh07/2026/blob/main/wiki/fonts.css"
click node_freezer "https://github.com/luoh07/2026/blob/main/app.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_app,node_routes,node_layout,node_navigation toneBlue
class node_pagecontent,node_members,node_membersections,node_memberdata toneAmber
class node_assetmap,node_assetresolver,node_igemcdn,node_memberhover,node_description,node_titlegrid,node_sitecss,node_fonts toneMint
class node_freezer,node_staticoutput toneRose
class node_visitor toneIndigo
```

## Components

### Wiki delivery

- [Flask app](https://github.com/luoh07/2026/blob/main/app.py): `app.py`
- [Page routes](https://github.com/luoh07/2026/blob/main/app.py): `app.py`
- [Shared layout](https://github.com/luoh07/2026/blob/main/wiki/layout.html): `wiki/layout.html`
- [Header and footer](https://github.com/luoh07/2026/blob/main/wiki/menu.html): `wiki/menu.html`

### Wiki content

- [Wiki pages](https://github.com/luoh07/2026/tree/main/wiki/pages): `wiki/pages`
- [Members page](https://github.com/luoh07/2026/blob/main/wiki/pages/members/index.html): `wiki/pages/members/index.html`
- [Member sections](https://github.com/luoh07/2026/tree/main/wiki/pages/members): `wiki/pages/members`
- [Member data](https://github.com/luoh07/2026/blob/main/data/members.json): `data/members.json`

### Assets and interactions

- [Asset map](https://github.com/luoh07/2026/blob/main/asset-map.json): `asset-map.json`
- [Browser asset resolver](https://github.com/luoh07/2026/blob/main/static/asset-resolver.js): `static/asset-resolver.js`
- **iGEM asset host**
- [Member card effects](https://github.com/luoh07/2026/blob/main/static/members/sticky-note-hover.js): `static/members/sticky-note-hover.js`
- [Description interactions](https://github.com/luoh07/2026/blob/main/static/description/description.js): `static/description/description.js`
- [Title grid](https://github.com/luoh07/2026/blob/main/static/members/title/title.js): `static/members/title/title.js`
- [Site styles](https://github.com/luoh07/2026/tree/main/static): `static`
- [Font stylesheet](https://github.com/luoh07/2026/blob/main/wiki/fonts.css): `wiki/fonts.css`

### Static export

- [Frozen-Flask exporter](https://github.com/luoh07/2026/blob/main/app.py): `app.py`
- **Static site output**

### Other components

- **Site visitor**

## Connections

- Site visitor → Page routes: requests page
- Page routes → Wiki pages: renders template
- Page routes → Members page: renders Members
- Flask app → Member data: loads data
- Members page → Member sections: includes sections
- Shared layout → Header and footer: uses shared chrome
- Flask app → Asset map: loads mappings
- Browser asset resolver → iGEM asset host: resolves asset URLs
- Member card effects → iGEM asset host: fetches mapped assets
- Wiki pages → Site styles: uses styles
- Description interactions → Wiki pages: enhances page
- Title grid → Members page: draws title grid
- Flask app → Font stylesheet: renders stylesheet
- Flask app → Frozen-Flask exporter: registers export
- Frozen-Flask exporter → Wiki pages: freezes pages
- Frozen-Flask exporter → Static site output: writes site
