# mohamedyaakoubi/mohamedyakoubi architecture

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

- Interactive diagram: https://gitdiagram.com/mohamedyaakoubi/mohamedyakoubi
- Repository: https://github.com/mohamedyaakoubi/mohamedyakoubi

## Overview

This is a multilingual personal portfolio whose main visitor journey is browsing localized portfolio content, projects, services, and blog posts; it also presents SheetDiff documentation and pricing. Separate runtime branches provide an AI CV chatbot, a diff API, and SEO discovery through sitemap and IndexNow. The graph includes the documented simulator and API-guide subsystems, with edges limited to relationships visible in excerpts or the README; unsampled route wiring is not inferred.

Main entry points: [`src/app/[locale]`](https://github.com/mohamedyaakoubi/mohamedyakoubi/tree/master/src/app/%5Blocale%5D) (Localized pages), [`src/components/LiveSimulator/index.tsx`](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/LiveSimulator/index.tsx) (Diff simulator), [`src/app/api/chat/route.ts`](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/app/api/chat/route.ts) (Chat endpoint), [`src/app/api/indexnow/route.ts`](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/app/api/indexnow/route.ts) (IndexNow endpoint)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portfolio["Portfolio experience"]
  node_locale_pages["Localized pages"]
  node_home["Portfolio home<br/>[HomeClient.tsx]"]
  node_experience["Experience"]
  node_services["Services<br/>[ServicesClient.tsx]"]
  node_projects["Projects<br/>[ProjectsClient.tsx]"]
  node_blog["Multilingual blog"]
  node_contact["Contact page<br/>[page.tsx]"]
end

subgraph group_sheetdiff["SheetDiff product"]
  node_sheetdiff_page["SheetDiff landing"]
  node_sheetdiff_content["Product content<br/>[sheetdiff-i18n.ts]"]
  node_api_docs["Structural API guide"]
  node_api_primitives["API doc primitives"]
  node_simulator["Diff simulator<br/>[index.tsx]"]
  node_sim_parts["Simulator views<br/>[ResultRow.tsx]"]
  node_sim_samples["Simulator samples<br/>[samples.ts]"]
  node_sim_i18n["Simulator translations"]
  node_guide_pages["Product guides"]
  node_guide_content["Guide translations"]
  node_diff_api["Diff API endpoint<br/>[route.ts]"]
  node_precision_guide["Engine precision guide"]
  node_precision_content["Precision content"]
end

subgraph group_assistant["AI assistant"]
  node_chat_ui["Chat interface<br/>[Chat.tsx]"]
  node_chat_api["Chat endpoint<br/>[route.ts]"]
  node_cv_data["Localized CV"]
end

subgraph group_discovery["Search discovery"]
  node_sitemap["Dynamic sitemap<br/>[sitemap.ts]"]
  node_indexnow["IndexNow endpoint<br/>[route.ts]"]
  node_service_worker["Offline cache<br/>[service-worker.js]"]
end

subgraph group_i18n["Localization"]
  node_language_state["Language context"]
  node_translations["Locale translations<br/>[translations.ts]"]
end

node_visitor(("Site visitor"))
node_mistral["Mistral AI"]
node_search_engines["Search engines"]

node_visitor -->|"browses"| node_locale_pages
node_locale_pages -->|"renders"| node_home
node_locale_pages -->|"renders"| node_experience
node_locale_pages -->|"renders"| node_services
node_locale_pages -.->|"renders"| node_projects
node_visitor -->|"reads posts"| node_blog
node_visitor -.->|"opens"| node_contact
node_visitor -.->|"asks questions"| node_chat_ui
node_chat_ui -.->|"sends messages"| node_chat_api
node_chat_api -->|"reads CV"| node_cv_data
node_chat_api -->|"queries"| node_mistral
node_visitor -->|"explores product"| node_sheetdiff_page
node_sheetdiff_page -->|"reads translations"| node_sheetdiff_content
node_visitor -.->|"reads API guide"| node_api_docs
node_api_docs -->|"renders"| node_api_primitives
node_visitor -.->|"tries examples"| node_simulator
node_simulator -->|"renders views"| node_sim_parts
node_simulator -->|"loads samples"| node_sim_samples
node_simulator -->|"reads translations"| node_sim_i18n
node_visitor -.->|"reads guides"| node_guide_pages
node_guide_pages -->|"reads translations"| node_guide_content
node_visitor -.->|"submits diffs"| node_diff_api
node_visitor -.->|"reads analysis"| node_precision_guide
node_precision_guide -->|"reads translations"| node_precision_content
node_language_state -->|"supports locales"| node_translations
node_locale_pages -->|"loads copy"| node_translations
node_sitemap -->|"includes posts"| node_blog
node_indexnow -->|"reads URLs"| node_sitemap
node_indexnow -->|"submits URLs"| node_search_engines
node_visitor -->|"uses offline cache"| node_service_worker

click node_locale_pages "https://github.com/mohamedyaakoubi/mohamedyakoubi/tree/master/src/app/%5Blocale%5D"
click node_home "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/HomeClient.tsx"
click node_experience "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/ExperienceClient.tsx"
click node_services "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/ServicesClient.tsx"
click node_projects "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/ProjectsClient.tsx"
click node_blog "https://github.com/mohamedyaakoubi/mohamedyakoubi/tree/master/src/app/%5Blocale%5D/blog"
click node_contact "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/app/%5Blocale%5D/contact/page.tsx"
click node_chat_ui "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/Chat.tsx"
click node_chat_api "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/app/api/chat/route.ts"
click node_cv_data "https://github.com/mohamedyaakoubi/mohamedyakoubi/tree/master/src/data/cv"
click node_sheetdiff_page "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/SheetDiffClient.tsx"
click node_sheetdiff_content "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/data/sheetdiff-i18n.ts"
click node_api_docs "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/StructuralApiClient.tsx"
click node_api_primitives "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/ApiDocPrimitives.tsx"
click node_simulator "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/LiveSimulator/index.tsx"
click node_sim_parts "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/LiveSimulator/ResultRow.tsx"
click node_sim_samples "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/LiveSimulator/samples.ts"
click node_sim_i18n "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/data/live-simulator-i18n.ts"
click node_guide_pages "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/ParametersGuideClient.tsx"
click node_guide_content "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/data/parameters-guide-i18n.ts"
click node_diff_api "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/app/api/diff/route.ts"
click node_language_state "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/context/language-context.tsx"
click node_translations "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/lib/translations.ts"
click node_precision_guide "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/EnginePrecisionClient.tsx"
click node_precision_content "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/data/engine-precision-i18n.ts"
click node_sitemap "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/app/sitemap.ts"
click node_indexnow "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/app/api/indexnow/route.ts"
click node_service_worker "https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/public/service-worker.js"

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_locale_pages,node_home,node_experience,node_services,node_projects,node_blog,node_contact toneBlue
class node_sheetdiff_page,node_sheetdiff_content,node_api_docs,node_api_primitives,node_simulator,node_sim_parts,node_sim_samples,node_sim_i18n,node_guide_pages,node_guide_content,node_diff_api,node_precision_guide,node_precision_content toneAmber
class node_chat_ui,node_chat_api,node_cv_data toneMint
class node_sitemap,node_indexnow,node_service_worker toneRose
class node_language_state,node_translations,node_visitor,node_mistral,node_search_engines toneIndigo
```

## Components

### Portfolio experience

- [Localized pages](https://github.com/mohamedyaakoubi/mohamedyakoubi/tree/master/src/app/%5Blocale%5D): `src/app/[locale]`
- [Portfolio home](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/HomeClient.tsx): `src/components/HomeClient.tsx`
- [Experience](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/ExperienceClient.tsx): `src/components/ExperienceClient.tsx`
- [Services](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/ServicesClient.tsx): `src/components/ServicesClient.tsx`
- [Projects](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/ProjectsClient.tsx): `src/components/ProjectsClient.tsx`
- [Multilingual blog](https://github.com/mohamedyaakoubi/mohamedyakoubi/tree/master/src/app/%5Blocale%5D/blog): `src/app/[locale]/blog`
- [Contact page](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/app/%5Blocale%5D/contact/page.tsx): `src/app/[locale]/contact/page.tsx`

### SheetDiff product

- [SheetDiff landing](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/SheetDiffClient.tsx): `src/components/SheetDiffClient.tsx`
- [Product content](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/data/sheetdiff-i18n.ts): `src/data/sheetdiff-i18n.ts`
- [Structural API guide](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/StructuralApiClient.tsx): `src/components/StructuralApiClient.tsx`
- [API doc primitives](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/ApiDocPrimitives.tsx): `src/components/ApiDocPrimitives.tsx`
- [Diff simulator](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/LiveSimulator/index.tsx): `src/components/LiveSimulator/index.tsx`
- [Simulator views](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/LiveSimulator/ResultRow.tsx): `src/components/LiveSimulator/ResultRow.tsx`
- [Simulator samples](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/LiveSimulator/samples.ts): `src/components/LiveSimulator/samples.ts`
- [Simulator translations](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/data/live-simulator-i18n.ts): `src/data/live-simulator-i18n.ts`
- [Product guides](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/ParametersGuideClient.tsx): `src/components/ParametersGuideClient.tsx`
- [Guide translations](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/data/parameters-guide-i18n.ts): `src/data/parameters-guide-i18n.ts`
- [Diff API endpoint](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/app/api/diff/route.ts): `src/app/api/diff/route.ts`
- [Engine precision guide](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/EnginePrecisionClient.tsx): `src/components/EnginePrecisionClient.tsx`
- [Precision content](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/data/engine-precision-i18n.ts): `src/data/engine-precision-i18n.ts`

### AI assistant

- [Chat interface](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/components/Chat.tsx): `src/components/Chat.tsx`
- [Chat endpoint](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/app/api/chat/route.ts): `src/app/api/chat/route.ts`
- [Localized CV](https://github.com/mohamedyaakoubi/mohamedyakoubi/tree/master/src/data/cv): `src/data/cv`

### Search discovery

- [Dynamic sitemap](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/app/sitemap.ts): `src/app/sitemap.ts`
- [IndexNow endpoint](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/app/api/indexnow/route.ts): `src/app/api/indexnow/route.ts`
- [Offline cache](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/public/service-worker.js): `public/service-worker.js`

### Localization

- [Language context](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/context/language-context.tsx): `src/context/language-context.tsx`
- [Locale translations](https://github.com/mohamedyaakoubi/mohamedyakoubi/blob/master/src/lib/translations.ts): `src/lib/translations.ts`

### Other components

- **Site visitor**
- **Mistral AI**
- **Search engines**

## Connections

- Site visitor → Localized pages: browses
- Localized pages → Portfolio home: renders (evidence: `src/app/[locale]/page.tsx`)
- Localized pages → Experience: renders (evidence: `src/app/[locale]/experience/page.tsx`)
- Localized pages → Services: renders (evidence: `src/app/[locale]/services/page.tsx`)
- Localized pages → Projects: renders
- Site visitor → Multilingual blog: reads posts
- Site visitor → Contact page: opens
- Site visitor → Chat interface: asks questions
- Chat interface → Chat endpoint: sends messages
- Chat endpoint → Localized CV: reads CV (evidence: `src/app/api/chat/route.ts`)
- Chat endpoint → Mistral AI: queries (evidence: `src/app/api/chat/route.ts`)
- Site visitor → SheetDiff landing: explores product
- SheetDiff landing → Product content: reads translations (evidence: `src/app/[locale]/sheetdiff/page.tsx`)
- Site visitor → Structural API guide: reads API guide
- Structural API guide → API doc primitives: renders (evidence: `src/components/StructuralApiClient.tsx`)
- Site visitor → Diff simulator: tries examples
- Diff simulator → Simulator views: renders views (evidence: `src/components/LiveSimulator/index.tsx`)
- Diff simulator → Simulator samples: loads samples (evidence: `src/components/LiveSimulator/index.tsx`)
- Diff simulator → Simulator translations: reads translations (evidence: `src/components/LiveSimulator/index.tsx`)
- Site visitor → Product guides: reads guides
- Product guides → Guide translations: reads translations (evidence: `src/components/ParametersGuideClient.tsx`)
- Site visitor → Diff API endpoint: submits diffs
- Site visitor → Engine precision guide: reads analysis
- Engine precision guide → Precision content: reads translations (evidence: `src/components/EnginePrecisionClient.tsx`)
- Language context → Locale translations: supports locales (evidence: `src/context/language-context.tsx`)
- Localized pages → Locale translations: loads copy (evidence: `src/app/[locale]/page.tsx`)
- Dynamic sitemap → Multilingual blog: includes posts (evidence: `src/app/sitemap.ts`)
- IndexNow endpoint → Dynamic sitemap: reads URLs (evidence: `src/app/api/indexnow/route.ts`)
- IndexNow endpoint → Search engines: submits URLs (evidence: `src/app/api/indexnow/route.ts`)
- Site visitor → Offline cache: uses offline cache
