Portfolio / _next /static /chunks /app /page-e8c6fe2e35374f8c.js
Reubencf's picture
Upload 27 files
fcbb9d8 verified
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{7061:function(e,t,a){Promise.resolve().then(a.bind(a,1713))},1713:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return D}});var n=a(7437),s=a(2265),i=()=>(0,n.jsx)("footer",{className:"bg-gray-800 text-white py-4 font-inter",children:(0,n.jsxs)("div",{className:"text-center",children:[(0,n.jsxs)("p",{children:["\xa9 ",new Date().getFullYear()," Reuben Fernandes"]}),(0,n.jsx)("p",{className:"text-sm text-gray-400",children:"Made with Next.js + Tailwind CSS + GitHub Copilot"})]})}),r=a(1994),o=a(3335);function l(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,o.m6)((0,r.W)(t))}let c=e=>{let{number:t=20,...a}=e,[i,r]=(0,s.useState)([]);return(0,s.useEffect)(()=>{r([...Array(t)].map(()=>({top:-5,left:Math.floor(Math.random()*window.innerWidth)+"px",animationDelay:1*Math.random()+.2+"s",animationDuration:Math.floor(8*Math.random()+2)+"s"})))},[t]),(0,n.jsx)(n.Fragment,{children:[...i].map((e,t)=>(0,n.jsx)("span",{className:l("pointer-events-none absolute left-1/2 top-1/2 size-0.5 rotate-[215deg] animate-meteor rounded-full bg-slate-500 shadow-[0_0_0_1px_#ffffff10]"),style:e,...a,children:(0,n.jsx)("div",{className:"pointer-events-none absolute top-1/2 -z-10 h-px w-[50px] -translate-y-1/2 bg-gradient-to-r from-slate-500 to-transparent"})},t))})};var d=a(8657);function m(e){let{className:t,children:a,as:s="span",...i}=e,r=d.E.create(s);return(0,n.jsxs)(r,{className:l("relative inline-flex overflow-hidden",t),...i,children:[a,(0,n.jsxs)("span",{className:"pointer-events-none absolute inset-0 mix-blend-lighten dark:mix-blend-darken",children:[(0,n.jsx)("span",{className:"pointer-events-none absolute -top-1/2 h-[30vw] w-[30vw] animate-[aurora-border_6s_ease-in-out_infinite,aurora-1_12s_ease-in-out_infinite_alternate] bg-[hsl(var(--color-1))] mix-blend-overlay blur-[1rem]"}),(0,n.jsx)("span",{className:"pointer-events-none absolute right-0 top-0 h-[30vw] w-[30vw] animate-[aurora-border_6s_ease-in-out_infinite,aurora-2_12s_ease-in-out_infinite_alternate] bg-[hsl(var(--color-2))] mix-blend-overlay blur-[1rem]"}),(0,n.jsx)("span",{className:"pointer-events-none absolute bottom-0 left-0 h-[30vw] w-[30vw] animate-[aurora-border_6s_ease-in-out_infinite,aurora-3_12s_ease-in-out_infinite_alternate] bg-[hsl(var(--color-3))] mix-blend-overlay blur-[1rem]"}),(0,n.jsx)("span",{className:"pointer-events-none absolute -bottom-1/2 right-0 h-[30vw] w-[30vw] animate-[aurora-border_6s_ease-in-out_infinite,aurora-4_12s_ease-in-out_infinite_alternate] bg-[hsl(var(--color-4))] mix-blend-overlay blur-[1rem]"})]})]})}var g=a(535),u=a(8854),h=a(8630),p=a(6730);let f=(0,g.j)("supports-backdrop-blur:bg-white/10 supports-backdrop-blur:dark:bg-black/10 mx-auto mt-8 flex h-[58px] w-max items-center justify-center gap-2 rounded-2xl border p-2 backdrop-blur-md"),x=s.forwardRef((e,t)=>{let{className:a,children:i,iconSize:r=40,iconMagnification:o=60,iconDistance:c=140,direction:m="middle",...g}=e,h=(0,u.c)(1/0);return(0,n.jsx)(d.E.div,{ref:t,onMouseMove:e=>h.set(e.pageX),onMouseLeave:()=>h.set(1/0),...g,className:l(f({className:a}),{"items-start":"top"===m,"items-center":"middle"===m,"items-end":"bottom"===m}),children:s.Children.map(i,e=>s.isValidElement(e)&&e.type===v?s.cloneElement(e,{...e.props,mouseX:h,size:r,magnification:o,distance:c}):e)})});x.displayName="Dock";let v=e=>{let{size:t=40,magnification:a=60,distance:i=140,mouseX:r,className:o,children:c,...m}=e,g=(0,s.useRef)(null),f=Math.max(6,.2*t),x=(0,u.c)(1/0),v=(0,h.H)(null!=r?r:x,e=>{var t,a;let n=null!==(a=null===(t=g.current)||void 0===t?void 0:t.getBoundingClientRect())&&void 0!==a?a:{x:0,width:0};return e-n.x-n.width/2}),b=(0,h.H)(v,[-i,0,i],[t,a,t]),w=(0,p.q)(b,{mass:.1,stiffness:150,damping:12});return(0,n.jsx)(d.E.div,{ref:g,style:{width:w,height:w,padding:f},className:l("flex aspect-square cursor-pointer items-center justify-center rounded-full",o),...m,children:c})};v.displayName="DockIcon";var b=a(9089);function w(){let e=e=>{window.open(e,"_blank")};return(0,n.jsx)(n.Fragment,{children:(0,n.jsxs)("div",{className:"relative flex min-h-screen w-full flex-col items-center justify-center overflow-hidden rounded-lg border bg-background md:shadow-xl p-4",children:[(0,n.jsx)(c,{number:40}),(0,n.jsx)("div",{className:"flex items-center justify-center w-full",children:(0,n.jsxs)("div",{className:"flex flex-col items-center justify-center max-w-[90vw]",children:[(0,n.jsx)("div",{className:"text-center",children:(0,n.jsxs)("h1",{className:"text-balance text-3xl font-semibold leading-none tracking-tighter sm:text-5xl md:text-6xl lg:text-7xl",children:["Hello, I'm\xa0 ",(0,n.jsx)(m,{children:"Reuben Fernandes"})]})}),(0,n.jsx)("h2",{className:"text-xl sm:text-2xl text-gray-500 font-normal mt-2",children:"Full-Stack Developer"}),(0,n.jsx)("div",{className:"mt-6",children:(0,n.jsxs)(x,{iconMagnification:60,iconDistance:50,className:"scale-75 sm:scale-100",children:[(0,n.jsx)(v,{className:"bg-black/10 dark:bg-white/10 cursor-pointer",onClick:()=>e("https://github.com/Reubencfernandes"),children:(0,n.jsx)(b.hJX,{className:"size-full"})}),(0,n.jsx)(v,{className:"bg-black/10 dark:bg-white/10 cursor-pointer",onClick:()=>e("https://www.linkedin.com/in/reuben-chagas-fernandes/"),children:(0,n.jsx)(b.ltd,{className:"size-full"})}),(0,n.jsx)(v,{className:"bg-black/10 dark:bg-white/10 cursor-pointer",onClick:()=>e("https://discord.gg/v2TzrDz5Kz"),children:(0,n.jsx)(b.j2d,{className:"size-full"})}),(0,n.jsx)(v,{className:"bg-black/10 dark:bg-white/10 cursor-pointer",onClick:()=>e("mailto:18reuchagasfernandes@gmail.com"),children:(0,n.jsx)(b.SRX,{className:"size-full"})})]})})]})})]})})}function j(e){let{description:t}=e;return(0,n.jsxs)("section",{className:"container mx-auto px-4 sm:px-6 mb-10","aria-labelledby":"about-heading",children:[(0,n.jsx)("h2",{id:"about-heading",className:"text-3xl font-bold tracking-tighter md:text-4xl text-center mb-12 text-primary my-6 sm:my-8",children:"About Me"}),(0,n.jsxs)("div",{className:"flex flex-col md:flex-row items-center md:items-start gap-4 sm:gap-8 max-w-4xl mx-auto",children:[(0,n.jsx)("div",{className:"w-full sm:w-2/3 md:w-1/3 flex justify-center md:justify-start",children:(0,n.jsx)("div",{className:"border-4 border-black rounded-full w-32 h-32 sm:w-48 sm:h-48 md:w-52 md:h-52 overflow-hidden",children:(0,n.jsx)("img",{src:"/reuben.png",alt:"Reuben Fernandes - Professional headshot",className:"rounded-full w-full h-full object-cover",loading:"lazy",width:208,height:208})})}),(0,n.jsx)("div",{className:"w-full md:w-2/3 p-2 sm:p-4 rounded-lg",children:(0,n.jsx)("p",{className:"text-base sm:text-lg leading-relaxed text-gray-700 dark:text-gray-300",children:t})})]})]})}let y=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,n.jsx)("div",{ref:t,className:l("rounded-lg border bg-card text-card-foreground shadow-sm",a),...s})});y.displayName="Card";let N=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,n.jsx)("div",{ref:t,className:l("flex flex-col space-y-1.5 p-6",a),...s})});N.displayName="CardHeader";let k=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,n.jsx)("div",{ref:t,className:l("text-2xl font-semibold leading-none tracking-tight",a),...s})});k.displayName="CardTitle";let _=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,n.jsx)("div",{ref:t,className:l("text-sm text-muted-foreground",a),...s})});_.displayName="CardDescription";let S=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,n.jsx)("div",{ref:t,className:l("p-6 pt-0",a),...s})});S.displayName="CardContent",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,n.jsx)("div",{ref:t,className:l("flex items-center p-6 pt-0",a),...s})}).displayName="CardFooter";var C=a(5293);let A=(0,g.j)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),T=s.forwardRef((e,t)=>{let{className:a,variant:s,size:i,asChild:r=!1,...o}=e,c=r?C.g7:"button";return(0,n.jsx)(c,{className:l(A({variant:s,size:i,className:a})),ref:t,...o})});T.displayName="Button";var F=a(519);let P=e=>{let{title:t,description:a,date:s,stack:i,link:r,placeholder:o}=e;return(0,n.jsxs)(y,{className:"project-card group overflow-hidden hover:shadow-xl transition-shadow duration-300 bg-secondary/10 border-secondary/30 font-inter",children:[(0,n.jsx)("div",{className:"inset-0 bg-gradient-to-r from-primary/10 to-accent/10 opacity-0 group-hover:opacity-100 transition-opacity"}),(0,n.jsxs)(N,{children:[(0,n.jsx)(k,{className:"text-primary font-inter",children:t}),(0,n.jsx)(_,{className:"text-muted-foreground font-inter",children:s})]}),(0,n.jsxs)(S,{children:[(0,n.jsx)("div",{className:"h-48 mb-4 rounded-lg overflow-hidden",children:(0,n.jsx)("img",{src:o,alt:"".concat(t," project screenshot"),className:"object-cover w-full h-full group-hover:scale-105 transition-transform duration-300",loading:"lazy"})}),(0,n.jsx)("p",{className:"mb-2 font-inter line-clamp-3",children:a}),(0,n.jsx)("p",{className:"mb-4 text-sm text-muted-foreground font-semibold font-inter",children:i}),r&&(0,n.jsx)("a",{href:r,target:"_blank",rel:"noopener noreferrer","aria-label":"View ".concat(t," project"),children:(0,n.jsxs)(T,{size:"sm",variant:"outline",className:"flex gap-2 items-center hover:bg-[#d53c35] hover:text-white font-inter transition-colors",children:["View Project",(0,n.jsx)(F.Z,{className:"w-4 h-4"})]})})]})]})};function R(e){let{projects:t=[]}=e;return(0,n.jsxs)("section",{className:"px-5 py-10 mt-6 font-inter","aria-labelledby":"projects-heading",children:[(0,n.jsx)("h2",{id:"projects-heading",className:"text-3xl font-bold tracking-tighter md:text-4xl text-center mb-12 text-primary mt-5",children:"Projects"}),(0,n.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-5 content-center align-center justify-items-center max-w-7xl mx-auto",children:t.map((e,t)=>(0,n.jsx)(P,{...e},"".concat(e.title,"-").concat(t)))})]})}let I={JavaScript:"https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-original.svg",PHP:"https://raw.githubusercontent.com/devicons/devicon/master/icons/php/php-original.svg",Dart:"https://raw.githubusercontent.com/devicons/devicon/master/icons/dart/dart-original.svg","C++":"https://raw.githubusercontent.com/devicons/devicon/master/icons/cplusplus/cplusplus-original.svg",Python:"https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg",C:"https://raw.githubusercontent.com/devicons/devicon/master/icons/c/c-original.svg","Node.js":"https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original.svg","React.js":"https://raw.githubusercontent.com/devicons/devicon/master/icons/react/react-original.svg",Flutter:"https://raw.githubusercontent.com/devicons/devicon/master/icons/flutter/flutter-original.svg","Next.js":"https://raw.githubusercontent.com/devicons/devicon/master/icons/nextjs/nextjs-original.svg","Tailwind CSS":"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/Tailwind_CSS_Logo.svg/2560px-Tailwind_CSS_Logo.svg.png",PyTorch:"https://blog.christianperone.com/wp-content/uploads/2018/10/pytorch-logo.png","Hugging Face":"https://registry.npmmirror.com/@lobehub/icons-static-png/1.59.0/files/dark/huggingface-color.png",MySQL:"https://raw.githubusercontent.com/devicons/devicon/master/icons/mysql/mysql-original.svg",MongoDB:"https://raw.githubusercontent.com/devicons/devicon/master/icons/mongodb/mongodb-original.svg",Git:"https://raw.githubusercontent.com/devicons/devicon/master/icons/git/git-original.svg",Github:"https://raw.githubusercontent.com/devicons/devicon/master/icons/github/github-original.svg",Figma:"https://raw.githubusercontent.com/devicons/devicon/master/icons/figma/figma-original.svg","AWS Bedrock":"https://d1.awsstatic.com/getting-started-guides/learning/bedrock/bedrock-250-removebg-preview.86d95fc7f9a313f21091222ec7b63e1e30ea52ea.png","Google Gemini API":"https://cdn.fusionchat.ai/blog/chatgpt/getting-started-with-google-s-gemini-models-via-the-openai-api---by-----p58avq540cp11e8jojhmq.png",Spline:"https://june-changelog.s3.eu-central-1.amazonaws.com/spline_icon_twitter_removebg_preview_db2832210b.png","Github Copilot":"https://uxwing.com/wp-content/themes/uxwing/download/brands-and-social-media/github-copilot-icon.png"},L={"Programming Languages":{title:"Programming Languages",technologies:["JavaScript","PHP","Dart","C++","Python","C"]},"Frameworks/Libraries":{title:"Frameworks/Libraries",technologies:["Node.js","React.js","Flutter","Next.js","Tailwind CSS","PyTorch"]},Databases:{title:"Databases",technologies:["MySQL","MongoDB"]},"Tools/Technologies":{title:"Tools/Technologies",technologies:["Git","Github","Spline","AWS Bedrock","Google Gemini API","Figma","Github Copilot","Hugging Face"]}};var M=()=>(0,n.jsx)("section",{id:"skills",className:"py-24 lg:py-32 ",children:(0,n.jsxs)("div",{className:"container mx-auto",children:[(0,n.jsx)("h2",{className:"text-3xl font-bold tracking-tighter md:text-4xl text-center mb-12 text-primary",children:"Skills & Tools"}),(0,n.jsx)("div",{className:"grid gap-6 md:grid-cols-2 max-w-[980px] mx-auto",children:Object.entries(L).map(e=>{let[t,{title:a,technologies:s}]=e;return(0,n.jsxs)("div",{className:"overflow-hidden p-6",children:[(0,n.jsx)("h3",{className:"text-primary text-xl font-semibold mb-4",children:a}),(0,n.jsx)("div",{className:"grid grid-cols-3 gap-4",children:s.map(e=>(0,n.jsxs)("div",{className:"flex flex-col items-center justify-center p-2 rounded-lg bg-gray-200 hover:bg-primary/10 transition-colors",children:[(0,n.jsx)("div",{className:"relative h-8 w-8 mb-2",children:(0,n.jsx)("img",{src:I[e],alt:"".concat(e," icon"),className:"object-contain h-full w-full",loading:"lazy"})}),(0,n.jsx)("span",{className:"text-sm font-medium text-center text-muted-foreground",children:e})]},e))})]},t)})})]})});let z=[{title:"Reo Bot",link:"https://www.youtube.com/watch?v=zo_UkXzAfLk",placeholder:"https://cdn.glitch.com/ad440fa6-74ef-412e-a436-c369122705f0%2Funtitled.png",date:"January 2022",description:"A versatile Discord bot designed to serve over 100 users by automating tasks, moderating chats, and providing engaging interactive features like mini-games and announcements.",stack:"Node.js, React.js, TailwindCSS, Three.js, MongoDB"},{title:"Apex Legends Stats Website",link:"https://apex-legends-tracker-reubencf.web.app/",placeholder:"https://i.pinimg.com/736x/5a/04/c2/5a04c2049b3188e35bf84e23dd6ae64a.jpg",date:"May 2022",description:"A website that provides real-time stats, player rankings, and map rotation schedules for the popular game Apex Legends. Users can easily access in-game data and insights to enhance their gaming strategies.",stack:"HTML, CSS, JavaScript"},{title:"ClearSkies",link:"https://clear-skies-production.up.railway.app/",placeholder:"https://cdn.glitch.global/ad440fa6-74ef-412e-a436-c369122705f0/cs.png",date:"February 2024",description:"A user-friendly weather platform catering to over 60 users. It offers accurate, real-time weather forecasts, location-based updates, and alerts, ensuring seamless access to weather-related insights.",stack:"React.js, OpenWeatherAPI, MongoDB"},{title:"Task Planner App",link:"https://youtu.be/hiJiTCYkdEo?list=PLULNFt50a7-T4PH3tcYLYFRlWcjwh73Ok",placeholder:"https://cdn.glitch.global/ad440fa6-74ef-412e-a436-c369122705f0/tp.png",date:"June 2024",description:"An innovative task management application developed for the Google Gemini contest, enabling users to create, organize, and track tasks with advanced AI-driven suggestions for productivity enhancement.",stack:"Flutter, Google Gemini API"},{title:"FakeInstagram",link:"https://www.youtube.com/shorts/F1qRNCr6Muc",placeholder:"https://cdn.glitch.global/ad440fa6-74ef-412e-a436-c369122705f0/fakeig.jpg",date:"August 2024",description:"An aesthetically accurate Instagram UI clone, demonstrating advanced knowledge of mobile design and responsive layouts. The project serves as a showcase of modern front-end design principles and practices.",stack:"Flutter"},{title:"Inspirus8",link:"https://inspirus8.netlify.app/",placeholder:"https://cdn.glitch.global/ad440fa6-74ef-412e-a436-c369122705f0/Screenshot_1.png",date:"September 2024",description:"The official event website designed to provide a visually engaging and interactive platform for showcasing event details, schedules, and multimedia content.",stack:"Next.js, Spline, TailwindCSS"},{title:"Land Records",link:"https://www.youtube.com/watch?v=XT5azi648I8",placeholder:"https://cdn.glitch.global/ad440fa6-74ef-412e-a436-c369122705f0/land.png",date:"November 2024",description:"A comprehensive land records management system that simplifies the storage, retrieval, and updating of land-related data with an intuitive interface and robust database handling.",stack:"Next.js, TailwindCSS, MySQL"},{title:"Shadows of Tomorrow",link:"https://youtu.be/-h46B68Cqz8",placeholder:"https://cdn.glitch.global/ad440fa6-74ef-412e-a436-c369122705f0/5.png",date:"January 2025",description:"A captivating 2D RPG game built with Godot 4. It features an immersive storyline, dynamic character interactions, and visually engaging gameplay enhanced by AWS Lambda and Bedrock for seamless backend support.",stack:"Godot 4, AWS Lambda, AWS Bedrock"}];function D(){return(0,n.jsxs)("div",{children:[(0,n.jsx)(w,{}),(0,n.jsx)(j,{description:"I'm Reuben Chagas Fernandes, an undergraduate student in Computer Science and Engineering (CSE) with expertise in various programming languages and frameworks, including ReactJS, NextJS, Generative AI, Flutter, TailwindCSS, Node.js, PHP, and Python. I have professional experience in Android application development and a strong passion for full-stack development, game development, UI/UX design, and Artificial Intelligence (AI). I'm deeply interested in Large Language Models (LLMs) and AI research, currently working on innovative projects in this field. I'm also actively developing a Konkani language project to preserve and promote my native language through technology. Additionally, I'm learning Japanese and Portuguese, reflecting my interest in exploring new cultures and languages."}),(0,n.jsx)(R,{projects:z}),(0,n.jsx)(M,{}),(0,n.jsx)(i,{})]})}}},function(e){e.O(0,[699,100,971,117,744],function(){return e(e.s=7061)}),_N_E=e.O()}]);