Harshith Nayaka L portfolio
Read-only MCP access to Harshith Nayaka L's portfolio: profile, case studies, FAQ and guides.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
claude mcp add --transport http harshith-nayaka-l-portfolio 'https://harshith-nayaka-l-portfolio.vercel.app/mcp'
{
"mcpServers": {
"harshith-nayaka-l-portfolio": {
"type": "http",
"url": "https://harshith-nayaka-l-portfolio.vercel.app/mcp"
}
}
}
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Harshith — Portfolio
AI Engineer portfolio. One scrolling page (profile, About, Work, What I build,
Experience, Stack, Agent skills, GitHub activity, Questions, Contact) plus
per-project case-study routes and legal pages, in an early-2000s motorsport
design: F1 helmets on display, a period digicam, a period car stereo,
cars crossing the screen. Light canvas with a dark mode, Instrument Serif
headings over Inter body and labels. The previous design is archived on the
classic-design branch.
The site is also built to be read by machines: every page is prerendered to static HTML, has a markdown twin, and is mirrored by a read-only JSON API.
Stack
- Vite + React 18 + TypeScript
- Tailwind CSS v4 (
@tailwindcss/vite); all theme tokens live insrc/index.css - React Router for case-study and legal routes
- Self-hosted fonts via
@fontsource: Inter Variable (body and labels), Instrument Serif (display headings), Poppins (hero headline) — served frompublic/fonts, preloaded inindex.html - Phosphor icons
@bible-strong/avatar-corefor the mascot's geometry@vercel/edgefor the content-negotiation middleware
No animation library. Scroll reveals and the page transition are CSS keyframes and IntersectionObserver; pulling in a runtime for that put the whole library in the initial bundle.
Develop
npm install
npm run dev # http://localhost:5173
npm run build # type-check, client build, SSR build, prerender, API
npm run preview # serve the production build
npm run lint # type-check only
npm run build is four stages, and the later ones are the ones that matter:
vite build emits the client bundle, a second vite build --ssr emits
dist-ssr/entry-server.js, scripts/prerender.mjs walks every route and writes
real HTML plus each page's markdown twin, and scripts/build-api.mjs emits the
static JSON API. A plain vite build (npm run build:client) skips all of
that and produces an empty-shell SPA.
Checks
npm run verify:negotiation # 25 client shapes get the right representation
npm run verify:onee # every mascot animation is reachable
npm run verify:llms <origin> # needs a Vercel deployment, not npm run preview
verify:llms takes an origin as its first argument. Give it a Vercel
deployment: vite preview runs neither the middleware nor the rewrites, and
falls back to the root page for every nested route, so it fails pages that are
fine in production.
Deploy
Vercel. Build command npm run build, output dist.
middleware.tsruns at the edge and does the content negotiation, the API route table, and JSON errors for anything under/api.vercel.jsoncarries the rewrites and headers.public/_redirectsis there for Netlify; nothing reads it on Vercel.
Content
Everything real lives in src/data/:
projects.ts— Selected Work cards, plus email / GitHub / LinkedIn.caseStudies.ts— full case studies (problem, build, pipeline diagram, judgment calls, results, tech). The architecture diagrams are data-driven: edit apipelinearray and the node graph re-renders.skills.ts— the Agent Skills section.seo.ts— per-route titles, descriptions and JSON-LD.onee.avatar.json— the mascot's definition.
Adding or removing a project means touching projects.ts, caseStudies.ts,
and the slug sets in middleware.ts. scripts/build-api.mjs fails the build if
those drift apart, so a mismatch is caught rather than shipped.
The nav bar's glass
src/components/GlassFilter.tsx holds a CONFIG block using the parameter
names from liquid-glass.ybouane.com —
blurAmount, refraction, chromAberration, edgeHighlight, fresnel,
zRadius, and so on. Tune the bar by changing those numbers; the filter graph
is built from them.
That library itself can't run here: it sizes a WebGL canvas to everything it
refracts, and this page is 12,473px tall on desktop and 19,236px on a phone,
which needs a canvas past Chromium's 16,384px limit. So the effect is rebuilt
as one SVG filter referenced from backdrop-filter. WebKit and Gecko don't
resolve filter references there and fall back to the plain blur declared
alongside it — same frost, no refraction at the rim.
Open
- [ ] Custom domain. Canonical URLs and
og:urlcurrently point at thevercel.appsubdomain. - [ ] Confirm the glass on iOS Safari. The fallback is declared first so it should hold, but it has not been checked on a real WebKit engine.
- [ ] The prerendered HTML is ~110KB, of which about 40% is Tailwind class attributes (47,748 bytes across 642 elements) and 11% JSON-LD.
Questions fréquentes
Qu'est-ce que Harshith Nayaka L portfolio ?
Read-only MCP access to Harshith Nayaka L's portfolio: profile, case studies, FAQ and guides.
Comment installer Harshith Nayaka L portfolio ?
Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http harshith-nayaka-l-portfolio 'https://harshith-nayaka-l-portfolio.vercel.app/mcp'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour Harshith Nayaka L portfolio ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
Harshith Nayaka L portfolio est-il open source ?
Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.
Qui maintient Harshith Nayaka L portfolio ?
Il est publié par HarshithNayakaL. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.