diff --git a/.gitignore b/.gitignore index 8619b6f..227591e 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/CLAUDE.md b/CLAUDE.md index f2969f9..2d09ec9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -13,11 +13,39 @@ Before any meaningful work, read these files in order: 3. `tasks/todo.md` — sprint items and phase status 4. `tasks/lessons.md` — active prevention rules (L-001 through L-061+) +**This project runs in the dual-session model** (see `workflow/SESSION-WORKFLOW.md` v2): + +- **Local session** (this is normally the one you are): `[portfolio-website]-local` + - Host: athena tmux (`tmux attach -t claude-portfolio-local`) + - Process: Claude CLI on athena, started with `claude --remote-control '[portfolio-website]-local'` + - Branch: `claude/local` (work on `feat/` sub-branches off it) + - Filesystem: full local access (athena's `/home/radxa/...`, Docker, etc.) + - Use for: design iteration, file edits, debugging, `vercel deploy`, dev server, anything needing local FS +- **Cloud session** (sibling, long-lived): `[portfolio-website]-cloud` + - Host: Anthropic cloud container (NOT your machine) + - Process: started from https://claude.ai/code → Code tab → New session → pick repo → pick branch `claude/cloud` + - Branch: `claude/cloud` (work on `feat/-cloud` sub-branches off it) + - Filesystem: **ONLY the GitHub repo** (no `~/dev-shared/`, no Docker, no `.env.local`, no local servers) + - Use for: `npm install`, Playwright runs (29 tests), full e2e audit, builds, anything that needs CPU isolation + - **Cannot do:** `vercel deploy` (no auth), access local servers, run Docker + +**One-time setup** (run on first session per project, on athena): +```bash +cd ~/dev-shared/projects/portfolio-website +git branch claude/local dev +git branch claude/cloud dev +git push origin claude/local claude/cloud +``` + +**How to start the cloud session:** open https://claude.ai/code → Code tab → New session → pick `vkkatariya/vkkatariya.github.io` → pick branch `claude/cloud` → rename to `[portfolio-website]-cloud`. NOT from the CLI — `claude --remote-control` is a relay, not a cloud container. + +**Cross-session handoff:** read top 3 of `tasks/DEVLOG.md` on every resume — the cloud and local sessions log to the same DEVLOG with `cloud-session-start` / `cloud-session-end` / `local-session-handoff` markers so the other side knows what happened. Coordination also happens via git branches and PRs. + ## Workflow references (symlinked, homelab-only) The `./workflow/` directory is a symlink to `~/dev-shared/workflow/` — same path on every machine via mutagen sync. **Do not commit it** (already in `.gitignore`). Read workflow files on demand, not at every session start: -- `./workflow/SESSION-WORKFLOW.md` — Claude Code session lifecycle, /remote-control, compaction +- `./workflow/SESSION-WORKFLOW.md` — Claude Code session lifecycle, dual-session (local relay + Anthropic cloud), lineage branches, /remote-control, compaction - `./workflow/AI-ROUTING.md` — L1/L2/L3 layer model, tool vs agent routing - `./workflow/GIT-GITHUB-BLUEPRINT.md` — branch/commit/PR conventions - `./workflow/agents_workflow/AI-AGENTS-ORCHESTRATION.md` — sub-agent dispatch patterns @@ -29,6 +57,14 @@ If the symlink is broken on a fresh clone, recreate it: ln -sf ~/dev-shared/workflow ./workflow ``` +## Compaction + /remote-control (project-specific) + +- **/remote-control** is the real command (not `/rc` — that's hallucinated) +- **PreCompact hook** is installed in `.claude/settings.json` — auto-writes a marker to `tasks/DEVLOG.md` before context collapses +- **Before manual /compact:** commit, push, append your work-in-progress to `tasks/DEVLOG.md` (the hook handles auto-compact, but manual is your responsibility) +- **After /compact** or /clear: re-read top 3 of `tasks/DEVLOG.md`, re-read this CLAUDE.md, check `git status` to reconstruct in-flight work +- **Pro plan 5hr rolling limit:** dual session uses 2 surfaces in parallel. Heavy days may hit limits. Run heavy CPU work (Playwright, builds) in cloud, not local, to spread load + --- ## Commands @@ -338,3 +374,6 @@ All icons are **self-contained inline SVG** with class `.ico`. No external CDN. Agents write to `tasks/DEVLOG.md` (newest entry at top) at the end of every session. Format and required fields are in `AGENTS.md`. This is mandatory — a missing DEVLOG entry breaks the next session's handoff. Lessons from corrections go in `tasks/lessons.md` (newest at top, numbered L-0NN). + + + diff --git a/CONTEXT.md b/CONTEXT.md index a7f3902..6d542da 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -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`. @@ -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. @@ -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. @@ -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 | @@ -97,7 +97,7 @@ 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` --- @@ -105,7 +105,7 @@ The `/me` page in `portfolio-combined.html` is only an informational placeholder ## Repo - **GitHub:** `vkkatariya/vkkatariya.github.io` -- **Domain:** `vishalkatariya.dev` +- **Domain:** `vishal-katariya.com` - **GitHub username:** `vkkatariya` --- diff --git a/README.md b/README.md index bfadcde..b3b1926 100644 --- a/README.md +++ b/README.md @@ -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. @@ -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. diff --git a/docs/mental-model-tree.html b/docs/mental-model-tree.html index 1b1828a..19a0585 100644 --- a/docs/mental-model-tree.html +++ b/docs/mental-model-tree.html @@ -279,7 +279,7 @@
Project 01
portfolio-website
-
vishalkatariya.dev · vkkatariya/vkkatariya.github.io
+
vishal-katariya.com · vkkatariya/vkkatariya.github.io
@@ -329,7 +329,7 @@
Vercel + GitHub Pages
CDN frontend · VPS backend
- Vercel → vishalkatariya.dev + Vercel → vishal-katariya.com GH Pages → vkkatariya.github.io Caddy: bind tailscale/<n> plugin WS backend on DigitalOcean VPS @@ -358,7 +358,7 @@
Project 02
homelab-dashboard
-
vishalkatariya.dev/lab · lab.auxois-wyrm.ts.net (private)
+
vishal-katariya.com/lab · lab.auxois-wyrm.ts.net (private)
diff --git a/docs/portfolio_architecture_v2.html b/docs/portfolio_architecture_v2.html index cf15bf4..04d7f14 100644 --- a/docs/portfolio_architecture_v2.html +++ b/docs/portfolio_architecture_v2.html @@ -43,7 +43,7 @@

