Eurovision 2025 Voting Website: Supercharging the largest online voting experience with robust motion graphics for 50M+ fans.

CONTEXT

INTERNSHIP AT ONCE.NET (2025)

ROLE

MOTION DESIGNER

FUNCTION

RAPID PROTOTYPING, BRAND IMPLEMENTATION, QUALITY ASSURANCE

STACK

P5.JS, HTML CANVAS, CSS

MEMORY ALLOCATION : OPTIMAL
ARCHIVE NODE : 0x4A7B

> ABOUT

For Eurovision 2025's Voting Website, I designed and developed animations that brought the contest energy onto every screen at home. Over three weeks at Once.net, I overhauled the static website with lightweight, responsive motion graphics consistent across every device and region.

CHECKSUM : VERIFIED
KEY EXCHANGE : SUCCESS
LOADING FUNC #343 ##==
FRAGMENTATION : 1.3%
NPU1_OUTPUT : PROCEED
NPU2_OUTPUT : PROCEED
NPU3_OUTPUT : PROCEED
3S  UV 4D  XX 1C
3S  K  4D  Y  1B
3S  UV 4D  XX 1C
3S  K  4D  Y  1B
EDGE SERVER : AMS-02
CONTENT ID : 5291-13XX
PING : 1MS
SYNTAX PARSING : COMPLETE
OUTPUT TARGET : x86_64

> CHALLENGE

Eurovision 2025 introduced bold new brand guidelines that relied exclusively on motion to convey identity, with the Eurovision heart as its centerpiece. However, video-based animations were immediately ruled out. File size would create unacceptable delays on slower networks. The solution had to fit within a minimal payload, with no performance compromise.

PORT 1117J : SECURE
AUTH PASSKEY>>> [REDACTED]
SHARD TRANSFER INITIALIZING
PACKET INTEGRITY : 100%
X32
B20

> BRAND GUIDELINES

My design process began with an in-depth study of the official Eurovision 2025 motion guidelines, which established three core principles:

Visual elements had to react as a unified system.

Linear motion was explicitly prohibited, the brand requiring behavior that appeared alive.

The format had to adapt to the page content, not the other way around.

STREAMING DATA PACKETS
CHUNK 01/24 : RECEIVED
CHUNK 02/24 : RECEIVED
CHUNK 03/24 : IN TRANSIT ...
LATENCY : NOMINAL

> THE GRID

Initial prototyping started simple, with a basic grid of hearts. I explored motion by adding mouse-based interactivity that resized hearts based on cursor proximity.

3S  UV 4D  XX 1C
3S  K  4D  Y  1B
3S  UV 4D  XX 1C
3S  K  4D  Y  1B
VERTEX SHADER : COMPILED
FPS : 60 [LOCKED]

> NOISE CONTROL

I introduced a Perlin noise layer to control heart sizes algorithmically. By configuring the noise to evolve at a low frequency and progress slowly along the Z-axis, hearts appeared as if reacting in organic patterns.

3S  UV 4D  XX 1C
3S  K  4D  Y  1B
3S  UV 4D  XX 1C
3S  K  4D  Y  1B
LOAD BALANCING : OPTIMAL
UPTIME : 99.97%

> BLOCK-OUT

To achieve grid adaptability, I introduced a gradient map as an additional control layer. Heart sizes were remapped to the composite function of [noise * gradient], resulting in a highly controllable system that enabled region-specific masking.

3S  UV 4D  XX 1C
3S  K  4D  Y  1B
3S  UV 4D  XX 1C
3S  K  4D  Y  1B
ORIGIN REQUESTS : 3,247
CACHED RESPONSES : 52,891

> POLISHING

I achieved the final effect by adding 2 layers of hearts, each with its own colour and delay timer. This solution perfectly emulated Eurovision 2025's brand guidelines on an entirely algorithmic basis.

3S  UV 4D  XX 1C
3S  K  4D  Y  1B
3S  UV 4D  XX 1C
3S  K  4D  Y  1B
SHELL DIAGNOSTIC INITIALIZING [::
SHARD_00 [PRIMARY] ... OK
SHARD_01 [REPLICA] ... OK
SHARD_01 [REPLICA] ... OK
::]
3 892 561
7 443 205
20/25
REV 2
3S  UV 4D  XX 1C
3S  K  4D  Y  1B
3S  UV 4D  XX 1C
3S  K  4D  Y  1B

> OPTIMIZATION

Prototypes in p5.js achieved the desired outcome, but lacked the performance needed at scale. With all of p5.js’s utility functions, script loading times exceeded 100ms; for a voting website of this scale, that was unacceptable.

Therefore, I pursued every optimisation opportunity, migrating to HTML canvas and rewriting pre-built p5 functions. This resulted in a final loading time of 1ms, a 100x reduction compared to the original codebase.

I followed with extensive QA testing, covering both physical and virtual environments. Network simulation ensured performance from 2G mobile through fiber connections, while virtual testing validated consistency across 100+ device configurations.

LOG AGGREGATION
LEVEL : ERROR [12 ENTRIES]
LEVEL : WARN [47 ENTRIES]
LEVEL : INFO [892 ENTRIES]
INDEXED : ELASTICSEARCH
3S  UV 4D  XX 1C
3S  K  4D  Y  1B
3S  UV 4D  XX 1C
3S  K  4D  Y  1B

COUNTRIES SERVED

189

DEVICES SUPPORTED

99.9%

CODE FOOTPRINT

1.4KB

GRACEFUL SHUTDOWN INITIATED
SAVING STATE : IN PROGRESS
CLOSING CONNECTIONS : 12/12
FLUSHING BUFFERS : COMPLETE
EXIT CODE : 0
"Luca managed to translate complex branding into fluid, efficient motion. The result looked great and loaded instantly."

JIM DE BEER

CTO AT ONCE.NET

> REFLECTION

Eurovision 2025's voting website shows how motion design can elevate digital experiences without compromising performance. A few personal learnings from the development of this project:

Custom UI massively helped with parameter discovery, compared to manual code iteration. This approach also opened up the creative process: non-technical stakeholders could explore variations independently, contributing directly while avoiding bottlenecks.

Building a state exporter streamlined stakeholder meetings and fine-tuning workflows. Interesting configurations could be saved, shared, and reloaded instantly rather than relying on documentation or memory.

WARNING>>> BUFFER OVERFLOW
DD
5C  E9  DD
AF  BD  5C  E9  DD
DD
5C  E9  DD
AF  BD  5C  E9  DD
DD
5C  E9  DD
AF  BD  5C  E9  DD

> CONTACT

UPLINK ESTABLISHED

100%

IDENTIFIER VERIFIED

100%

CONNECTION SECURED

100%

Open communication channel?

CONNECT

ZZT
BBX