Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,6 @@ playwright-report/

# Local dev workflow symlink (homelab-only, see ~/dev-shared/workflow/)
workflow

# Temporary render templates (used to generate static assets, not shipped)
prototypes/assets/_og-template.html
12 changes: 6 additions & 6 deletions CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

## What this is

A personal portfolio web app at `vishalkatariya.dev`.
A personal portfolio web app at `vishal-katariya.com`.

- Public: homepage, project showcase, CS roadmap, about/contact.
- Private (behind auth): `/me/vault`, `/me/docs`.
Expand Down Expand Up @@ -49,7 +49,7 @@ A personal portfolio web app at `vishalkatariya.dev`.
| Finance buddy | `buddy.auxois-wyrm.ts.net` | Private transaction dashboard |

**Hosting split:**
- **Vercel (`vishalkatariya.dev`)** serves all public routes. Repo already connected; domain already configured.
- **Vercel (`vishal-katariya.com`)** serves all public routes. Repo already connected; domain already configured.
- **athena (`auxois-wyrm.ts.net`)** serves anything private or backend-heavy via Tailscale. No public exposure.
- This is a hybrid architecture: public edge CDN for speed + reliability; homelab for private control and self-hosted data.

Expand All @@ -68,7 +68,7 @@ A personal portfolio web app at `vishalkatariya.dev`.
```
With this approach no Caddy `remote_ip` rule is required, but the Caddy reverse-proxy + certificate path is still the recommended production pattern.

3. **Explicitly not allowed:** page-level passwords, client-side auth checks, or exposing `/me` content on `vishalkatariya.dev`.
3. **Explicitly not allowed:** page-level passwords, client-side auth checks, or exposing `/me` content on `vishal-katariya.com`.

The `/me` page in `portfolio-combined.html` is only an informational placeholder used inside the prototype; the real gate lives at the reverse proxy / network layer on athena.

Expand All @@ -78,7 +78,7 @@ The `/me` page in `portfolio-combined.html` is only an informational placeholder

| Layer | Technology | Notes |
|---|---|---|
| Frontend | SvelteKit + TypeScript | Vercel deploy, `vishalkatariya.dev` |
| Frontend | SvelteKit + TypeScript | Vercel deploy, `vishal-katariya.com` |
| Styling | Vanilla CSS with shared tokens | NothingOS + Liquid Glass + Neomorphism + NeoPOP |
| Fonts | Cormorant Garamond + Space Grotesk + Outfit + DM Mono | Google Fonts CDN |
| Backend | None for portfolio itself | Vercel serverless functions for contact form + GitHub contribution grid proxy; private `/me` backend on athena |
Expand All @@ -97,15 +97,15 @@ The `/me` page in `portfolio-combined.html` is only an informational placeholder
| Vercel | Portfolio frontend CDN | public |

**Tailnet:** `auxois-wyrm.ts.net`
**Portfolio deploy:** Vercel → `vishalkatariya.dev`
**Portfolio deploy:** Vercel → `vishal-katariya.com`
**GitHub mirror:** `vkkatariya.github.io`

---

## Repo

- **GitHub:** `vkkatariya/vkkatariya.github.io`
- **Domain:** `vishalkatariya.dev`
- **Domain:** `vishal-katariya.com`
- **GitHub username:** `vkkatariya`

---
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

![CI](https://github.com/vkkatariya/vkkatariya.github.io/actions/workflows/ci.yml/badge.svg)

Personal portfolio web app. Live at `vishalkatariya.dev`.
Personal portfolio web app. Live at `vishal-katariya.com`.

This is a **simple standalone portfolio** — not a monolith. Real projects (homelab dashboard, finance buddy) live on their own private subdomains and are linked from `/projects`. Private notes and tools live behind `/me` auth.

Expand Down Expand Up @@ -53,7 +53,7 @@ Standalone projects:

- **Recommended pattern:** Caddy `remote_ip` matcher that rejects any client outside the Tailscale CGNAT range `100.64.0.0/10` with `403`. See `homelab-configs/me-tailscale-caddy.conf`.
- **Alternative pattern:** bind the static server to the Tailscale IP only, e.g. `python3 -m http.server 8900 --bind "$(tailscale ip -4)"`, so the service has no public listening socket.
- **Not allowed:** page-level passwords, client-side auth checks, or exposing `/me` content on `vishalkatariya.dev`.
- **Not allowed:** page-level passwords, client-side auth checks, or exposing `/me` content on `vishal-katariya.com`.

The `/me` section shown in `portfolio-combined.html` is just a static information card; the real gate lives on athena.

Expand Down
6 changes: 3 additions & 3 deletions docs/mental-model-tree.html
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@
<div class="proj proj-port">
<div class="proj-tag">Project 01</div>
<div class="proj-name">portfolio-website</div>
<div class="proj-url">vishalkatariya.dev · vkkatariya/vkkatariya.github.io</div>
<div class="proj-url">vishal-katariya.com · vkkatariya/vkkatariya.github.io</div>

<div class="l1-grid">

Expand Down Expand Up @@ -329,7 +329,7 @@
<div class="l1-title">Vercel + GitHub Pages</div>
<div class="l1-sub">CDN frontend · VPS backend</div>
<div class="l1-chips">
<span class="chip">Vercel → vishalkatariya.dev</span>
<span class="chip">Vercel → vishal-katariya.com</span>
<span class="chip">GH Pages → vkkatariya.github.io</span>
<span class="chip">Caddy: bind tailscale/&lt;n&gt; plugin</span>
<span class="chip">WS backend on DigitalOcean VPS</span>
Expand Down Expand Up @@ -358,7 +358,7 @@
<div class="proj proj-home">
<div class="proj-tag">Project 02</div>
<div class="proj-name">homelab-dashboard</div>
<div class="proj-url">vishalkatariya.dev/lab · lab.auxois-wyrm.ts.net (private)</div>
<div class="proj-url">vishal-katariya.com/lab · lab.auxois-wyrm.ts.net (private)</div>

<div class="l1-grid">

Expand Down
2 changes: 1 addition & 1 deletion docs/portfolio_architecture_v2.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
<h2 class="sr-only">Portfolio website v2 architecture — routes, artifacts, and placement decisions</h2>

<div class="root">
<div class="root-title">vishalkatariya.dev</div>
<div class="root-title">vishal-katariya.com</div>
<div class="root-sub">public · Vercel · SvelteKit</div>
</div>

Expand Down
1 change: 1 addition & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<meta property="og:image" content="prototypes/assets/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:url" content="https://vishal-katariya.com/">
<meta property="og:title" content="Vishal Katariya — Portfolio">
<meta property="og:description" content="CS student at Hochschule Darmstadt. ML Engineering, Full-Stack, Infrastructure.">
<meta property="og:type" content="website">
Expand Down
5 changes: 3 additions & 2 deletions prototypes/about.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
<meta property="og:image" content="assets/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:url" content="https://vishal-katariya.com/prototypes/about">
<meta property="og:title" content="Vishal Katariya — Portfolio">
<meta property="og:description" content="CS student at Hochschule Darmstadt. ML Engineering, Full-Stack, Infrastructure.">
<meta property="og:type" content="website">
Expand Down Expand Up @@ -866,13 +867,13 @@ <h1 class="ph-title"><span class="hn-script">A</span>bout</h1>
</div>
</a>

<a class="contact-card" href="https://vishalkatariya.dev" target="_blank">
<a class="contact-card" href="https://vishal-katariya.com" target="_blank">
<div class="cc-icon">
<svg width="18" height="18" viewBox="0 0 16 16" fill="currentColor"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm7.5-6.923c-.67.204-1.335.82-1.887 1.855A7.97 7.97 0 0 0 5.145 4H7.5V1.077zM4.09 4a9.267 9.267 0 0 1 .64-1.539 6.7 6.7 0 0 1 .597-.933A7.025 7.025 0 0 0 2.255 4H4.09zm-.582 3.5c.03-.877.138-1.718.312-2.5H1.674a6.958 6.958 0 0 0-.656 2.5h2.49zM4.847 5a12.5 12.5 0 0 0-.338 2.5H7.5V5H4.847zM8.5 5v2.5h2.99a12.495 12.495 0 0 0-.337-2.5H8.5zM4.51 8.5a12.5 12.5 0 0 0 .337 2.5H7.5V8.5H4.51zm3.99 0V11h2.653c.187-.765.306-1.608.338-2.5H8.5zM5.145 12c.138.386.295.744.468 1.068.552 1.035 1.218 1.65 1.887 1.855V12H5.145zm.182 2.472a6.696 6.696 0 0 1-.597-.933A9.268 9.268 0 0 1 4.09 12H2.255a7.024 7.024 0 0 0 3.072 2.472zM3.82 11a13.652 13.652 0 0 1-.312-2.5h-2.49c.062.89.291 1.733.656 2.5H3.82zm6.853 3.472A7.024 7.024 0 0 0 13.745 12H11.91a9.27 9.27 0 0 1-.64 1.539 6.688 6.688 0 0 1-.597.933zM8.5 12v2.923c.67-.204 1.335-.82 1.887-1.855.173-.324.33-.682.468-1.068H8.5zm3.68-1h2.146c.365-.767.594-1.61.656-2.5h-2.49a13.65 13.65 0 0 1-.312 2.5zm2.802-3.5a6.959 6.959 0 0 0-.656-2.5H12.18c.174.782.282 1.623.312 2.5h2.49zM11.27 2.461c.247.464.462.98.64 1.539h1.835a7.024 7.024 0 0 0-3.072-2.472c.218.284.418.598.597.933zM10.855 4a7.966 7.966 0 0 0-.468-1.068C9.835 1.897 9.17 1.282 8.5 1.077V4h2.355z"/></svg>
</div>
<div>
<div class="cc-label">WEBSITE</div>
<div class="cc-val">vishalkatariya.dev</div>
<div class="cc-val">vishal-katariya.com</div>
</div>
</a>
</div>
Expand Down
Binary file modified prototypes/assets/og-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions prototypes/cs-roadmap.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<meta property="og:image" content="assets/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:url" content="https://vishal-katariya.com/prototypes/cs-roadmap">
<meta property="og:title" content="Vishal Katariya — Portfolio">
<meta property="og:description" content="CS student at Hochschule Darmstadt. ML Engineering, Full-Stack, Infrastructure.">
<meta property="og:type" content="website">
Expand Down
5 changes: 3 additions & 2 deletions prototypes/portfolio-combined.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
<meta property="og:image" content="assets/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:url" content="https://vishal-katariya.com/prototypes/portfolio-combined">
<meta property="og:title" content="Vishal Katariya — Portfolio">
<meta property="og:description" content="CS student at Hochschule Darmstadt. ML Engineering, Full-Stack, Infrastructure.">
<meta property="og:type" content="website">
Expand Down Expand Up @@ -4662,7 +4663,7 @@ <h2 class="cs-title"><svg class="ico" width="28" height="28" viewBox="0 0 13 13"
<svg class="ico" width="13" height="13" viewBox="0 0 13 13" fill="none"><path d="M6.5 1.5L12 11.5H1L6.5 1.5Z" stroke="rgba(255,255,255,.5)" stroke-width="1" fill="rgba(52,199,123,.1)"/></svg>
vercel
</div>
<div class="nd-hw">vishalkatariya.dev · global CDN edge network</div>
<div class="nd-hw">vishal-katariya.com · global CDN edge network</div>
<div class="nd-svc">
<span class="nd-svc-item">/ · home</span>
<span class="nd-svc-item">/projects · /roadmap</span>
Expand Down Expand Up @@ -4699,7 +4700,7 @@ <h2 class="cs-title"><svg class="ico" width="28" height="28" viewBox="0 0 13 13"
<div class="cs-body">
<div>
<div class="cs-h">Hybrid Architecture</div>
<p class="cs-p">Personal portfolio at vishalkatariya.dev — built as a self-contained SvelteKit SPA, hybrid-hosted with public routes on Vercel and private <code>/me/*</code> behind a Tailscale + Caddy IP allowlist on athena.</p>
<p class="cs-p">Personal portfolio at vishal-katariya.com — built as a self-contained SvelteKit SPA, hybrid-hosted with public routes on Vercel and private <code>/me/*</code> behind a Tailscale + Caddy IP allowlist on athena.</p>
<p class="cs-p">Design system uses three layered surfaces: liquid glass (nav/frames), neomorphism (widgets), and NeoPOP (CTAs). Typography stacks Cormorant Garamond italic (initials) with Space Grotesk (display + accents), Outfit (body), DM Mono (labels), JetBrains Mono (topbar metadata), and Syne (about/projects hero titles).</p>
</div>
<div>
Expand Down
2 changes: 1 addition & 1 deletion prototypes/portfolio-prototypev.1.html
Original file line number Diff line number Diff line change
Expand Up @@ -1012,7 +1012,7 @@
<li><a href="#">github</a></li>
<li><a href="#">linkedin</a></li>
<li><a href="#">email</a></li>
<li><a href="#">vishalkatariya.dev</a></li>
<li><a href="#">vishal-katariya.com</a></li>
</ul>
</footer>

Expand Down
2 changes: 1 addition & 1 deletion prototypes/portfolio-prototypev.2.html
Original file line number Diff line number Diff line change
Expand Up @@ -1134,7 +1134,7 @@
<li><a class="soc" href="#"><svg width="15" height="15" viewBox="0 0 16 16" fill="currentColor"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/></svg>github</a></li>
<li><a class="soc" href="#"><svg width="15" height="15" viewBox="0 0 16 16" fill="currentColor"><path d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854V1.146zm4.943 12.248V6.169H2.542v7.225h2.401zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248-.822 0-1.359.54-1.359 1.248 0 .694.521 1.248 1.327 1.248h.016zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016a5.54 5.54 0 0 1 .016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225h2.4z"/></svg>linkedin</a></li>
<li><a class="soc" href="#"><svg width="15" height="15" viewBox="0 0 16 16" fill="currentColor"><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2zm13 2.383-4.758 2.855L15 11.114v-5.73zm-.034 6.878L9.271 8.82 8 9.583 6.728 8.82l-5.694 3.44A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.739zM1 11.114l4.758-3.876L1 4.383v6.73z"/></svg>email</a></li>
<li><a class="soc" href="#"><svg width="15" height="15" viewBox="0 0 16 16" fill="currentColor"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm7.5-6.923c-.67.204-1.335.82-1.887 1.855A7.97 7.97 0 0 0 5.145 4H7.5V1.077zM4.09 4a9.267 9.267 0 0 1 .64-1.539 6.7 6.7 0 0 1 .597-.933A7.025 7.025 0 0 0 2.255 4H4.09zm-.582 3.5c.03-.877.138-1.718.312-2.5H1.674a6.958 6.958 0 0 0-.656 2.5h2.49zM4.847 5a12.5 12.5 0 0 0-.338 2.5H7.5V5H4.847zM8.5 5v2.5h2.99a12.495 12.495 0 0 0-.337-2.5H8.5zM4.51 8.5a12.5 12.5 0 0 0 .337 2.5H7.5V8.5H4.51zm3.99 0V11h2.653c.187-.765.306-1.608.338-2.5H8.5zM5.145 12c.138.386.295.744.468 1.068.552 1.035 1.218 1.65 1.887 1.855V12H5.145zm.182 2.472a6.696 6.696 0 0 1-.597-.933A9.268 9.268 0 0 1 4.09 12H2.255a7.024 7.024 0 0 0 3.072 2.472zM3.82 11a13.652 13.652 0 0 1-.312-2.5h-2.49c.062.89.291 1.733.656 2.5H3.82zm6.853 3.472A7.024 7.024 0 0 0 13.745 12H11.91a9.27 9.27 0 0 1-.64 1.539 6.688 6.688 0 0 1-.597.933zM8.5 12v2.923c.67-.204 1.335-.82 1.887-1.855.173-.324.33-.682.468-1.068H8.5zm3.68-1h2.146c.365-.767.594-1.61.656-2.5h-2.49a13.65 13.65 0 0 1-.312 2.5zm2.802-3.5a6.959 6.959 0 0 0-.656-2.5H12.18c.174.782.282 1.623.312 2.5h2.49zM11.27 2.461c.247.464.462.98.64 1.539h1.835a7.024 7.024 0 0 0-3.072-2.472c.218.284.418.598.597.933zM10.855 4a7.966 7.966 0 0 0-.468-1.068C9.835 1.897 9.17 1.282 8.5 1.077V4h2.355z"/></svg>vishalkatariya.dev</a></li>
<li><a class="soc" href="#"><svg width="15" height="15" viewBox="0 0 16 16" fill="currentColor"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm7.5-6.923c-.67.204-1.335.82-1.887 1.855A7.97 7.97 0 0 0 5.145 4H7.5V1.077zM4.09 4a9.267 9.267 0 0 1 .64-1.539 6.7 6.7 0 0 1 .597-.933A7.025 7.025 0 0 0 2.255 4H4.09zm-.582 3.5c.03-.877.138-1.718.312-2.5H1.674a6.958 6.958 0 0 0-.656 2.5h2.49zM4.847 5a12.5 12.5 0 0 0-.338 2.5H7.5V5H4.847zM8.5 5v2.5h2.99a12.495 12.495 0 0 0-.337-2.5H8.5zM4.51 8.5a12.5 12.5 0 0 0 .337 2.5H7.5V8.5H4.51zm3.99 0V11h2.653c.187-.765.306-1.608.338-2.5H8.5zM5.145 12c.138.386.295.744.468 1.068.552 1.035 1.218 1.65 1.887 1.855V12H5.145zm.182 2.472a6.696 6.696 0 0 1-.597-.933A9.268 9.268 0 0 1 4.09 12H2.255a7.024 7.024 0 0 0 3.072 2.472zM3.82 11a13.652 13.652 0 0 1-.312-2.5h-2.49c.062.89.291 1.733.656 2.5H3.82zm6.853 3.472A7.024 7.024 0 0 0 13.745 12H11.91a9.27 9.27 0 0 1-.64 1.539 6.688 6.688 0 0 1-.597.933zM8.5 12v2.923c.67-.204 1.335-.82 1.887-1.855.173-.324.33-.682.468-1.068H8.5zm3.68-1h2.146c.365-.767.594-1.61.656-2.5h-2.49a13.65 13.65 0 0 1-.312 2.5zm2.802-3.5a6.959 6.959 0 0 0-.656-2.5H12.18c.174.782.282 1.623.312 2.5h2.49zM11.27 2.461c.247.464.462.98.64 1.539h1.835a7.024 7.024 0 0 0-3.072-2.472c.218.284.418.598.597.933zM10.855 4a7.966 7.966 0 0 0-.468-1.068C9.835 1.897 9.17 1.282 8.5 1.077V4h2.355z"/></svg>vishal-katariya.com</a></li>
</ul>
</footer>

Expand Down
Loading