1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[405],{5557:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return n(4168)}])},1761:function(e,t,n){"use strict";var a=n(3516),i=n.n(a);t.Z=e=>new Date(e).toLocaleDateString(i().locale,{year:"numeric",month:"long",day:"numeric"})},4168:function(e,t,n){"use strict";n.r(t),n.d(t,{__N_SSG:function(){return _},default:function(){return I}});var a=n(7320),i=n(3566),l=n(4335),r=n(3516),s=n.n(r),o=n(1761),c=n(1664),d=n.n(c),m=n(1720),h=n(8644),g=n(814);function p(e){let{show:t,setShow:n,text:{contact:i,type:l}}=e;return(0,a.tZ)(a.HY,{children:(0,a.tZ)("div",{"aria-live":"assertive",className:"pointer-events-none fixed inset-0 z-50 flex items-end px-4 py-6 sm:items-start sm:p-6",children:(0,a.tZ)("div",{className:"flex w-full flex-col items-center space-y-4 sm:items-end",children:(0,a.tZ)(g.u,{show:t,as:m.Fragment,enter:"transform ease-out duration-300 transition",enterFrom:"translate-y-2 opacity-0 sm:translate-y-0 sm:translate-x-2",enterTo:"translate-y-0 opacity-100 sm:translate-x-0",leave:"transition ease-in duration-100",leaveFrom:"opacity-100",leaveTo:"opacity-0",children:(0,a.tZ)("div",{className:"pointer-events-auto w-full max-w-sm overflow-hidden rounded-lg bg-white shadow-lg ring-1 ring-black ring-opacity-5",children:(0,a.tZ)("div",{className:"p-4",children:(0,a.BX)("div",{className:"flex items-start",children:[(0,a.tZ)("div",{className:"flex-shrink-0",children:(0,a.tZ)(h.GcF,{className:"h-6 w-6 text-green-400","aria-hidden":"true"})}),(0,a.BX)("div",{className:"ml-3 w-0 flex-1 pt-0.5",children:[(0,a.BX)("p",{className:"text-sm font-medium text-gray-900",children:[l," copied!"]}),(0,a.BX)("p",{className:"mt-1 text-sm text-gray-500",children:[i," has been copied to your clipboard."]})]}),(0,a.tZ)("div",{className:"ml-4 flex flex-shrink-0",children:(0,a.BX)("button",{type:"button",className:"inline-flex rounded-md bg-white text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2",children:[(0,a.tZ)("span",{className:"sr-only",children:"Close"}),(0,a.tZ)(h.bjh,{className:"h-5 w-5","aria-hidden":"true",onClick:()=>{n(!1)}})]})})]})})})})})})})}function u(e){let{icon:t,...n}=e;return(0,a.tZ)(d(),{className:"-m-1 p-1 ",...n,legacyBehavior:!0,children:(0,a.tZ)(t,{className:"h-6 w-6 cursor-pointer fill-gray-500 transition hover:fill-gray-200"})})}function f(e){let{icon:t,text:n,...i}=e,[l,r]=(0,m.useState)(!1);return(0,a.BX)("div",{className:"-m-1 p-1 ",...i,children:[(0,a.tZ)(t,{className:"h-6 w-6 cursor-pointer fill-gray-500 transition hover:fill-gray-200",onClick:()=>{navigator.clipboard.writeText(n.contact),r(!l),setTimeout(()=>{r(!1)},3e3)}}),(0,a.tZ)(p,{show:l,setShow:r,text:n})]})}function y(){return(0,a.BX)("div",{className:"mb-5 max-w-2xl",children:[(0,a.tZ)("h1",{className:"text-4xl font-bold tracking-tight text-gray-800 dark:text-zinc-100 sm:text-5xl",children:"Building products, writing code, and staying fit."}),(0,a.tZ)("p",{className:"mt-6 text-base text-gray-600 dark:text-gray-400",children:"Iâm K N Anantha Nandanan, an engineer based in Kerala, India, focused on building practical, real-world software solutions. Iâm leading QuestCraft, an LLM-powered product that simplifies assessment creation for teachers. I specialize in Backend Engineering and DevOps, with a strong interest in scalable systems and applied AI. This website is a curated space where I share my projects, professional journey, and thoughtful perspectives on technology and the industry."}),(0,a.BX)("div",{className:"mt-6 flex gap-6",children:[(0,a.tZ)(u,{href:"https://github.com/ananthanandanan","aria-label":"Check out my Github",icon:h.JOq}),(0,a.tZ)(u,{href:"https://www.linkedin.com/in/de-blank/","aria-label":"Connect with me on LinkedIn",icon:h.gXb}),(0,a.tZ)(u,{href:"https://twitter.com/Ananthan2k","aria-label":"Connect with me on LinkedIn",icon:h.JUd}),(0,a.tZ)(f,{text:{contact:"[email protected]",type:"Email"},"aria-label":"Send me an email",icon:h.GYo})]})]})}var v=n(9334),x=n(3361),b=n(3758);function N(e){let{variants:t,className:n,children:i,infinity:l,style:r}=e;
1return(0,a.tZ)(b.E.div,{initial:"hidden",whileInView:"visible",viewport:{once:!l},variants:t,className:n,style:r,transition:{staggerChildren:.5},children:i})}let Z={hidden:{scale:0,opacity:0},visible:{opacity:1,scale:1},transition:{type:"spring"}},w={hidden:{opacity:0},visible:{opacity:1,transition:{delayChildren:0,staggerChildren:.1}}};var k=e=>{let{MAX_PROJECTS:t}=e,n=v.Z.slice(0,t);return(0,a.tZ)(a.HY,{children:(0,a.BX)("div",{className:"divide-y divide-gray-700",children:[(0,a.tZ)("div",{className:"my-4",children:(0,a.tZ)("span",{className:"font-poppins title-font text-3xl font-bold",children:"Recent Projects"})}),(0,a.tZ)("div",{className:"py-5",children:(0,a.tZ)(N,{variants:w,className:"mx-auto grid grid-cols-1 gap-4 md:ml-[20%] xl:ml-[24%]",children:n.map(e=>(0,a.tZ)(x.Z,{title:e.title,description:e.description,imgSrc:e.imgSrc,href:e.href,tools:e.tools,deployed:e.deployed},e.title))})})]})})},B=n(2101),X=n(1570);let C=[{name:"Python",logo:B.Cul},{name:"Django",logo:B.faG},{name:"TypeScript",logo:B.WZi},{name:"Node.js",logo:B.uds},{name:"Git",logo:B.zS0},{name:"Docker",logo:B.VIR},{name:"Linux",logo:B.TdH},{name:"Nextjs",logo:B.Xou},{name:"PostgreSQL",logo:B.u4B},{name:"MongoDB",logo:B.t$b},{name:"FastAPI",logo:B.$By},{name:"Celery",logo:B.Sq},{name:"RabbitMQ",logo:B.ZYf},{name:"MinIO",logo:B.MQG},{name:"LangChain",logo:B.o6W},{name:"Tortoise ORM",logo:X.ypx}];var S=()=>(0,a.BX)(a.HY,{children:[(0,a.tZ)("span",{className:"font-poppins title-font text-3xl font-bold",children:"My Top Skills"}),(0,a.tZ)(b.E.div,{initial:"hidden",whileInView:"visible",variants:w,viewport:{once:!0},className:"my-10 grid grid-cols-3 gap-4",children:C.map((e,t)=>(0,a.BX)(b.E.div,{title:e.name,variants:Z,onMouseMove:e=>(function(e){let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,a=e.clientY-t.top;e.target.style.background="radial-gradient(circle at ".concat(n,"px ").concat(a,"px , rgba(255,255,255,0.2),rgba(255,255,255,0) )"),e.target.style.borderImage="radial-gradient(20% 75% at ".concat(n,"px ").concat(a,"px ,rgba(255,255,255,0.7),rgba(255,255,255,0.1) ) 1 / 1px / 0px stretch ")})(e),onMouseLeave:e=>{e.target.style.background=null,e.target.style.borderImage=null},className:"dark:bg-darkPrimary group flex origin-center transform items-center justify-center gap-4 roun
1ded-sm border border-gray-300 p-4 dark:border-neutral-700 hover:dark:bg-darkSecondary sm:justify-start md:origin-top",children:[(0,a.tZ)("div",{className:"pointer-events-none relative select-none transition group-hover:scale-110 sm:group-hover:scale-100",children:(0,a.tZ)(e.logo,{className:"h-8 w-8"})}),(0,a.tZ)("p",{className:"pointer-events-none hidden select-none text-sm font-semibold sm:inline-flex md:text-base",children:e.name})]},e.name))})]}),_=!0;function I(e){let{posts:t}=e;return(0,a.BX)(a.HY,{children:[(0,a.tZ)(l.TQ,{title:s().title,description:s().description}),(0,a.tZ)(y,{}),(0,a.tZ)(S,{}),(0,a.tZ)(k,{MAX_PROJECTS:"4"}),(0,a.BX)("div",{className:"container mx-auto divide-y divide-gray-700",children:[(0,a.tZ)("div",{className:"my-4 flex flex-col",children:(0,a.tZ)("span",{className:"font-poppins title-font text-3xl font-bold",children:"Recent Posts"})}),(0,a.BX)("div",{className:"grid gap-5 sm:mt-6 sm:pt-10 lg:grid-cols-2 lg:gap-x-5 lg:gap-y-5",children:[!t.length&&"No posts found.",t.slice(0,6).map(e=>{let{slug:t,date:n,title:l,summary:r,tags:s}=e;return s.slice(0,2),(0,a.tZ)("div",{className:"relative h-full rounded-lg",children:(0,a.tZ)(i.Z,{href:"/blog/".concat(t),className:"relative block h-full overflow-hidden rounded-lg bg-darkSecondary p-4",children:(0,a.BX)("div",{className:"h-full",children:[(0,a.tZ)("p",{className:"text-sm text-gray-500",children:(0,a.tZ)("time",{dateTime:n,children:(0,o.Z)(n)})}),(0,a.tZ)("h1",{className:"mt-2 mb-2 block font-bold text-gray-100",children:l}),(0,a.tZ)("p",{className:"mt-3 h-auto text-sm text-gray-300",children:r})]})})},t)})]}),t.length>6&&(0,a.tZ)("div",{className:"mt-5 flex justify-end text-base font-medium leading-6",children:(0,a.tZ)(i.Z,{href:"/posts",className:"mt-5 hover:text-primary-400","aria-label":"all posts",children:"All Posts â"})})]})]})}}},function(e){e.O(0,[838,738,151,660,127,758,675,962,888,179],function(){return e(e.s=5557)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.