Portfolio website v2 architecture — routes, artifacts, and placement decisions

-
vishalkatariya.dev
+
vishal-katariya.com
public · Vercel · SvelteKit
diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..359e7f4 Binary files /dev/null and b/favicon.ico differ diff --git a/index.html b/index.html index eb7c40a..3af0819 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,22 @@ Vishal Katariya · Portfolio + + + + + + + + + + + + + + + + diff --git a/prototypes/about.html b/prototypes/about.html index 8258f4d..838fb6a 100644 --- a/prototypes/about.html +++ b/prototypes/about.html @@ -19,6 +19,22 @@ About — Vishal Katariya + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/prototypes/assets/icon-192.png b/prototypes/assets/icon-192.png new file mode 100644 index 0000000..021c9d0 Binary files /dev/null and b/prototypes/assets/icon-192.png differ diff --git a/prototypes/assets/icon-512.png b/prototypes/assets/icon-512.png new file mode 100644 index 0000000..440719a Binary files /dev/null and b/prototypes/assets/icon-512.png differ diff --git a/prototypes/assets/icon-mask.png b/prototypes/assets/icon-mask.png new file mode 100644 index 0000000..770eb4e Binary files /dev/null and b/prototypes/assets/icon-mask.png differ diff --git a/prototypes/assets/logo-128.png b/prototypes/assets/logo-128.png new file mode 100644 index 0000000..c037376 Binary files /dev/null and b/prototypes/assets/logo-128.png differ diff --git a/prototypes/assets/logo-256.png b/prototypes/assets/logo-256.png new file mode 100644 index 0000000..7e94c20 Binary files /dev/null and b/prototypes/assets/logo-256.png differ diff --git a/prototypes/assets/logo-512.png b/prototypes/assets/logo-512.png new file mode 100644 index 0000000..e50fff6 Binary files /dev/null and b/prototypes/assets/logo-512.png differ diff --git a/prototypes/assets/logo-cropped.png b/prototypes/assets/logo-cropped.png new file mode 100644 index 0000000..440719a Binary files /dev/null and b/prototypes/assets/logo-cropped.png differ diff --git a/prototypes/assets/logo.png b/prototypes/assets/logo.png new file mode 100644 index 0000000..14259c9 Binary files /dev/null and b/prototypes/assets/logo.png differ diff --git a/prototypes/assets/og-image.png b/prototypes/assets/og-image.png new file mode 100644 index 0000000..44ab8b5 Binary files /dev/null and b/prototypes/assets/og-image.png differ diff --git a/prototypes/assets/site.webmanifest b/prototypes/assets/site.webmanifest new file mode 100644 index 0000000..c2bdc65 --- /dev/null +++ b/prototypes/assets/site.webmanifest @@ -0,0 +1,26 @@ +{ + "name": "Vishal Katariya \u2014 Portfolio", + "short_name": "VK Portfolio", + "start_url": "/prototypes/portfolio-combined.html", + "display": "standalone", + "background_color": "#080808", + "theme_color": "#080808", + "icons": [ + { + "src": "icon-192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "icon-512.png", + "type": "image/png", + "sizes": "512x512" + }, + { + "src": "icon-mask.png", + "type": "image/png", + "sizes": "512x512", + "purpose": "maskable" + } + ] +} \ No newline at end of file diff --git a/prototypes/cs-roadmap.html b/prototypes/cs-roadmap.html index 72dcc49..af58036 100644 --- a/prototypes/cs-roadmap.html +++ b/prototypes/cs-roadmap.html @@ -4,6 +4,22 @@ CS Fundamentals Roadmap 2025 — vkkatariya + + + + + + + + + + + + + + + +