Scroll

Hello! Im Leia,

3rd year Design Engineering student at Imperial College London

About Me!

I enjoy moving between creative thinking and technical problem solving, bringing together mechanical design, electronics and software to make ideas work. I put the user at the centre of my process, testing early and using feedback to learn from insights and shape solutions around people’s needs.

  • Fusion 360
  • Blender
  • User Research
  • Python
  • MATLAB
  • Figma
  • 3D Printing
  • Usability Testing
  • MicroPython
  • C++
  • Laser Cutting
  • Adobe CC
  • Ideation
  • Visual Storytelling
  • JavaScript

Projects

CardClutch

Santa’s Stuck!

Santa’s Stuck! A playful interactive toy that uses behavioural feedback to create a sense of personality. Users experiment with different interactions to help Santa escape the chimney and deliver their present. Interactions: push him down, tickle his belt, pull his beard, knock a sequence, collect the present. Designing joy through interaction: observe Santa’s mood through his reactions, connect different actions to behaviour-driven states, and solve the right sequence to help Santa deliver his presents. My role: I designed all mechanical components in CAD, prepared the laser cut parts, built the electronics and programmed the interactive system, while my partner focused on the video and helped with the decorations.
Mechanism development: Bela with C++ and Pure Data processes capacitive touch, piezo, limit switch and button inputs, controlling the mechanism and generating responsive real-time audio. 3D printing for rapid prototyping. Inspiration from Disney Imagineering and escape rooms. Vertical chimney movement driven by a screw linear actuator. Present reveal driven by a gear train and rack-and-pinion with a 20:1 gear reduction to synchronise with Santa’s movement. Head shaking: one servo creates a sharp “no” shake or a gentle laughing wobble, with non-blocking millis() timing. Late night testing occasionally turned Santa a little demonic. Interaction flow map: from the start, belt tickles and beard pulls move Santa between happy, neutral and angry states. Tapping the chimney when happy makes Santa drop down and deliver the present; when angry he refuses as you are on the naughty list.

Behind the Collection

Labyrinth

Choose 2–4 players and take turns on one screen. Best played expanded on a laptop or desktop.

Overview: Labyrinth is a browser based version of the Labyrinth board game, built with JavaScript ES modules, functional game logic, BFS pathfinding, sprite animations and automated testing. Tools: JavaScript, ES Modules, Ramda, HTML/CSS, Mocha and JSDoc. A 2–4 player strategy game where players shift a 7×7 maze to create new paths, then move around the board to collect three colour-matched hearts. The four hand-drawn characters, Earth, Fire, Shadow and Wind, each with their heart. I designed and hand drew the characters and visual elements to give the game an indie, illustrated style, using visual storytelling throughout the interface to make the experience more engaging and help communicate the game’s world and objectives. I built the game so that the game logic is kept separate from the DOM, which made it easier to test the rules independently and update the board as the game changes. Architecture: menu.js handles player selection and the screen transition, then hands over to game.js, the game engine handling board state, rules, shifts, movement and pathfinding. game.js updates Stats.js, which tracks the hearts collected by each player, and Labyrinth.js, which handles DOM rendering, user interaction and sprite animations. Key implementations. Immutable game state: rather than changing the existing game state, each action creates a new state, which helped prevent unexpected changes and made the game logic easier to test. BFS pathfinding: breadth-first search finds which tiles a player can reach and generates the route between two positions. Dynamic tile shifting: shifting a row or column moves the tiles around the board, including carrying any players standing on that line, and the spare tile wraps around to the opposite side. Ramda: used for a number of collection and transformation operations, keeping some of the game logic and test code more concise.

Aerodynamic SUV

Sustainable Aircraft Seat

Battery Cooling Plate

Tilt Quest