# samritmukherjee/portfolio_landing architecture

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

- Interactive diagram: https://gitdiagram.com/samritmukherjee/portfolio_landing
- Repository: https://github.com/samritmukherjee/portfolio_landing

## Overview

Samrit Mukherjee’s portfolio combines an interactive personal site with structured public APIs and AI-agent discovery. The main visitor journey presents professional background, experience and accolades, projects, skills, resume, and contact options; the site also serves those details as machine-readable data. README documents the page’s visual and accessibility capabilities, while sampled API handlers establish the data and visitor-count flows. Page composition and several listed discovery routes were not sampled, so those links are represented only where their purpose is documented.

Main entry points: [`app/page.tsx`](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/page.tsx) (Portfolio page), [`app/api/visitors/route.ts`](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/visitors/route.ts) (Visitor count API), [`components/sections/CircularProjects.tsx`](https://github.com/samritmukherjee/portfolio_landing/blob/main/components/sections/CircularProjects.tsx) (Featured projects), [`app/api/v1/projects/route.ts`](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/v1/projects/route.ts) (Projects API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_site["Portfolio experience"]
  node_home["Portfolio page<br/>[page.tsx]"]
  node_layout["Site layout<br/>[layout.tsx]"]
  node_about["About page<br/>[page.tsx]"]
  node_blog["Blog pages<br/>[page.tsx]"]
  node_os["Portfolio OS<br/>[page.tsx]"]
end

subgraph group_content["Portfolio content"]
  node_hero["Hero and profile"]
  node_experience["Experience and awards<br/>[Experience.tsx]"]
  node_projects["Featured projects"]
  node_skills["Skills<br/>[Skills.tsx]"]
  node_resume["Resume<br/>[Resume.tsx]"]
  node_contact["Contact form<br/>[ContactForm.tsx]"]
end

subgraph group_api["Public APIs"]
  node_project_api["Projects API<br/>[route.ts]"]
  node_legacy_projects["Legacy projects API<br/>[route.ts]"]
  node_skills_api["Skills API<br/>[route.ts]"]
  node_contact_api["Contact API<br/>[route.ts]"]
  node_health["Health API<br/>[route.ts]"]
  node_llms["LLMs summary<br/>[route.ts]"]
  node_resend["Resend email"]
end

subgraph group_discovery["Agent discovery"]
  node_openapi["OpenAPI spec<br/>[route.ts]"]
  node_catalog["API catalog<br/>[route.ts]"]
  node_agent_skills["Agent skills index<br/>[route.ts]"]
  node_mcp_card["MCP server card<br/>[route.ts]"]
end

subgraph group_state["Visitor tracking"]
  node_visitors_api["Visitor count API<br/>[route.ts]"]
  node_visitor_lib["Visitor session logic<br/>[visitor.ts]"]
  node_redis_lib["Redis operations<br/>[redis.ts]"]
  node_redis[("Upstash Redis")]
end

node_visitor(("Portfolio visitor"))

node_visitor -->|"opens"| node_home
node_home -->|"renders within"| node_layout
node_home -->|"presents"| node_hero
node_home -->|"presents"| node_experience
node_home -->|"presents"| node_projects
node_home -->|"presents"| node_skills
node_home -->|"presents"| node_resume
node_home -->|"presents"| node_contact
node_visitor -->|"opens"| node_about
node_visitor -->|"opens"| node_blog
node_visitor -->|"opens"| node_os
node_visitor -->|"requests"| node_visitors_api
node_visitors_api -->|"calls"| node_redis_lib
node_redis_lib -->|"reads and writes"| node_redis
node_visitor_lib -->|"submits visit"| node_visitors_api
node_visitor -->|"requests"| node_project_api
node_project_api -->|"reads project data"| node_projects
node_visitor -->|"requests"| node_legacy_projects
node_legacy_projects -->|"reads project data"| node_projects
node_visitor -->|"requests"| node_skills_api
node_skills_api -->|"reads skill data"| node_skills
node_visitor -->|"requests"| node_contact_api
node_contact_api -.->|"sends email"| node_resend
node_visitor -->|"checks status"| node_health
node_visitor -->|"requests summary"| node_llms
node_visitor -->|"requests specification"| node_openapi
node_visitor -->|"discovers APIs"| node_catalog
node_visitor -->|"discovers skills"| node_agent_skills
node_visitor -->|"discovers MCP"| node_mcp_card

click node_home "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/page.tsx"
click node_layout "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/layout.tsx"
click node_about "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/about/page.tsx"
click node_blog "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/blog/%5Bslug%5D/page.tsx"
click node_os "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/portfolio-os/page.tsx"
click node_hero "https://github.com/samritmukherjee/portfolio_landing/blob/main/components/sections/HeroGlassmorphism.tsx"
click node_experience "https://github.com/samritmukherjee/portfolio_landing/blob/main/components/sections/Experience.tsx"
click node_projects "https://github.com/samritmukherjee/portfolio_landing/blob/main/components/sections/CircularProjects.tsx"
click node_skills "https://github.com/samritmukherjee/portfolio_landing/blob/main/components/sections/Skills.tsx"
click node_resume "https://github.com/samritmukherjee/portfolio_landing/blob/main/components/sections/Resume.tsx"
click node_contact "https://github.com/samritmukherjee/portfolio_landing/blob/main/components/ContactForm.tsx"
click node_project_api "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/v1/projects/route.ts"
click node_legacy_projects "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/projects/route.ts"
click node_skills_api "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/skills/route.ts"
click node_contact_api "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/contact/route.ts"
click node_health "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/health/route.ts"
click node_llms "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/llms.txt/route.ts"
click node_openapi "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/well-known/openapi/route.ts"
click node_catalog "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/well-known/api-catalog/route.ts"
click node_agent_skills "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/well-known/agent-skills-index/route.ts"
click node_mcp_card "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/well-known/mcp/server-card/route.ts"
click node_visitors_api "https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/visitors/route.ts"
click node_visitor_lib "https://github.com/samritmukherjee/portfolio_landing/blob/main/lib/visitor.ts"
click node_redis_lib "https://github.com/samritmukherjee/portfolio_landing/blob/main/lib/redis.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_layout,node_about,node_blog,node_os toneBlue
class node_hero,node_experience,node_projects,node_skills,node_resume,node_contact toneAmber
class node_project_api,node_legacy_projects,node_skills_api,node_contact_api,node_health,node_llms,node_resend toneMint
class node_openapi,node_catalog,node_agent_skills,node_mcp_card toneRose
class node_visitors_api,node_visitor_lib,node_redis_lib,node_redis,node_visitor toneIndigo
```

## Components

### Portfolio experience

- [Portfolio page](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/page.tsx): `app/page.tsx`
- [Site layout](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/layout.tsx): `app/layout.tsx`
- [About page](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/about/page.tsx): `app/about/page.tsx`
- [Blog pages](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/blog/%5Bslug%5D/page.tsx): `app/blog/[slug]/page.tsx`
- [Portfolio OS](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/portfolio-os/page.tsx): `app/portfolio-os/page.tsx`

### Portfolio content

- [Hero and profile](https://github.com/samritmukherjee/portfolio_landing/blob/main/components/sections/HeroGlassmorphism.tsx): `components/sections/HeroGlassmorphism.tsx`
- [Experience and awards](https://github.com/samritmukherjee/portfolio_landing/blob/main/components/sections/Experience.tsx): `components/sections/Experience.tsx`
- [Featured projects](https://github.com/samritmukherjee/portfolio_landing/blob/main/components/sections/CircularProjects.tsx): `components/sections/CircularProjects.tsx`
- [Skills](https://github.com/samritmukherjee/portfolio_landing/blob/main/components/sections/Skills.tsx): `components/sections/Skills.tsx`
- [Resume](https://github.com/samritmukherjee/portfolio_landing/blob/main/components/sections/Resume.tsx): `components/sections/Resume.tsx`
- [Contact form](https://github.com/samritmukherjee/portfolio_landing/blob/main/components/ContactForm.tsx): `components/ContactForm.tsx`

### Public APIs

- [Projects API](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/v1/projects/route.ts): `app/api/v1/projects/route.ts`
- [Legacy projects API](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/projects/route.ts): `app/api/projects/route.ts`
- [Skills API](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/skills/route.ts): `app/api/skills/route.ts`
- [Contact API](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/contact/route.ts): `app/api/contact/route.ts`
- [Health API](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/health/route.ts): `app/api/health/route.ts`
- [LLMs summary](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/llms.txt/route.ts): `app/llms.txt/route.ts`
- **Resend email**

### Agent discovery

- [OpenAPI spec](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/well-known/openapi/route.ts): `app/api/well-known/openapi/route.ts`
- [API catalog](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/well-known/api-catalog/route.ts): `app/api/well-known/api-catalog/route.ts`
- [Agent skills index](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/well-known/agent-skills-index/route.ts): `app/api/well-known/agent-skills-index/route.ts`
- [MCP server card](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/well-known/mcp/server-card/route.ts): `app/api/well-known/mcp/server-card/route.ts`

### Visitor tracking

- [Visitor count API](https://github.com/samritmukherjee/portfolio_landing/blob/main/app/api/visitors/route.ts): `app/api/visitors/route.ts`
- [Visitor session logic](https://github.com/samritmukherjee/portfolio_landing/blob/main/lib/visitor.ts): `lib/visitor.ts`
- [Redis operations](https://github.com/samritmukherjee/portfolio_landing/blob/main/lib/redis.ts): `lib/redis.ts`
- **Upstash Redis**

### Other components

- **Portfolio visitor**

## Connections

- Portfolio visitor → Portfolio page: opens
- Portfolio page → Site layout: renders within
- Portfolio page → Hero and profile: presents
- Portfolio page → Experience and awards: presents
- Portfolio page → Featured projects: presents
- Portfolio page → Skills: presents
- Portfolio page → Resume: presents
- Portfolio page → Contact form: presents
- Portfolio visitor → About page: opens
- Portfolio visitor → Blog pages: opens
- Portfolio visitor → Portfolio OS: opens
- Portfolio visitor → Visitor count API: requests
- Visitor count API → Redis operations: calls
- Redis operations → Upstash Redis: reads and writes
- Visitor session logic → Visitor count API: submits visit
- Portfolio visitor → Projects API: requests
- Projects API → Featured projects: reads project data
- Portfolio visitor → Legacy projects API: requests
- Legacy projects API → Featured projects: reads project data
- Portfolio visitor → Skills API: requests
- Skills API → Skills: reads skill data
- Portfolio visitor → Contact API: requests
- Contact API → Resend email: sends email
- Portfolio visitor → Health API: checks status
- Portfolio visitor → LLMs summary: requests summary
- Portfolio visitor → OpenAPI spec: requests specification
- Portfolio visitor → API catalog: discovers APIs
- Portfolio visitor → Agent skills index: discovers skills
- Portfolio visitor → MCP server card: discovers MCP
