# aossie-org/website architecture

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

- Interactive diagram: https://gitdiagram.com/aossie-org/website
- Repository: https://github.com/aossie-org/website

## Overview

AOSSIE’s website presents the organization, its projects, programs, and ideas through localized Next.js pages. Visitors browse the home page and project catalogue; the catalogue filters and groups project data and displays translated descriptions. Locale routing and message loading support the localized experience, while the shared layout and components provide navigation, theme, and scrolling behavior. The README documents additional localization, theme, responsive-design, and SEO capabilities. Some subsystem links rely on the README or import references in the source index; unsampled implementation details are not inferred.

Main entry points: [`src/app/[locale]/page.tsx`](https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/page.tsx) (Home page), [`src/components/PageWrapper.tsx`](https://github.com/aossie-org/website/blob/main/src/components/PageWrapper.tsx) (Page wrapper), [`src/lib/projectsData.ts`](https://github.com/aossie-org/website/blob/main/src/lib/projectsData.ts) (Project catalogue data), [`src/app/[locale]/layout.tsx`](https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/layout.tsx) (Locale layout)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Website pages"]
  node_home["Home page<br/>[page.tsx]"]
  node_about["About page<br/>[page.tsx]"]
  node_catalog["Projects catalogue<br/>[page.tsx]"]
  node_programs["Programs page<br/>[page.tsx]"]
  node_ideas["Ideas page<br/>[page.tsx]"]
  node_layout["Locale layout<br/>[layout.tsx]"]
  node_sitemap["Localized sitemap<br/>[sitemap.ts]"]
end

subgraph group_ui["Shared interface"]
  node_navbar["Navigation bar<br/>[Navbar.tsx]"]
  node_wrapper["Page wrapper<br/>[PageWrapper.tsx]"]
  node_hero["Home hero<br/>[Hero.tsx]"]
  node_projects["Home projects<br/>[Projects.tsx]"]
  node_sponsors["Sponsors<br/>[Sponsors.tsx]"]
  node_stats["Impact statistics<br/>[Stats.tsx]"]
  node_footer["Footer<br/>[Footer.tsx]"]
  node_theme["Theme provider<br/>[theme-provider.tsx]"]
  node_smooth["Smooth scrolling<br/>[lenis-provider.tsx]"]
end

subgraph group_i18n["Localization"]
  node_routing["Locale routing<br/>[routing.ts]"]
  node_languages["Language definitions<br/>[languages.ts]"]
  node_messages["UI translations<br/>[messages.ts]"]
  node_request["Translation requests<br/>[request.ts]"]
  node_navigation["Localized navigation<br/>[navigation.ts]"]
end

subgraph group_content["Content data"]
  node_projectdata["Project catalogue data<br/>[projectsData.ts]"]
  node_projecttranslations["Project translations"]
  node_translationindex["Translation registry<br/>[index.ts]"]
  node_links["Shared links<br/>[links.ts]"]
end

node_visitor(("Visitor"))

node_visitor -->|"opens"| node_home
node_visitor -->|"browses"| node_catalog
node_home -->|"renders"| node_navbar
node_home -->|"renders"| node_hero
node_home -->|"loads"| node_projects
node_home -->|"renders"| node_sponsors
node_home -->|"loads"| node_stats
node_home -->|"renders"| node_footer
node_catalog -->|"renders"| node_wrapper
node_catalog -->|"reads"| node_projectdata
node_catalog -->|"loads"| node_translationindex
node_about -->|"renders"| node_wrapper
node_about -->|"reads"| node_projectdata
node_about -->|"reads"| node_links
node_programs -->|"renders"| node_wrapper
node_programs -->|"reads"| node_projectdata
node_programs -->|"reads"| node_links
node_wrapper -->|"renders"| node_navbar
node_wrapper -->|"renders"| node_footer
node_projects -->|"reads"| node_projectdata
node_projects -->|"links with"| node_navigation
node_sponsors -->|"reads"| node_links
node_navbar -->|"uses"| node_navigation
node_navbar -->|"reads"| node_languages
node_layout -->|"uses"| node_routing
node_layout -->|"loads"| node_messages
node_layout -->|"provides"| node_theme
node_layout -->|"provides"| node_smooth
node_routing -->|"configures"| node_languages
node_request -->|"loads"| node_messages
node_navigation -->|"uses"| node_routing
node_sitemap -->|"uses"| node_routing
node_translationindex -->|"keys translations"| node_projectdata
node_translationindex -->|"registers"| node_projecttranslations

click node_home "https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/page.tsx"
click node_about "https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/about/page.tsx"
click node_catalog "https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/projects/page.tsx"
click node_programs "https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/programs/page.tsx"
click node_ideas "https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/ideas/page.tsx"
click node_layout "https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/layout.tsx"
click node_sitemap "https://github.com/aossie-org/website/blob/main/src/app/sitemap.ts"
click node_navbar "https://github.com/aossie-org/website/blob/main/src/components/Navbar.tsx"
click node_wrapper "https://github.com/aossie-org/website/blob/main/src/components/PageWrapper.tsx"
click node_hero "https://github.com/aossie-org/website/blob/main/src/components/Hero.tsx"
click node_projects "https://github.com/aossie-org/website/blob/main/src/components/Projects.tsx"
click node_sponsors "https://github.com/aossie-org/website/blob/main/src/components/Sponsors.tsx"
click node_stats "https://github.com/aossie-org/website/blob/main/src/components/Stats.tsx"
click node_footer "https://github.com/aossie-org/website/blob/main/src/components/Footer.tsx"
click node_theme "https://github.com/aossie-org/website/blob/main/src/components/providers/theme-provider.tsx"
click node_smooth "https://github.com/aossie-org/website/blob/main/src/components/providers/lenis-provider.tsx"
click node_routing "https://github.com/aossie-org/website/blob/main/src/i18n/routing.ts"
click node_languages "https://github.com/aossie-org/website/blob/main/src/config/languages.ts"
click node_messages "https://github.com/aossie-org/website/blob/main/src/i18n/messages.ts"
click node_request "https://github.com/aossie-org/website/blob/main/src/i18n/request.ts"
click node_navigation "https://github.com/aossie-org/website/blob/main/src/i18n/navigation.ts"
click node_projectdata "https://github.com/aossie-org/website/blob/main/src/lib/projectsData.ts"
click node_projecttranslations "https://github.com/aossie-org/website/tree/main/src/lib/projectTranslations"
click node_translationindex "https://github.com/aossie-org/website/blob/main/src/lib/projectTranslations/index.ts"
click node_links "https://github.com/aossie-org/website/blob/main/src/lib/links.ts"

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_home,node_about,node_catalog,node_programs,node_ideas,node_layout,node_sitemap toneBlue
class node_navbar,node_wrapper,node_hero,node_projects,node_sponsors,node_stats,node_footer,node_theme,node_smooth toneAmber
class node_routing,node_languages,node_messages,node_request,node_navigation toneMint
class node_projectdata,node_projecttranslations,node_translationindex,node_links toneRose
class node_visitor toneIndigo
```

## Components

### Website pages

- [Home page](https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/page.tsx): `src/app/[locale]/page.tsx`
- [About page](https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/about/page.tsx): `src/app/[locale]/about/page.tsx`
- [Projects catalogue](https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/projects/page.tsx): `src/app/[locale]/projects/page.tsx`
- [Programs page](https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/programs/page.tsx): `src/app/[locale]/programs/page.tsx`
- [Ideas page](https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/ideas/page.tsx): `src/app/[locale]/ideas/page.tsx`
- [Locale layout](https://github.com/aossie-org/website/blob/main/src/app/%5Blocale%5D/layout.tsx): `src/app/[locale]/layout.tsx`
- [Localized sitemap](https://github.com/aossie-org/website/blob/main/src/app/sitemap.ts): `src/app/sitemap.ts`

### Shared interface

- [Navigation bar](https://github.com/aossie-org/website/blob/main/src/components/Navbar.tsx): `src/components/Navbar.tsx`
- [Page wrapper](https://github.com/aossie-org/website/blob/main/src/components/PageWrapper.tsx): `src/components/PageWrapper.tsx`
- [Home hero](https://github.com/aossie-org/website/blob/main/src/components/Hero.tsx): `src/components/Hero.tsx`
- [Home projects](https://github.com/aossie-org/website/blob/main/src/components/Projects.tsx): `src/components/Projects.tsx`
- [Sponsors](https://github.com/aossie-org/website/blob/main/src/components/Sponsors.tsx): `src/components/Sponsors.tsx`
- [Impact statistics](https://github.com/aossie-org/website/blob/main/src/components/Stats.tsx): `src/components/Stats.tsx`
- [Footer](https://github.com/aossie-org/website/blob/main/src/components/Footer.tsx): `src/components/Footer.tsx`
- [Theme provider](https://github.com/aossie-org/website/blob/main/src/components/providers/theme-provider.tsx): `src/components/providers/theme-provider.tsx`
- [Smooth scrolling](https://github.com/aossie-org/website/blob/main/src/components/providers/lenis-provider.tsx): `src/components/providers/lenis-provider.tsx`

### Localization

- [Locale routing](https://github.com/aossie-org/website/blob/main/src/i18n/routing.ts): `src/i18n/routing.ts`
- [Language definitions](https://github.com/aossie-org/website/blob/main/src/config/languages.ts): `src/config/languages.ts`
- [UI translations](https://github.com/aossie-org/website/blob/main/src/i18n/messages.ts): `src/i18n/messages.ts`
- [Translation requests](https://github.com/aossie-org/website/blob/main/src/i18n/request.ts): `src/i18n/request.ts`
- [Localized navigation](https://github.com/aossie-org/website/blob/main/src/i18n/navigation.ts): `src/i18n/navigation.ts`

### Content data

- [Project catalogue data](https://github.com/aossie-org/website/blob/main/src/lib/projectsData.ts): `src/lib/projectsData.ts`
- [Project translations](https://github.com/aossie-org/website/tree/main/src/lib/projectTranslations): `src/lib/projectTranslations`
- [Translation registry](https://github.com/aossie-org/website/blob/main/src/lib/projectTranslations/index.ts): `src/lib/projectTranslations/index.ts`
- [Shared links](https://github.com/aossie-org/website/blob/main/src/lib/links.ts): `src/lib/links.ts`

### Other components

- **Visitor**

## Connections

- Visitor → Home page: opens
- Visitor → Projects catalogue: browses
- Home page → Navigation bar: renders (evidence: `src/app/[locale]/page.tsx`)
- Home page → Home hero: renders (evidence: `src/app/[locale]/page.tsx`)
- Home page → Home projects: loads (evidence: `src/app/[locale]/page.tsx`)
- Home page → Sponsors: renders (evidence: `src/app/[locale]/page.tsx`)
- Home page → Impact statistics: loads (evidence: `src/app/[locale]/page.tsx`)
- Home page → Footer: renders (evidence: `src/app/[locale]/page.tsx`)
- Projects catalogue → Page wrapper: renders (evidence: `src/app/[locale]/projects/page.tsx`)
- Projects catalogue → Project catalogue data: reads (evidence: `src/app/[locale]/projects/page.tsx`)
- Projects catalogue → Translation registry: loads (evidence: `src/app/[locale]/projects/page.tsx`)
- About page → Page wrapper: renders (evidence: `src/app/[locale]/about/page.tsx`)
- About page → Project catalogue data: reads (evidence: `src/app/[locale]/about/page.tsx`)
- About page → Shared links: reads (evidence: `src/app/[locale]/about/page.tsx`)
- Programs page → Page wrapper: renders (evidence: `src/app/[locale]/programs/page.tsx`)
- Programs page → Project catalogue data: reads (evidence: `src/app/[locale]/programs/page.tsx`)
- Programs page → Shared links: reads (evidence: `src/app/[locale]/programs/page.tsx`)
- Page wrapper → Navigation bar: renders (evidence: `src/components/PageWrapper.tsx`)
- Page wrapper → Footer: renders (evidence: `src/components/PageWrapper.tsx`)
- Home projects → Project catalogue data: reads (evidence: `src/components/Projects.tsx`)
- Home projects → Localized navigation: links with (evidence: `src/components/Projects.tsx`)
- Sponsors → Shared links: reads (evidence: `src/components/Sponsors.tsx`)
- Navigation bar → Localized navigation: uses (evidence: `src/components/Navbar.tsx`)
- Navigation bar → Language definitions: reads (evidence: `src/components/Navbar.tsx`)
- Locale layout → Locale routing: uses (evidence: `src/app/[locale]/layout.tsx`)
- Locale layout → UI translations: loads (evidence: `src/app/[locale]/layout.tsx`)
- Locale layout → Theme provider: provides (evidence: `src/app/[locale]/layout.tsx`)
- Locale layout → Smooth scrolling: provides (evidence: `src/app/[locale]/layout.tsx`)
- Locale routing → Language definitions: configures (evidence: `src/i18n/routing.ts`)
- Translation requests → UI translations: loads (evidence: `src/i18n/request.ts`)
- Localized navigation → Locale routing: uses (evidence: `src/i18n/navigation.ts`)
- Localized sitemap → Locale routing: uses (evidence: `src/app/sitemap.ts`)
- Translation registry → Project catalogue data: keys translations (evidence: `src/lib/projectTranslations/index.ts`)
- Translation registry → Project translations: registers (evidence: `src/lib/projectTranslations/index.ts`)
