PageSourceSearch

https://helvetic-dev.vercel.app/_next/static/chunks/pages/index-4675ff72c0b4d3a7.js

js helvetic-dev.vercel.app collected 2026-10-03 07:03:46 UTC 19,201 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[332],{2936:(e,r,t)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return t(3433)}])},3433:(e,r,t)=>{"use strict";t.r(r),t.d(r,{__N_SSG:()=>Z,default:()=>Y});var a=t(7876),s=t(5062),n=t.n(s);let i={description:n().string.isRequired,repositoryUrl:n().string.isRequired,slug:n().string.isRequired,title:n().string.isRequired},l=n().shape(i),o=n().arrayOf(l).isRequired,d=()=>(0,a.jsx)("header",{className:"border-b border-border bg-primary px-5 py-6 sm:px-7 sm:py-7 lg:px-8 lg:py-8",children:(0,a.jsxs)("div",{className:"max-w-3xl space-y-3",children:[(0,a.jsx)("p",{className:"text-[1.1rem] font-semibold uppercase tracking-[0.35em] text-secondary",children:"Portfolio"}),(0,a.jsx)("h1",{className:"text-[3.2rem] font-semibold leading-none tracking-[-0.04em] text-primary-foreground sm:text-[4.2rem]",children:"Helvetic.dev"}),(0,a.jsx)("p",{className:"max-w-2xl text-[1.55rem] leading-relaxed text-secondary sm:text-[1.7rem]",children:"\xa0"})]})});var c=t(3576),m=t(5699),p=t(4232),x=t(7137),u=t(9241),f=t(9573);function h(){for(var e=arguments.length,r=Array(e),t=0;t<e;t++)r[t]=arguments[t];return(0,f.QP)((0,u.$)(r))}let g=(0,x.F)("rounded-lg border shadow-sm",{variants:{variant:{default:"border-border bg-card text-card-foreground",section:"border-border bg-background text-foreground",panel:"border-panel-border bg-panel text-foreground",inset:"border-border bg-surface text-surface-foreground"}},defaultVariants:{variant:"default"}}),b=p.forwardRef((e,r)=>{var{className:t,variant:s}=e,n=(0,m._)(e,["className","variant"]);return(0,a.jsx)("div",(0,c._)({ref:r,className:h(g({variant:s}),t)},n))});b.displayName="Card";let y=p.forwardRef((e,r)=>{var{className:t}=e,s=(0,m._)(e,["className"]);return(0,a.jsx)("div",(0,c._)({ref:r,className:h("flex flex-col space-y-3 p-5 sm:p-6 lg:p-7",t)},s))});y.displayName="CardHeader";let j=p.forwardRef((e,r)=>{var{className:t}=e,s=(0,m._)(e,["className"]);return(0,a.jsx)("h2",(0,c._)({ref:r,className:h("text-[2.4rem] font-semibold leading-[1.1] tracking-[-0.03em] text-foreground sm:text-[2.8rem]",t)},s))});j.displayName="CardTitle";let N=p.forwardRef((e,r)=>{var{className:t}=e,s=(0,m._)(e,["className"]);return(0,a.jsx)("p",(0,c._)({ref:r,className:h("text-[1.5rem] leading-relaxed text-muted-foreground sm:text-[1.6rem]",t)},s))});N.displayName="CardDescription";let v=p.forwardRef((e,r)=>{var{className:t}=e,s=(0,m._)(e,["className"]);return(0,a.jsx)("div",(0,c._)({ref:r,className:h("p-5 pt-0 sm:p-6 sm:pt-0 lg:p-7 lg:pt-0",t)},s))});v.displayName="CardContent";let w=p.forwardRef((e,r)=>{var{className:t}=e,s=(0,m._)(e,["className"]);return(0,a.jsx)("div",(0,c._)({ref:r,className:h("flex items-center px-5 pb-5 pt-0 sm:px-6 sm:pb-6 lg:px-7 lg:pb-7",t)},s))});w.displayName="CardFooter";let k=()=>(0,a.jsxs)(b,{variant:"panel",className:"h-full",children:[(0,a.jsxs)(y,{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-[1.15rem] font-semibold uppercase tracking-[0.25em] text-muted-foreground",children:"Introduction"}),(0,a.jsx)(j,{children:"Welcome"})]}),(0,a.jsx)(N,{className:"max-w-2xl text-muted-foreground",children:"Thank you for your interest in my work."})]}),(0,a.jsx)(v,{className:"space-y-4 text-[1.6rem] leading-relaxed sm:text-[1.7rem]",children:(0,a.jsxs)("p",{children:["Information not included in my ",(0,a.jsx)("a",{href:"/resume.pdf",children:"resume"}),", including additional biographical information, may be found below."]})}),(0,a.jsxs)(w,{className:"flex-col items-start gap-4 border-t border-panel-border",children:[(0,a.jsx)("a",{className:"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-[1.4rem] font-semibold text-primary-foreground no-underline transition hover:brightness-95",href:"/resume.pdf",children:"View resume"}),(0,a.jsx)("p",{className:"text-[1.4rem] text-muted-foreground",children:"Fabio M. Albertin"})]})]}),S={title:"About",nationality:"Swiss",interests:["Music (metal, rock'n'roll, prog)","Political science","Languages"]},_=()=>(0,a.jsxs)(b,{variant:"section",className:"h-full",children:[(0,a.jsxs)(y,{className:"space-y-4",children:[(0,a.jsx)("p",{className:"text-[1.15rem] font-semibold uppercase tracking-[0.25em] text-muted-foreground",children:"Backgroun
1d"}),(0,a.jsx)(j,{children:S.title})]}),(0,a.jsxs)(v,{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"rounded-lg border border-border bg-shell px-4 py-4",children:[(0,a.jsx)("p",{className:"text-[1.2rem] font-semibold uppercase tracking-[0.2em] text-muted-foreground",children:"Citizenship"}),(0,a.jsx)("p",{className:"mt-2 text-[1.7rem] font-medium text-foreground",children:S.nationality})]}),(0,a.jsxs)("div",{className:"rounded-lg border border-border bg-shell px-4 py-4",children:[(0,a.jsx)("p",{className:"text-[1.2rem] font-semibold uppercase tracking-[0.2em] text-muted-foreground",children:"Extracurricular interests"}),(0,a.jsx)("ul",{className:"mt-3 list-disc space-y-2 pl-6 text-[1.55rem] leading-relaxed marker:text-primary",children:S.interests.map(e=>(0,a.jsx)("li",{children:e},e))})]})]})]}),C={title:"Past Work",intro:"While I have been involved in many projects in past roles, only a small number have featured aspects that were uniquely mine. Some of the examples below are therefore from previous engagements where I had considerably greater creative control.",positions:[{company:"Sainsbury's Supermarkets Ltd",summary:"Maintenance and development of Sainsbury's Insights Platform, a commercial analytics platform for internal and external clients.",projects:[{title:"Sainsbury's Insights Platform",link:"https://www.sainsburys-insights-platform.com",time:"(September 2021 - present)",text:"Contribute to the evolution of the Sainsbury's Insights Platform, a commercial analytics platform for internal and external clients.\n\nTechnologies used: React, Express, D3.js, Typescript, Jest, AWS and GitHub Actions."}]},{company:"Funding Options",summary:"Maintenance and development of Funding Options, a financial services platform.",projects:[{title:"Funding Options",link:"https://www.fundingoptions.com",time:"(December 2020 - September 2021)",text:"Contributed to the further development and daily maintenance of the Funding Options front end stack.\n\nTechnologies used: React, Gatsby, Typescript, SASS, GraphQL, Jest, Plop and Storybook"}]},{company:"Digital Ventures",summary:"Maintenance and development of Vivastreet, a classifieds application from the company's brand portfolio.",projects:[{title:"Vivastreet",link:"https://www.vivastreet.co.uk",time:"(December 2019 - July 2020)",text:"Helped maintain and develop Vivastreet, a classifieds application that forms part of the company's brand portfolio.\n\nTechnologies used: Javascript, Grunt, SASS, Node JS, PHP, MySQL."}]},{company:"Career Development",summary:"Deepened and expanded knowledge of in demand technologies to increase value and expertise.",projects:[{title:"Career Development",link:"https://helvetic.dev",time:"(September 2019 - November 2019)",text:"Deepened and expanded knowledge of in demand technologies to increase value and expertise."}]},{company:"Circus Street",summary:"Maintenance and development of core platform and adjacent utility apps.",projects:[{title:"Circusstreet.com",link:"https://www.circusstreet.com",time:"(June 2019 - August 2019)",text:"Helped maintain and enhance existing applications that form part of the company's e-learning platform.\n\nTechnologies used: Javascript, React JS, AngularJS, SASS, Grunt, Node JS, Webpack."}]},{company:"Matchesfashion.com",summary:"Maintenance and development of Matchesfashion's global e-commerce platform's core running on SAP's Hybris platform.",projects:[{title:"Matchesfashion.com",link:"https://www.matchesfashion.com",time:"(October 2016 - June 2019)",text:"Implemented front end components of new features of online platform\n\nSupported maintenance of existing e-commerce features\n\nLead front end technology stack upgrade project\n\nTechnologies used: Hybris 5.x - 6.6, Webpack, ES2015+, Handlebars JS, SASS, Impex, Apache Velocity, jQuery"}]},{company:"Office Depot",summary:"A pan-european relatforming / brownfielding project to transition Office Depot Europe to SAP's Hybris platform.",projects:[{title:"Viking Direkt (Austrian imprint)",link:"https://www.vikingdirekt.at/en/",time:"(June 2015 - October 2016)",text:"Implemented front end components of transitioned features of online platform\n\nSupported development of new e-commerce features\n\nTechnologies used: Hybris 5.x - 6, CanJS, Handlebars JS, SASS, Grunt, Phantom JS, Jasmine, jQuery"}]},{company:"Cognizant Technology Solutions",summary:"Designed and developed web pages using HTML5 / CSS3 / JS\n\nPrepared image assets from source files\n\nHelped back-end developers with integration\n\nUnit tested deliverables",projects:[{title:"Ap
1ple Online Store",link:"http://store.apple.com/",time:"(November 2014 - April 2015)",text:"Implement front end components of new features of online store\n\nSupport reduction of backlog of improvements to online store\n\nTechnologies used: CanJS, Mustache JS, Grunt, Phantom JS, Jasmine, jQuery"},{title:"O2",link:"http://www.o2.co.uk/",time:"(August 2014 - October 2014)",text:"Migrated existing content into custom CMS\n\nImplemented marketing initiative assets in CMS\n\nPrepared new templates for CMS and e-mail marketing\n\nTechnologies used: Apache Velocity, SASS, Grunt, jQuery"}]},{company:"Zappos",summary:"",projects:[{title:"6pm.com",link:"http://www.6pm.com/",time:"",text:"Company's discount retail site.\n\nLed and coded site revamp in Fall 2008."},{title:"Zappos Blogs",link:"http://blogs.zappos.com/",time:"(August 2014 - October 2014)",text:"Company's blogs on business related topics and company culture.\n\nEstablished blog lineup and significantly improved existing code."}]}]},A={title:"Projects",intro:"The following are some projects I have created to demonstrate skills acquired outside of formal work.",emptyState:"Projects information is currently unavailable."};var R=t(9720);let T=e=>{let{children:r}=e;return(0,a.jsx)("div",{className:"mt-2 space-y-3 text-[1.45rem] leading-relaxed text-foreground [&_p]:m-0 [&_p+_p]:mt-3",children:r})};var J=t(2701),P=t(8967),M=t(2089);let O=P.bL,q=p.forwardRef((e,r)=>{var{className:t}=e,s=(0,m._)(e,["className"]);return(0,a.jsx)(P.q7,(0,c._)({ref:r,className:h("border-b border-border last:border-b-0",t)},s))});q.displayName="AccordionItem";let I=p.forwardRef((e,r)=>{var{className:t,children:s}=e,n=(0,m._)(e,["className","children"]);return(0,a.jsx)(P.Y9,{className:"flex",children:(0,a.jsxs)(P.l9,(0,J._)((0,c._)({ref:r,className:h("group flex flex-1 items-center justify-between gap-4 bg-accent px-4 py-3 text-left text-[1.6rem] font-semibold text-accent-foreground transition hover:brightness-95 data-[state=open]:bg-accent-soft data-[state=open]:shadow-[inset_0_0_0_1px_var(--border)] sm:px-5",t)},n),{children:[(0,a.jsx)("span",{children:s}),(0,a.jsx)(M.A,{className:"h-5 w-5 shrink-0 transition-transform duration-200 group-data-[state=open]:rotate-180"})]}))})});I.displayName=P.l9.displayName;let H=p.forwardRef((e,r)=>{var{className:t,children:s}=e,n=(0,m._)(e,["className","children"]);return(0,a.jsx)(P.UC,(0,J._)((0,c._)({ref:r,className:"overflow-hidden text-[1.4rem] data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down"},n),{children:(0,a.jsx)("div",{className:h("bg-surface px-5 py-4 md:px-6",t),children:s})}))});H.displayName=P.UC.displayName;let D=e=>{let{company:r,summary:t,projects:s}=e;return(0,a.jsxs)(q,{value:r,children:[(0,a.jsx)(I,{children:(0,a.jsxs)("span",{className:"flex flex-col gap-1",children:[(0,a.jsxs)("span",{className:"text-[1.65rem] tracking-[-0.02em]",children:["Work for ",r]}),t?(0,a.jsx)("span",{className:"text-[1.25rem] font-normal leading-relaxed text-muted-foreground",children:t}):null]})}),(0,a.jsx)(H,{children:(0,a.jsx)("div",{className:"space-y-5",children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("h4",{className:"text-[1.3rem] font-semibold uppercase tracking-[0.2em] text-muted-foreground",children:"Projects"}),(0,a.jsx)("ul",{className:"space-y-5",children:s.map((e,t)=>(0,a.jsxs)("li",{children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-2 gap-y-1",children:[(0,a.jsx)("h5",{className:"text-[1.6rem] font-semibold leading-relaxed tracking-[-0.02em] text-foreground",children:(0,a.jsx)("a",{className:"text-primary",href:e.link,children:e.title})}),e.time?(0,a.jsx)("span",{className:"text-[1.3rem] text-muted-foreground",children:e.time}):null]}),(0,a.jsx)(T,{children:(0,a.jsx)(R.oz,{children:e.text})})]},"".concat(r,"-").concat(e.title,"-").concat(e.link||t)))})]})})})]})};D.propTypes={company:n().string.isRequired,summary:n().string.isRequired,projects:n().arrayOf(n().shape({link:n().string.isRequired,text:n().string.isRequired,time:n().string.isRequired,title:n().string.isRequired})).isRequired};let F=e=>{let{data:r}=e;return(0,a.jsx)(O,{type:"single",collapsible:!0,className:"w-full overflow-hidden rounded-lg border border-border bg-card shadow-sm",children:r.map(e=>(0,a.jsx)(D,(0,c._)({},e),e.company))})};F.propTypes={data:n().arrayOf(n().object).isRequired};let E=e=>{let{projects:r}=e;return(0,a.jsxs)(b,{variant:"section",children:[(0,a.jsxs)(y,{className:"space-y-4",children:[(0,a.jsx)("p",{className:"text-[1.15rem] font-semibold uppercase tracking-[0.25em] text-muted-foreground",children:"Experience"}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)(j,{children:C.title}),(0,a.jsx)(N,{className:"max-w-4xl",children:C.intro})]})]}),(0,a.jsxs)(v,{className:"space-y-8",children:[(0,a.jsx)(F,{data:C.positions}),(0,a.jsxs)(b,{variant:"inset",className:"space-y-4",children:[(0,a.jsxs)(y,{className:"space-y-2 pb-0",children:[(0,a.jsx)("p",{className:"text-[1.15rem] font-semibold uppercase tracking-[0.25em] text-muted-foreground",children:"Independent work"}),(0,a.jsx)("h3",{className:"text-[2rem] font-semibold leading-tight tracking-[-0.02em] text-foreground sm:text-[2.2rem]",children:A.title}),(0,a.jsx)("p",{className:"text-[1.5rem] leading-relaxed text-muted-foreground sm:text-[1.6rem]",children:A.intro})]}),(0,a.jsx)(v,{children:r.length>0?(0,a.jsx)("ul",{className:"grid gap-4 xl:grid-cols-2",children:r.map(e=>(0,a.jsxs)("li",{className:"rounded-lg border border-border bg-card px-4 py-4",children:[(0,a.jsx)("h4",{className:"text-[1.65rem] font-semibold tracking-[-0.02em] text-foreground",children:e.title}),(0,a.jsx)("p",{className:"mt-2 text-[1.5rem] leading-relaxed text-muted-foreground",children:e.description}),(0,a.jsx)("a",{className:"mt-4 inline-block break-words text-[1.4rem] font-medium text-primary",href:e.repositoryUrl,children:e.repositoryUrl})]},e.slug))}):(0,a.jsx)("p",{className:"text-[1.5rem] leading-relaxed text-muted-foreground",children:A.emptyState})})]})]})]})};E.propTypes={projects:o};let G={title:"Contact me",platforms:{linkedin:"https://uk.linkedin.com/in/falbertin",x:"http://x.com/se
1ngeezer",facebook:"http://facebook.com/a1bertin",github:"http://github.com/sengeezer",blog:"http://ifab.io/wire/"},disclaimer:{title:"Please note",content:"Twitter and Facebook are personal accounts and may feature content outside mainstream opinion. My blog may oftentimes also fall within this area."}},V=(0,x.F)("relative w-full rounded-lg border px-4 py-4",{variants:{variant:{default:"border-border bg-card text-card-foreground",disclaimer:"border-disclaimer-border bg-disclaimer text-foreground"}},defaultVariants:{variant:"default"}}),L=p.forwardRef((e,r)=>{var{className:t,variant:s}=e,n=(0,m._)(e,["className","variant"]);return(0,a.jsx)("div",(0,c._)({ref:r,role:"alert",className:h(V({variant:s}),t)},n))});L.displayName="Alert";let Q=p.forwardRef((e,r)=>{var{className:t}=e,s=(0,m._)(e,["className"]);return(0,a.jsx)("h5",(0,c._)({ref:r,className:h("mb-2 text-[1.5rem] font-semibold leading-none tracking-tight",t)},s))});Q.displayName="AlertTitle";let W=p.forwardRef((e,r)=>{var{className:t}=e,s=(0,m._)(e,["className"]);return(0,a.jsx)("div",(0,c._)({ref:r,className:h("text-[1.35rem] leading-relaxed [&_p]:leading-relaxed",t)},s))});W.displayName="AlertDescription";let z=[{label:"LinkedIn",url:G.platforms.linkedin},{label:"X",url:G.platforms.x},{label:"Facebook",url:G.platforms.facebook},{label:"GitHub",url:G.platforms.github},{label:"Blog",url:G.platforms.blog}],U=()=>(0,a.jsxs)(b,{variant:"panel",className:"overflow-hidden",children:[(0,a.jsxs)(y,{className:"space-y-4",children:[(0,a.jsx)("p",{className:"text-[1.15rem] font-semibold uppercase tracking-[0.25em] text-muted-foreground",children:"Connect"}),(0,a.jsx)(j,{children:G.title}),(0,a.jsx)(N,{children:"Find me on the following platforms."})]}),(0,a.jsxs)(v,{className:"space-y-5",children:[(0,a.jsx)("ul",{className:"grid gap-3 text-[1.5rem] leading-relaxed sm:grid-cols-2 xl:grid-cols-1",children:z.map(e=>(0,a.jsx)("li",{children:(0,a.jsxs)("a",{className:"flex items-center justify-between rounded-lg border border-border bg-shell px-4 py-3 font-medium text-primary no-underline transition hover:-translate-y-0.5 hover:shadow-sm",href:e.url,children:[e.label,(0,a.jsx)("span",{"aria-hidden":"true",className:"text-[1.2rem] text-muted-foreground",children:"↗"})]})},e.label))}),(0,a.jsxs)(L,{variant:"disclaimer",className:"rounded-lg",children:[(0,a.jsx)("div",{className:"rounded-md bg-primary px-3 py-2 text-primary-foreground",children:(0,a.jsx)(Q,{className:"mb-0 text-[1.4rem] font-semibold",children:G.disclaimer.title})}),(0,a.jsx)(W,{className:"px-1 pt-3 text-[1.3rem] text-foreground",children:G.disclaimer.content})]})]})]}),B=e=>{let{projects:r}=e;return(0,a.jsx)("main",{className:"bg-background px-3 py-4 sm:px-5 sm:py-5 lg:px-6 lg:py-6 xl:px-8 xl:py-8",children:(0,a.jsxs)("div",{className:"grid gap-6 xl:grid-cols-[minmax(0,1.65fr)_minmax(22rem,1fr)] xl:items-start",children:[(0,a.jsxs)("section",{className:"space-y-6 lg:space-y-8",children:[(0,a.jsxs)("div",{className:"grid gap-6 lg:grid-cols-[minmax(0,1.2fr)_minmax(0,0.9fr)]",children:[(0,a.jsx)(k,{}),(0,a.jsx)(_,{})]}),(0,a.jsx)(E,{projects:r})]}),(0,a.jsx)("aside",{className:"space-y-6 xl:sticky xl:top-8",children:(0,a.jsx)(U,{})})]})})};B.propTypes={projects:o};let X=()=>(0,a.jsx)("footer",{className:"border-t border-border bg-footer px-5 py-4 sm:px-7 lg:px-8",children:(0,a.jsxs)("p",{className:"max-w-4xl text-[1.25rem] leading-relaxed text-foreground",children:["\xa9 2019 - 2026 F.M. Albertin | Made with ",(0,a.jsx)("a",{href:"https://reactjs.org",children:"React"}),". Colors by"," ",(0,a.jsx)("a",{href:"http://www.colourlovers.com/palette/1593104/A_Busy_Town",children:"California"}),"."]})});var Z=!0;function Y(e){let{projects:r}=e;return(0,a.jsx)("div",{className:"min-h-screen bg-page px-2 py-4 sm:px-4 sm:py-6 xl:px-5",children:(0,a.jsxs)("div",{className:"mx-auto flex w-full max-w-screen-2xl flex-col overflow-hidden rounded-[1.2rem] border border-border bg-shell shadow-shell",children:[(0,a.jsx)(d,{}),(0,a.jsx)(B,{projects:r}),(0,a.jsx)(X,{})]})})}Y.propTypes={projects:o}}},e=>{e.O(0,[173,636,593,792],()=>e(e.s=2936)),_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.