# sitcon-tw/2026 architecture

> Architecture diagram of the GitHub repository sitcon-tw/2026, 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/sitcon-tw/2026
- Repository: https://github.com/sitcon-tw/2026

## Overview

SITCON 2026 is a bilingual conference website: visitors browse event information, the agenda, venue, and team pages, with the homepage presenting the event and its major calls to action. The README also describes agenda-session details and sharing, interactive venue maps, team exploration, and demo-showcase content. The tree supports these page and component areas, while sampled code confirms agenda normalization and homepage vortex logic. Most page-to-component wiring is unsampled, so the graph shows the documented product areas without asserting uncertain calls; this is a static-site product, not a deployment map.

Main entry points: [`src/pages`](https://github.com/sitcon-tw/2026/tree/main/src/pages) (Page routes), [`src/pages/index.astro`](https://github.com/sitcon-tw/2026/blob/main/src/pages/index.astro) (Homepage sections), [`src/pages/venue.astro`](https://github.com/sitcon-tw/2026/blob/main/src/pages/venue.astro) (Venue map page), [`src/pages/team`](https://github.com/sitcon-tw/2026/tree/main/src/pages/team) (Team pages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_site["Site shell"]
  node_routes["Page routes"]
  node_layout["Shared layout<br/>[Layout.astro]"]
  node_translations["Locale content"]
end

subgraph group_home["Homepage"]
  node_homepage["Homepage sections<br/>[index.astro]"]
  node_hero["3D hero"]
  node_homecontent["Home sections"]
end

subgraph group_agenda["Agenda"]
  node_agenda_pages["Agenda pages"]
  node_agenda_ui["Agenda interface"]
  node_agenda_data["Session data<br/>[sessions.json]"]
  node_agenda_normalize["Agenda normalization<br/>[agenda.ts]"]
  node_agenda_types["Agenda schema<br/>[agenda.ts]"]
end

subgraph group_event["Event experience"]
  node_info_pages["Event information"]
  node_venue_page["Venue map page<br/>[venue.astro]"]
  node_venue_ui["Venue interface"]
  node_venue_data["Venue content<br/>[venue.json]"]
end

subgraph group_people["People and content"]
  node_team_pages["Team pages"]
  node_team_ui["Team interface"]
  node_team_data["Team content<br/>[team.json]"]
  node_other_pages["Other pages"]
  node_content_data["Site content"]
end

node_visitor(("Visitor"))

node_visitor -->|"opens pages"| node_routes
node_routes -->|"renders with"| node_layout
node_routes -->|"serves home"| node_homepage
node_routes -->|"serves agenda"| node_agenda_pages
node_routes -->|"serves info"| node_info_pages
node_routes -->|"serves venue"| node_venue_page
node_routes -->|"serves team"| node_team_pages
node_routes -->|"serves more"| node_other_pages
node_layout -->|"uses locale text"| node_translations
node_homepage -->|"renders"| node_hero
node_homepage -->|"renders"| node_homecontent
node_agenda_pages -->|"presents agenda"| node_agenda_ui
node_agenda_data -->|"provides sessions"| node_agenda_normalize
node_agenda_normalize -->|"uses schema"| node_agenda_types
node_venue_page -->|"presents map"| node_venue_ui
node_venue_page -->|"uses venue data"| node_venue_data
node_team_pages -->|"presents members"| node_team_ui
node_team_pages -->|"uses team data"| node_team_data
node_other_pages -.->|"uses content"| node_content_data

click node_routes "https://github.com/sitcon-tw/2026/tree/main/src/pages"
click node_layout "https://github.com/sitcon-tw/2026/blob/main/src/layout/Layout.astro"
click node_translations "https://github.com/sitcon-tw/2026/tree/main/src/i18n"
click node_homepage "https://github.com/sitcon-tw/2026/blob/main/src/pages/index.astro"
click node_hero "https://github.com/sitcon-tw/2026/tree/main/src/components/index/Hero"
click node_homecontent "https://github.com/sitcon-tw/2026/tree/main/src/components/index"
click node_agenda_pages "https://github.com/sitcon-tw/2026/tree/main/src/pages/agenda"
click node_agenda_ui "https://github.com/sitcon-tw/2026/tree/main/src/components/agenda"
click node_agenda_data "https://github.com/sitcon-tw/2026/blob/main/public/sessions.json"
click node_agenda_normalize "https://github.com/sitcon-tw/2026/blob/main/src/utils/agenda.ts"
click node_agenda_types "https://github.com/sitcon-tw/2026/blob/main/src/types/agenda.ts"
click node_info_pages "https://github.com/sitcon-tw/2026/tree/main/src/pages/info"
click node_venue_page "https://github.com/sitcon-tw/2026/blob/main/src/pages/venue.astro"
click node_venue_ui "https://github.com/sitcon-tw/2026/tree/main/src/components/venue"
click node_venue_data "https://github.com/sitcon-tw/2026/blob/main/src/data/venue.json"
click node_team_pages "https://github.com/sitcon-tw/2026/tree/main/src/pages/team"
click node_team_ui "https://github.com/sitcon-tw/2026/tree/main/src/components/page"
click node_team_data "https://github.com/sitcon-tw/2026/blob/main/src/data/team.json"
click node_other_pages "https://github.com/sitcon-tw/2026/tree/main/src/pages"
click node_content_data "https://github.com/sitcon-tw/2026/tree/main/src/data"

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_routes,node_layout,node_translations toneBlue
class node_homepage,node_hero,node_homecontent toneAmber
class node_agenda_pages,node_agenda_ui,node_agenda_data,node_agenda_normalize,node_agenda_types toneMint
class node_info_pages,node_venue_page,node_venue_ui,node_venue_data toneRose
class node_team_pages,node_team_ui,node_team_data,node_other_pages,node_content_data,node_visitor toneIndigo
```

## Components

### Site shell

- [Page routes](https://github.com/sitcon-tw/2026/tree/main/src/pages): `src/pages`
- [Shared layout](https://github.com/sitcon-tw/2026/blob/main/src/layout/Layout.astro): `src/layout/Layout.astro`
- [Locale content](https://github.com/sitcon-tw/2026/tree/main/src/i18n): `src/i18n`

### Homepage

- [Homepage sections](https://github.com/sitcon-tw/2026/blob/main/src/pages/index.astro): `src/pages/index.astro`
- [3D hero](https://github.com/sitcon-tw/2026/tree/main/src/components/index/Hero): `src/components/index/Hero`
- [Home sections](https://github.com/sitcon-tw/2026/tree/main/src/components/index): `src/components/index`

### Agenda

- [Agenda pages](https://github.com/sitcon-tw/2026/tree/main/src/pages/agenda): `src/pages/agenda`
- [Agenda interface](https://github.com/sitcon-tw/2026/tree/main/src/components/agenda): `src/components/agenda`
- [Session data](https://github.com/sitcon-tw/2026/blob/main/public/sessions.json): `public/sessions.json`
- [Agenda normalization](https://github.com/sitcon-tw/2026/blob/main/src/utils/agenda.ts): `src/utils/agenda.ts`
- [Agenda schema](https://github.com/sitcon-tw/2026/blob/main/src/types/agenda.ts): `src/types/agenda.ts`

### Event experience

- [Event information](https://github.com/sitcon-tw/2026/tree/main/src/pages/info): `src/pages/info`
- [Venue map page](https://github.com/sitcon-tw/2026/blob/main/src/pages/venue.astro): `src/pages/venue.astro`
- [Venue interface](https://github.com/sitcon-tw/2026/tree/main/src/components/venue): `src/components/venue`
- [Venue content](https://github.com/sitcon-tw/2026/blob/main/src/data/venue.json): `src/data/venue.json`

### People and content

- [Team pages](https://github.com/sitcon-tw/2026/tree/main/src/pages/team): `src/pages/team`
- [Team interface](https://github.com/sitcon-tw/2026/tree/main/src/components/page): `src/components/page`
- [Team content](https://github.com/sitcon-tw/2026/blob/main/src/data/team.json): `src/data/team.json`
- [Other pages](https://github.com/sitcon-tw/2026/tree/main/src/pages): `src/pages`
- [Site content](https://github.com/sitcon-tw/2026/tree/main/src/data): `src/data`

### Other components

- **Visitor**

## Connections

- Visitor → Page routes: opens pages
- Page routes → Shared layout: renders with
- Page routes → Homepage sections: serves home
- Page routes → Agenda pages: serves agenda
- Page routes → Event information: serves info
- Page routes → Venue map page: serves venue
- Page routes → Team pages: serves team
- Page routes → Other pages: serves more
- Shared layout → Locale content: uses locale text
- Homepage sections → 3D hero: renders
- Homepage sections → Home sections: renders
- Agenda pages → Agenda interface: presents agenda
- Session data → Agenda normalization: provides sessions
- Agenda normalization → Agenda schema: uses schema
- Venue map page → Venue interface: presents map
- Venue map page → Venue content: uses venue data
- Team pages → Team interface: presents members
- Team pages → Team content: uses team data
- Other pages → Site content: uses content
