# rakesh-mora/rakesh-portfolio architecture

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

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

## Overview

This is a database-driven personal portfolio: visitors browse the home page or dedicated project and skills pages, whose sections use portfolio data delivered by a shared API request. The server aggregates collection queries, maps database records to public DTOs, and returns them through API routes. The README documents the UI sections and shared loading behavior; sampled source confirms the aggregate route, context, and project/skill query paths. Other collection-service internals and component wiring are represented only at the documented level.

Main entry points: [`lib/services/portfolio.service.ts`](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/portfolio.service.ts) (Portfolio Aggregator), [`lib/db/connectDB.ts`](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/db/connectDB.ts) (DB Connection), [`lib/models`](https://github.com/rakesh-mora/rakesh-portfolio/tree/master/lib/models) (Mongoose Models), [`lib/services/project.service.ts`](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/project.service.ts) (Project Queries)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["Portfolio UI"]
  node_home["Home Page<br/>[page.tsx]"]
  node_projectspage["Projects Page<br/>[page.tsx]"]
  node_skillspage["Skills Page<br/>[page.tsx]"]
  node_sections["Portfolio Sections"]
  node_context["Shared Data Context"]
end

subgraph group_delivery["API Delivery"]
  node_portfolioapi["Portfolio API<br/>[route.ts]"]
  node_projectsapi["Projects API<br/>[route.ts]"]
  node_skillsapi["Skills API<br/>[route.ts]"]
  node_certapi["Certificates API<br/>[route.ts]"]
  node_achieveapi["Achievements API<br/>[route.ts]"]
  node_experienceapi["Experience API<br/>[route.ts]"]
end

subgraph group_content["Content Queries"]
  node_portfolioquery["Portfolio Aggregator"]
  node_projectquery["Project Queries<br/>[project.service.ts]"]
  node_skillquery["Skill Queries<br/>[skill.service.ts]"]
  node_certquery["Certificate Queries"]
  node_achievequery["Achievement Queries"]
  node_experiencequery["Experience Queries"]
end

subgraph group_persistence["Mongo Persistence"]
  node_connection["DB Connection<br/>[connectDB.ts]"]
  node_models["Mongoose Models"]
end

node_visitor(("Visitor"))
node_mongodb[("MongoDB")]

node_visitor -->|"browses"| node_home
node_visitor -->|"opens"| node_projectspage
node_visitor -->|"opens"| node_skillspage
node_home -->|"renders"| node_sections
node_projectspage -->|"renders"| node_sections
node_skillspage -->|"renders"| node_sections
node_sections -->|"reads data"| node_context
node_context -->|"fetches"| node_portfolioapi
node_portfolioapi -->|"loads"| node_portfolioquery
node_projectsapi -->|"queries"| node_projectquery
node_skillsapi -->|"queries"| node_skillquery
node_certapi -->|"queries"| node_certquery
node_achieveapi -->|"queries"| node_achievequery
node_experienceapi -->|"queries"| node_experiencequery
node_portfolioquery -->|"loads"| node_projectquery
node_portfolioquery -->|"loads"| node_skillquery
node_portfolioquery -->|"loads"| node_certquery
node_portfolioquery -->|"loads"| node_achievequery
node_portfolioquery -->|"loads"| node_experiencequery
node_projectquery -->|"connects"| node_connection
node_skillquery -->|"connects"| node_connection
node_certquery -->|"connects"| node_connection
node_achievequery -->|"connects"| node_connection
node_experiencequery -->|"connects"| node_connection
node_projectquery -->|"queries"| node_models
node_skillquery -->|"queries"| node_models
node_certquery -->|"queries"| node_models
node_achievequery -->|"queries"| node_models
node_experiencequery -->|"queries"| node_models
node_connection -->|"connects"| node_mongodb

click node_home "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/page.tsx"
click node_projectspage "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/projects/page.tsx"
click node_skillspage "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/skills/page.tsx"
click node_sections "https://github.com/rakesh-mora/rakesh-portfolio/tree/master/app/components"
click node_context "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/context/PortfolioDataContext.tsx"
click node_portfolioapi "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/api/portfolio/route.ts"
click node_projectsapi "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/api/projects/route.ts"
click node_skillsapi "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/api/skills/route.ts"
click node_certapi "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/api/certificates/route.ts"
click node_achieveapi "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/api/achievements/route.ts"
click node_experienceapi "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/api/experience/route.ts"
click node_portfolioquery "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/portfolio.service.ts"
click node_projectquery "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/project.service.ts"
click node_skillquery "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/skill.service.ts"
click node_certquery "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/certificate.service.ts"
click node_achievequery "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/achievement.service.ts"
click node_experiencequery "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/experience.service.ts"
click node_connection "https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/db/connectDB.ts"
click node_models "https://github.com/rakesh-mora/rakesh-portfolio/tree/master/lib/models"

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_projectspage,node_skillspage,node_sections,node_context toneBlue
class node_portfolioapi,node_projectsapi,node_skillsapi,node_certapi,node_achieveapi,node_experienceapi,node_mongodb toneAmber
class node_portfolioquery,node_projectquery,node_skillquery,node_certquery,node_achievequery,node_experiencequery toneMint
class node_connection,node_models toneRose
class node_visitor toneIndigo
```

## Components

### Portfolio UI

- [Home Page](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/page.tsx): `app/page.tsx`
- [Projects Page](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/projects/page.tsx): `app/projects/page.tsx`
- [Skills Page](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/skills/page.tsx): `app/skills/page.tsx`
- [Portfolio Sections](https://github.com/rakesh-mora/rakesh-portfolio/tree/master/app/components): `app/components`
- [Shared Data Context](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/context/PortfolioDataContext.tsx): `app/context/PortfolioDataContext.tsx`

### API Delivery

- [Portfolio API](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/api/portfolio/route.ts): `app/api/portfolio/route.ts`
- [Projects API](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/api/projects/route.ts): `app/api/projects/route.ts`
- [Skills API](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/api/skills/route.ts): `app/api/skills/route.ts`
- [Certificates API](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/api/certificates/route.ts): `app/api/certificates/route.ts`
- [Achievements API](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/api/achievements/route.ts): `app/api/achievements/route.ts`
- [Experience API](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/app/api/experience/route.ts): `app/api/experience/route.ts`

### Content Queries

- [Portfolio Aggregator](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/portfolio.service.ts): `lib/services/portfolio.service.ts`
- [Project Queries](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/project.service.ts): `lib/services/project.service.ts`
- [Skill Queries](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/skill.service.ts): `lib/services/skill.service.ts`
- [Certificate Queries](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/certificate.service.ts): `lib/services/certificate.service.ts`
- [Achievement Queries](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/achievement.service.ts): `lib/services/achievement.service.ts`
- [Experience Queries](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/services/experience.service.ts): `lib/services/experience.service.ts`

### Mongo Persistence

- [DB Connection](https://github.com/rakesh-mora/rakesh-portfolio/blob/master/lib/db/connectDB.ts): `lib/db/connectDB.ts`
- [Mongoose Models](https://github.com/rakesh-mora/rakesh-portfolio/tree/master/lib/models): `lib/models`

### Other components

- **Visitor**
- **MongoDB**

## Connections

- Visitor → Home Page: browses
- Visitor → Projects Page: opens
- Visitor → Skills Page: opens
- Home Page → Portfolio Sections: renders
- Projects Page → Portfolio Sections: renders
- Skills Page → Portfolio Sections: renders
- Portfolio Sections → Shared Data Context: reads data
- Shared Data Context → Portfolio API: fetches
- Portfolio API → Portfolio Aggregator: loads
- Projects API → Project Queries: queries
- Skills API → Skill Queries: queries
- Certificates API → Certificate Queries: queries
- Achievements API → Achievement Queries: queries
- Experience API → Experience Queries: queries
- Portfolio Aggregator → Project Queries: loads
- Portfolio Aggregator → Skill Queries: loads
- Portfolio Aggregator → Certificate Queries: loads
- Portfolio Aggregator → Achievement Queries: loads
- Portfolio Aggregator → Experience Queries: loads
- Project Queries → DB Connection: connects
- Skill Queries → DB Connection: connects
- Certificate Queries → DB Connection: connects
- Achievement Queries → DB Connection: connects
- Experience Queries → DB Connection: connects
- Project Queries → Mongoose Models: queries
- Skill Queries → Mongoose Models: queries
- Certificate Queries → Mongoose Models: queries
- Achievement Queries → Mongoose Models: queries
- Experience Queries → Mongoose Models: queries
- DB Connection → MongoDB: connects
