I'm Luca,

Focused on

Thoughtful

Digital Experiences

I thrive on turning complex challenges into sleek, intuitive solutions.
I thrive on turning complex challenges into sleek, intuitive solutions.

Visualising LIFT: Hero Concept for a Web3 Agency

UI/UX

Revolutionising SocialFi with gamified engagement

UI/UX
PRODUCT
Client work
View Project
View Project

Visualising Voice: A UI/UX Exploration with Speek

UI/UX
BRAND
PRODUCT

A Modern Investment Platform for a new Generation

UI/UX
BRAND
Client work
View Project

Visualising Voice: A UI/UX Exploration with Speek

UI/UX
BRAND
PRODUCT

An AR Accessibility App for the Deaf Community

UI/UX
BRAND
PRODUCT
View Project
View Project

Visualising NYA: A World Built with Nature in mind

BRAND
PRODUCT

Envisioning a New World Rooted in Sustainability

BRAND
PRODUCT
View Project
View Project

Bold new website for Gymporium

UI/UX
Website Build
Client Work

a Bold New Website for Gymporium

UI/UX
Website Build
Client Work
View Project
View Project

Visualising LIFT: Hero Concept for a Web3 Agency

UI/UX

Visualising LIFT: Hero Concept for a Web3 Agency

UI/UX
View Project
View Project

What I'm into

Product design

I transform ideas into digital products, focusing on user needs, functionality, and visual appeal.

Ui/ux

I create intuitive interfaces and seamless user experiences that are engaging and easy to navigate.

Branding

I craft unique brand identities that effectively convey your vision and resonate with your audience.

web development

I build responsive, dynamic websites in Webflow, enhancing your online presence and user experience.

Get to know me

I'm Driven by Creation

I’ve always had a natural drive to create and share ideas that resonate.

I Adapt to Change

I’m open-minded and eager to embrace tools that challenge and push my creative boundaries.

I’m Energised by Ideas

I’m looking for teams who value creativity, innovation, and fun as much as I do.
Luca Cam
Back to Top
script> const bg = document.querySelector('.bg-elements'); let targetX = 50; let targetY = 50; let currentX = 50; let currentY = 50; // Throttle the mousemove event handler let lastMoveTime = 0; const moveInterval = 50; // 16ms (about 60fps) document.addEventListener('mousemove', (e) => { const now = Date.now(); if (now - lastMoveTime > moveInterval) { lastMoveTime = now; targetX = (e.clientX / window.innerWidth) * 100; targetY = (e.clientY / window.innerHeight) * 100; } }); // Variable to hold the animation frame ID (for scroll control) let rafId; // Pause animation during scroll let isScrolling; window.addEventListener('scroll', () => { cancelAnimationFrame(rafId); clearTimeout(isScrolling); isScrolling = setTimeout(() => { animate(); // Restart animation after a brief delay }, 150); // Adjust delay to your preference }); function animate() { currentX += (targetX - currentX) * 0.3; currentY += (targetY - currentY) * 0.3; const mask = `radial-gradient( circle at ${currentX}% ${currentY}%, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0.8) 5%, rgba(255, 255, 255, 0.5) 10%, rgba(255, 255, 255, 0.2) 15%, rgba(255, 255, 255, 0) 20% )`; bg.style.maskImage = mask; bg.style.webkitMaskImage = mask; rafId = requestAnimationFrame(animate); // Save the frame ID } animate(); // Start animation
------------- --------------------