# ahmednajibe/portfolio architecture

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

- Interactive diagram: https://gitdiagram.com/ahmednajibe/portfolio
- Repository: https://github.com/ahmednajibe/portfolio

## Overview

This is a personal portfolio website presenting its owner’s profile, skills, projects, teaching, education, and contact information. A visitor views the portfolio, interacts with its navigation and language controls, and can explore project imagery and a CV file. The JavaScript excerpt supports interactive page behavior; the README is empty and the HTML and CSS were not sampled, so links and presentation details not evidenced there are omitted.

Main entry points: [`index.html`](https://github.com/ahmednajibe/portfolio/blob/main/index.html) (Portfolio page), [`script.js`](https://github.com/ahmednajibe/portfolio/blob/main/script.js) (Page behavior), [`styles.css`](https://github.com/ahmednajibe/portfolio/blob/main/styles.css) (Page styling), [`images`](https://github.com/ahmednajibe/portfolio/tree/main/images) (Project imagery)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_site["Portfolio site"]
  node_page["Portfolio page<br/>[index.html]"]
  node_styles["Page styling<br/>[styles.css]"]
end

subgraph group_interaction["Page interactions"]
  node_script["Page behavior<br/>[script.js]"]
  node_navigation["Navigation<br/>[script.js]"]
  node_language["Language toggle<br/>[script.js]"]
  node_scroll["Scroll behavior<br/>[script.js]"]
  node_animations["Reveal animations<br/>[script.js]"]
  node_pointer["Pointer effects<br/>[script.js]"]
end

subgraph group_assets["Portfolio assets"]
  node_projects["Project imagery"]
  node_cv["CV document<br/>[cv.pdf]"]
end

node_visitor(("Visitor"))

node_visitor -->|"opens"| node_page
node_page -->|"runs"| node_script
node_page -->|"uses"| node_styles
node_script -->|"initializes"| node_navigation
node_script -->|"initializes"| node_language
node_script -->|"initializes"| node_scroll
node_script -->|"initializes"| node_animations
node_script -->|"initializes"| node_pointer
node_navigation -->|"updates"| node_page
node_language -->|"updates"| node_page
node_scroll -->|"updates"| node_page
node_animations -->|"updates"| node_page
node_pointer -->|"updates"| node_page
node_page -->|"presents"| node_projects
node_page -->|"links"| node_cv

click node_page "https://github.com/ahmednajibe/portfolio/blob/main/index.html"
click node_styles "https://github.com/ahmednajibe/portfolio/blob/main/styles.css"
click node_script "https://github.com/ahmednajibe/portfolio/blob/main/script.js"
click node_navigation "https://github.com/ahmednajibe/portfolio/blob/main/script.js"
click node_language "https://github.com/ahmednajibe/portfolio/blob/main/script.js"
click node_scroll "https://github.com/ahmednajibe/portfolio/blob/main/script.js"
click node_animations "https://github.com/ahmednajibe/portfolio/blob/main/script.js"
click node_pointer "https://github.com/ahmednajibe/portfolio/blob/main/script.js"
click node_projects "https://github.com/ahmednajibe/portfolio/tree/main/images"
click node_cv "https://github.com/ahmednajibe/portfolio/blob/main/cv/cv.pdf"

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_page,node_styles toneBlue
class node_script,node_navigation,node_language,node_scroll,node_animations,node_pointer toneAmber
class node_projects,node_cv toneMint
class node_visitor toneIndigo
```

## Components

### Portfolio site

- [Portfolio page](https://github.com/ahmednajibe/portfolio/blob/main/index.html): `index.html`
- [Page styling](https://github.com/ahmednajibe/portfolio/blob/main/styles.css): `styles.css`

### Page interactions

- [Page behavior](https://github.com/ahmednajibe/portfolio/blob/main/script.js): `script.js`
- [Navigation](https://github.com/ahmednajibe/portfolio/blob/main/script.js): `script.js`
- [Language toggle](https://github.com/ahmednajibe/portfolio/blob/main/script.js): `script.js`
- [Scroll behavior](https://github.com/ahmednajibe/portfolio/blob/main/script.js): `script.js`
- [Reveal animations](https://github.com/ahmednajibe/portfolio/blob/main/script.js): `script.js`
- [Pointer effects](https://github.com/ahmednajibe/portfolio/blob/main/script.js): `script.js`

### Portfolio assets

- [Project imagery](https://github.com/ahmednajibe/portfolio/tree/main/images): `images`
- [CV document](https://github.com/ahmednajibe/portfolio/blob/main/cv/cv.pdf): `cv/cv.pdf`

### Other components

- **Visitor**

## Connections

- Visitor → Portfolio page: opens
- Portfolio page → Page behavior: runs
- Portfolio page → Page styling: uses
- Page behavior → Navigation: initializes
- Page behavior → Language toggle: initializes
- Page behavior → Scroll behavior: initializes
- Page behavior → Reveal animations: initializes
- Page behavior → Pointer effects: initializes
- Navigation → Portfolio page: updates
- Language toggle → Portfolio page: updates
- Scroll behavior → Portfolio page: updates
- Reveal animations → Portfolio page: updates
- Pointer effects → Portfolio page: updates
- Portfolio page → Project imagery: presents
- Portfolio page → CV document: links
