Browse by type
Java · Spring Boot · Banking Systems
A premium dark portfolio, live at achyuthkp27.github.io/Portfolio.
Five years building secure banking microservices — retail, mobile, and corporate channels — presented with the restraint of an editorial site: typography-led, one accent color, no noise.
>_ trigger, desktop) with commands, themes, and a few jokes. The site's designated toy.| Layer | Choice |
|---|---|
| Framework | React 18 + TypeScript, Vite 5 |
| Styling | Tailwind CSS 3 |
| Animation | Framer Motion, Lenis smooth scroll |
| 3D (desktop only) | three.js via React Three Fiber + drei, lazy-loaded |
| Routing | React Router (hash routing for GitHub Pages) |
| Data | GitHub REST API (repos, commit count) with localStorage caching |
| Quality | Vitest + Testing Library, ESLint, Prettier, Husky + lint-staged |
| PWA | vite-plugin-pwa (auto-update service worker) |
Performance notes: below-the-fold sections are lazy-loaded behind content-visibility placeholders, heavy chunks (three.js, r3f, framer-motion) are split and deferred, and mobile skips the loader, the 3D scenes, and the expensive backdrop blurs.
npm install
npm run dev # http://localhost:8080
npm run build # production build to dist/
npm run preview # serve the build locally
npm test # vitest
npm run lint # eslint
Pushes to main deploy via the GitHub Pages workflow (.github/workflows/deploy.yml).
PWA caveat: the service worker precaches aggressively. After a deploy, returning visitors may need a hard refresh (or a second visit) to pick up the new version.
src/
├── components/ # sections (Hero, CaseStudyStack, AwardSection, …)
│ ├── 3d/ # lazy-loaded R3F scenes (desktop only)
│ └── ui/ # small building blocks (TextReveal, MagneticButton, …)
├── data/ # projects & experience content
├── hooks/ # useMobile, useLowEndDevice, useIdleMount
├── lib/ # GitHub API client, analytics
└── pages/ # Index, ProjectDetail, NotFound
browse all types & interfaces →
$ claude mcp add Portfolio \
-- python -m otcore.mcp_server <graph>