Karthik — Portfolio©2026
BuildWithKode
000

I design and build fast, considered products for the web and mobile — from the database schema to the last pixel of the interface.

Featured NodePressAvailable for new projects

Karthik

Full-stack developer & creative technologist
TypeScriptReactNext.jsNode.jsNestJSPostgreSQLPrismaGraphQL
RedisDockerThree.jsWebGLMotionTailwindSocket.ioFigma
(02) Selected workAll work (5) →

(03) What I doDesign · Build · Ship

01

Interfaces

Fast, accessible, production-grade front-ends in React and Next.js — from design systems to interactive, motion-rich experiences.

  • React
  • Next.js
  • TypeScript
  • Motion
  • Tailwind
02

Systems

APIs, data models and real-time systems built for production traffic: REST and GraphQL, queues, caching and the infrastructure to run them.

  • Node.js
  • NestJS
  • PostgreSQL
  • Redis
  • GraphQL
03

Creative code

Pushing the browser past static pages — generative visuals, WebGL scenes, games and interactions people remember.

  • Three.js
  • WebGL
  • Canvas
  • GSAP
  • Web Audio
(04) About

For more than seven years I have been shipping production software at the intersection of design and engineering.

I also build my own products, end to end — among them NodePress, an open-source headless CMS, and GSR Calculator, an Android app for gold and silver investors.

Based in
India
Experience
7+ years
Experience
  1. NodePress

    Founder & lead engineer
    • Designed and built an open-source headless CMS end to end: API, admin, CLI, client library and docs
    • Content modelling with 15 field types, components and data migrations; REST, typed GraphQL and real-time events
    • Role-based access down to individual fields, SSO, plugins with signed packages, and a one-command server installer
    2026 — now
  2. Leo9studio

    Frontend engineer
    • Built real-time dashboards for 50k+ daily active users
    • Migrated to Next.js, cutting LCP from 4.2s to 1.3s
    • Created a component library adopted by 6 product teams
    2018 — now
(05) Under the hood

Projects, experience, services and this bio are content types in my own CMS. The page is rendered on the server, cached for five minutes, and falls back to built-in copy if the API is ever unreachable.

Built-in content · connect a NodePress API to go live
lib/cms.ts
// lib/cms.ts — every section on this page comes from here
const cms = createClient({
  url: process.env.NODEPRESS_URL,
  apiKey: process.env.NODEPRESS_API_KEY,
  fetch: (url, init) => fetch(url, { ...init, next: { revalidate: 300 } }),
});

const [profile, projects] = await Promise.all([
  cms.collection('profile').get('main'),
  cms.collection('project').list({ limit: 100 }),
]);
(06) ContactOpen to new projects