# thatsgaurav/gsxdev architecture

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

## Overview

This is a résumé-backed DevOps portfolio: visitors browse a single-page professional profile, explore experience, projects and skills, then use its contact links or download the résumé. Existing Prismic-backed blog and project detail pages remain alongside the homepage. The sampled sources show the Prismic client, content-index queries, and slice dispatch, but not the detail-route implementations or layout wiring; those connections are omitted where uncertain.

Main entry points: [`src/app/page.tsx`](https://github.com/thatsgaurav/gsxdev/blob/main/src/app/page.tsx) (Portfolio homepage), [`src/prismicio.ts`](https://github.com/thatsgaurav/gsxdev/blob/main/src/prismicio.ts) (Prismic client), [`src/slices/ContentIndex/index.tsx`](https://github.com/thatsgaurav/gsxdev/blob/main/src/slices/ContentIndex/index.tsx) (Content index), [`src/app/api/preview/route.ts`](https://github.com/thatsgaurav/gsxdev/blob/main/src/app/api/preview/route.ts) (Preview endpoint)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portfolio["Portfolio experience"]
  node_homepage["Portfolio homepage<br/>[page.tsx]"]
  node_portrait["Portrait hero<br/>[PortfolioHero.tsx]"]
  node_resume["Downloadable résumé"]
end

subgraph group_cms["Prismic content"]
  node_blog["Blog detail<br/>[page.tsx]"]
  node_project["Project detail<br/>[page.tsx]"]
  node_page["Prismic page<br/>[page.tsx]"]
  node_contentindex["Content index<br/>[index.tsx]"]
  node_prismicclient["Prismic client<br/>[prismicio.ts]"]
end

subgraph group_shared["Shared rendering"]
  node_sliceregistry["Slice registry<br/>[index.ts]"]
  node_slicerenderers["Slice renderers"]
  node_contentlist["Content list<br/>[ContentList.tsx]"]
  node_navigation["Navigation and contact<br/>[Header.tsx]"]
end

subgraph group_contentops["Content operations"]
  node_preview["Preview endpoint<br/>[route.ts]"]
  node_exitpreview["Exit preview<br/>[route.ts]"]
  node_revalidate["Cache revalidation<br/>[route.ts]"]
end

node_visitor(("Visitor"))
node_prismic[("Prismic CMS")]

node_visitor -->|"opens"| node_homepage
node_visitor -->|"opens"| node_blog
node_visitor -->|"opens"| node_project
node_visitor -->|"opens"| node_page
node_homepage -->|"renders"| node_portrait
node_homepage -->|"links"| node_resume
node_homepage -->|"links"| node_navigation
node_contentindex -->|"queries posts and projects"| node_prismicclient
node_prismicclient -->|"fetches content"| node_prismic
node_contentindex -->|"renders items"| node_contentlist
node_sliceregistry -->|"dispatches slices"| node_slicerenderers
node_preview -->|"creates client"| node_prismicclient
node_preview -->|"resolves preview"| node_prismic
node_exitpreview -->|"exits preview"| node_prismic
node_revalidate -->|"invalidates cache tag"| node_prismicclient

click node_homepage "https://github.com/thatsgaurav/gsxdev/blob/main/src/app/page.tsx"
click node_portrait "https://github.com/thatsgaurav/gsxdev/blob/main/src/components/PortfolioHero.tsx"
click node_resume "https://github.com/thatsgaurav/gsxdev/blob/main/public/Gaurav-Singh-Resume.pdf"
click node_blog "https://github.com/thatsgaurav/gsxdev/blob/main/src/app/blog/%5Buid%5D/page.tsx"
click node_project "https://github.com/thatsgaurav/gsxdev/blob/main/src/app/projects/%5Buid%5D/page.tsx"
click node_page "https://github.com/thatsgaurav/gsxdev/blob/main/src/app/%5Buid%5D/page.tsx"
click node_contentindex "https://github.com/thatsgaurav/gsxdev/blob/main/src/slices/ContentIndex/index.tsx"
click node_prismicclient "https://github.com/thatsgaurav/gsxdev/blob/main/src/prismicio.ts"
click node_sliceregistry "https://github.com/thatsgaurav/gsxdev/blob/main/src/slices/index.ts"
click node_slicerenderers "https://github.com/thatsgaurav/gsxdev/tree/main/src/slices"
click node_contentlist "https://github.com/thatsgaurav/gsxdev/blob/main/src/slices/ContentIndex/ContentList.tsx"
click node_navigation "https://github.com/thatsgaurav/gsxdev/blob/main/src/components/Header.tsx"
click node_preview "https://github.com/thatsgaurav/gsxdev/blob/main/src/app/api/preview/route.ts"
click node_exitpreview "https://github.com/thatsgaurav/gsxdev/blob/main/src/app/api/exit-preview/route.ts"
click node_revalidate "https://github.com/thatsgaurav/gsxdev/blob/main/src/app/api/revalidate/route.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_homepage,node_portrait,node_resume toneBlue
class node_blog,node_project,node_page,node_contentindex,node_prismicclient,node_prismic toneAmber
class node_sliceregistry,node_slicerenderers,node_contentlist,node_navigation toneMint
class node_preview,node_exitpreview,node_revalidate toneRose
class node_visitor toneIndigo
```

## Components

### Portfolio experience

- [Portfolio homepage](https://github.com/thatsgaurav/gsxdev/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [Portrait hero](https://github.com/thatsgaurav/gsxdev/blob/main/src/components/PortfolioHero.tsx): `src/components/PortfolioHero.tsx`
- [Downloadable résumé](https://github.com/thatsgaurav/gsxdev/blob/main/public/Gaurav-Singh-Resume.pdf): `public/Gaurav-Singh-Resume.pdf`

### Prismic content

- [Blog detail](https://github.com/thatsgaurav/gsxdev/blob/main/src/app/blog/%5Buid%5D/page.tsx): `src/app/blog/[uid]/page.tsx`
- [Project detail](https://github.com/thatsgaurav/gsxdev/blob/main/src/app/projects/%5Buid%5D/page.tsx): `src/app/projects/[uid]/page.tsx`
- [Prismic page](https://github.com/thatsgaurav/gsxdev/blob/main/src/app/%5Buid%5D/page.tsx): `src/app/[uid]/page.tsx`
- [Content index](https://github.com/thatsgaurav/gsxdev/blob/main/src/slices/ContentIndex/index.tsx): `src/slices/ContentIndex/index.tsx`
- [Prismic client](https://github.com/thatsgaurav/gsxdev/blob/main/src/prismicio.ts): `src/prismicio.ts`

### Shared rendering

- [Slice registry](https://github.com/thatsgaurav/gsxdev/blob/main/src/slices/index.ts): `src/slices/index.ts`
- [Slice renderers](https://github.com/thatsgaurav/gsxdev/tree/main/src/slices): `src/slices`
- [Content list](https://github.com/thatsgaurav/gsxdev/blob/main/src/slices/ContentIndex/ContentList.tsx): `src/slices/ContentIndex/ContentList.tsx`
- [Navigation and contact](https://github.com/thatsgaurav/gsxdev/blob/main/src/components/Header.tsx): `src/components/Header.tsx`

### Content operations

- [Preview endpoint](https://github.com/thatsgaurav/gsxdev/blob/main/src/app/api/preview/route.ts): `src/app/api/preview/route.ts`
- [Exit preview](https://github.com/thatsgaurav/gsxdev/blob/main/src/app/api/exit-preview/route.ts): `src/app/api/exit-preview/route.ts`
- [Cache revalidation](https://github.com/thatsgaurav/gsxdev/blob/main/src/app/api/revalidate/route.ts): `src/app/api/revalidate/route.ts`

### Other components

- **Visitor**
- **Prismic CMS**

## Connections

- Visitor → Portfolio homepage: opens
- Visitor → Blog detail: opens
- Visitor → Project detail: opens
- Visitor → Prismic page: opens
- Portfolio homepage → Portrait hero: renders
- Portfolio homepage → Downloadable résumé: links
- Portfolio homepage → Navigation and contact: links
- Content index → Prismic client: queries posts and projects
- Prismic client → Prismic CMS: fetches content
- Content index → Content list: renders items
- Slice registry → Slice renderers: dispatches slices
- Preview endpoint → Prismic client: creates client
- Preview endpoint → Prismic CMS: resolves preview
- Exit preview → Prismic CMS: exits preview
- Cache revalidation → Prismic client: invalidates cache tag
