# soham10-droid/self-profile-website architecture

> Architecture diagram of the GitHub repository soham10-droid/self-profile-website, 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/soham10-droid/self-profile-website
- Repository: https://github.com/soham10-droid/self-profile-website

## Overview

This is an Express-powered personal profile site. Visitors browse profile, interests and projects, open a printable resume, or submit guestbook entries; the same profile and guestbook are exposed through JSON endpoints. The route handler in app.js owns rendering, validation, in-memory message state, and API responses. Source excerpts show the page renderers and data model; the stylesheet and server bootstrap are represented, but their internals are not expanded.

Main entry points: [`app.js`](https://github.com/soham10-droid/self-profile-website/blob/main/app.js) (Express routes), [`views/home.js`](https://github.com/soham10-droid/self-profile-website/blob/main/views/home.js) (Profile page), [`data/profile.js`](https://github.com/soham10-droid/self-profile-website/blob/main/data/profile.js) (Profile data), [`views/resume.js`](https://github.com/soham10-droid/self-profile-website/blob/main/views/resume.js) (Printable resume)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_server["HTTP server<br/>[server.js]"]
  node_routes["Express routes<br/>[app.js]"]
  node_home["Profile page<br/>[home.js]"]
  node_resume["Printable resume<br/>[resume.js]"]
  node_notfound["404 page<br/>[notFound.js]"]
  node_layout["HTML layout<br/>[layout.js]"]
  node_styles["Site styling<br/>[style.css]"]
end

subgraph group_content["Profile content"]
  node_profile["Profile data<br/>[profile.js]"]
end

subgraph group_guestbook["Guestbook"]
  node_guestmem[("Message list<br/>[app.js]")]
  node_validation["Message validation<br/>[app.js]"]
end

node_visitor(("Visitor"))

node_visitor -->|"HTTP requests"| node_server
node_server -->|"dispatches"| node_routes
node_routes -->|"renders home"| node_home
node_routes -->|"renders resume"| node_resume
node_routes -->|"renders 404"| node_notfound
node_home -->|"wraps HTML"| node_layout
node_resume -->|"wraps HTML"| node_layout
node_notfound -->|"wraps HTML"| node_layout
node_routes -->|"reads"| node_profile
node_home -->|"renders content"| node_profile
node_resume -->|"renders content"| node_profile
node_notfound -->|"renders identity"| node_profile
node_routes -->|"validates posts"| node_validation
node_routes -->|"reads/writes"| node_guestmem
node_home -->|"displays messages"| node_guestmem
node_visitor -->|"loads stylesheet"| node_styles

click node_server "https://github.com/soham10-droid/self-profile-website/blob/main/server.js"
click node_routes "https://github.com/soham10-droid/self-profile-website/blob/main/app.js"
click node_home "https://github.com/soham10-droid/self-profile-website/blob/main/views/home.js"
click node_resume "https://github.com/soham10-droid/self-profile-website/blob/main/views/resume.js"
click node_notfound "https://github.com/soham10-droid/self-profile-website/blob/main/views/notFound.js"
click node_layout "https://github.com/soham10-droid/self-profile-website/blob/main/views/layout.js"
click node_styles "https://github.com/soham10-droid/self-profile-website/blob/main/public/style.css"
click node_profile "https://github.com/soham10-droid/self-profile-website/blob/main/data/profile.js"
click node_guestmem "https://github.com/soham10-droid/self-profile-website/blob/main/app.js"
click node_validation "https://github.com/soham10-droid/self-profile-website/blob/main/app.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_server,node_routes,node_home,node_resume,node_notfound,node_layout,node_styles toneBlue
class node_profile toneAmber
class node_guestmem,node_validation toneMint
class node_visitor toneIndigo
```

## Components

### Web experience

- [HTTP server](https://github.com/soham10-droid/self-profile-website/blob/main/server.js): `server.js`
- [Express routes](https://github.com/soham10-droid/self-profile-website/blob/main/app.js): `app.js`
- [Profile page](https://github.com/soham10-droid/self-profile-website/blob/main/views/home.js): `views/home.js`
- [Printable resume](https://github.com/soham10-droid/self-profile-website/blob/main/views/resume.js): `views/resume.js`
- [404 page](https://github.com/soham10-droid/self-profile-website/blob/main/views/notFound.js): `views/notFound.js`
- [HTML layout](https://github.com/soham10-droid/self-profile-website/blob/main/views/layout.js): `views/layout.js`
- [Site styling](https://github.com/soham10-droid/self-profile-website/blob/main/public/style.css): `public/style.css`

### Profile content

- [Profile data](https://github.com/soham10-droid/self-profile-website/blob/main/data/profile.js): `data/profile.js`

### Guestbook

- [Message list](https://github.com/soham10-droid/self-profile-website/blob/main/app.js): `app.js`
- [Message validation](https://github.com/soham10-droid/self-profile-website/blob/main/app.js): `app.js`

### Other components

- **Visitor**

## Connections

- Visitor → HTTP server: HTTP requests
- HTTP server → Express routes: dispatches
- Express routes → Profile page: renders home
- Express routes → Printable resume: renders resume
- Express routes → 404 page: renders 404
- Profile page → HTML layout: wraps HTML
- Printable resume → HTML layout: wraps HTML
- 404 page → HTML layout: wraps HTML
- Express routes → Profile data: reads
- Profile page → Profile data: renders content
- Printable resume → Profile data: renders content
- 404 page → Profile data: renders identity
- Express routes → Message validation: validates posts
- Express routes → Message list: reads/writes
- Profile page → Message list: displays messages
- Visitor → Site styling: loads stylesheet
