Hi There! Glad You’re Here

Get noticed with standout

Explore our range of services designed to help you shine online.
Arrow Banner Full Width
Animated Sections

Scroll down

Animated with GSAP

GreenSock

Animation platform

Keep scrolling

gsap.registerPlugin(Observer); let sections = document.querySelectorAll("section"), images = document.querySelectorAll(".bg"), headings = gsap.utils.toArray(".section-heading"), outerWrappers = gsap.utils.toArray(".outer"), innerWrappers = gsap.utils.toArray(".inner"), splitHeadings = headings.map(heading => new SplitText(heading, { type: "chars,words,lines", linesClass: "clip-text" })), currentIndex = -1, wrap = gsap.utils.wrap(0, sections.length), animating; gsap.set(outerWrappers, { yPercent: 100 }); gsap.set(innerWrappers, { yPercent: -100 }); function gotoSection(index, direction) { index = wrap(index); // make sure it's valid animating = true; let fromTop = direction === -1, dFactor = fromTop ? -1 : 1, tl = gsap.timeline({ defaults: { duration: 1.25, ease: "power1.inOut" }, onComplete: () => animating = false }); if (currentIndex >= 0) { // The first time this function runs, current is -1 gsap.set(sections[currentIndex], { zIndex: 0 }); tl.to(images[currentIndex], { yPercent: -15 * dFactor }) .set(sections[currentIndex], { autoAlpha: 0 }); } gsap.set(sections[index], { autoAlpha: 1, zIndex: 1 }); tl.fromTo([outerWrappers[index], innerWrappers[index]], { yPercent: i => i ? -100 * dFactor : 100 * dFactor }, { yPercent: 0 }, 0) .fromTo(images[index], { yPercent: 15 * dFactor }, { yPercent: 0 }, 0) .fromTo(splitHeadings[index].chars, { autoAlpha: 0, yPercent: 150 * dFactor }, { autoAlpha: 1, yPercent: 0, duration: 1, ease: "power2", stagger: { each: 0.02, from: "random" } }, 0.2); currentIndex = index; } Observer.create({ type: "wheel,touch,pointer", wheelSpeed: -1, onDown: () => !animating && gotoSection(currentIndex - 1, -1), onUp: () => !animating && gotoSection(currentIndex + 1, 1), tolerance: 10, preventDefault: true }); gotoSection(0, 1); // original: https://codepen.io/BrianCross/pen/PoWapLP // horizontal version: https://codepen.io/GreenSock/pen/xxWdeMK

Web development

Fast, scalable, and user-friendly websites

built to perform and engage.

Digital marketing

Digital marketing

Copywriting

Copywriting

Let's connect

Whether you’re starting from scratch or looking to level up, I’m here to help bring your vision to life — with websites, words, and strategy that work.

Arrow Banner Full Width
Portfolio

Featured projects

Explore a curated selection of my recent work, showcasing a blend of creative problem-solving, technical skill, and design precision. Each project reflects a unique challenge and a custom-tailored solution—crafted to meet the goals of clients across a variety of industries.

Resource Works Society

Collaborated with Resource Works Society to amplify their mission of promoting responsible resource development in Canada through strategic digital content and web development.

Resource Works Logo
Invictus Games Vancouver Whistler 2025

Supporting the digital presence for the Invictus Games 2025, a global event celebrating the resilience and recovery of wounded, injured, and sick service personnel and veterans through adaptive sports.

Invictus Games Vancouver Whistler 2025 Logo
Kustard

Partnered with Kustard to bring bold, playful design ideas to life through a vibrant and user-friendly website that reflects the studio’s creative spirit and artistic flair.

 

“We saw results within days — truly remarkable.”

– Jordan F., CEO

What Our Clients Say

Our valued clients share their experiences; here are some of their thoughts.

Let’s Collaborate!

We would love to hear from you! Whether you have a question or you’re interested in working together, reach out and let’s talk about how we can enhance your online presence.