I build frontend systems where components behave, performance stays in check, and UX doesn't get left behind.
Most of my work revolves around Vue, with some Web Components when things need to stay framework agnostic. I've helped shape UI libraries, optimize real world applications, and collaborate with teams to turn messy requirements into clean interfaces.
Mako is an Android launcher designed for focus, speed, and simplicity.
| Home | Settings | About |
|---|---|---|
![]() |
![]() |
![]() |
3D CSS House / 2022/02/02
A lightweight 3D house visualizer built entirely with modern CSS and a bit of nested structure for clarity. It began as an experiment in recreating a simple architectural scene, but quickly grew into a full mini-environment with walls, roof, chimney, base, fence, and ground. The project uses pure CSS 3D transforms, no frameworks, libraries, or external rendering tools to generate depth, perspective, and animation, resulting in a clean, self-contained visual demo.
3D Map / 2022/01/24
A lightweight visualizer built with native Web Components and SVG, created as a refactor of a previous project that originally used Vue.js, Blender, and Konva. The original version started as a Google Maps-based app showing the cities where I’ve lived, studied, or worked. But as the map grew too large and visually restrictive, the project evolved into a custom-designed world.
3D Cube / 2021/02/27
A 3D color cube visualizer built with native Web Components and Three.js, this project renders thousands of colored cubes in a navigable 3D space. It includes optional grid and guide lines for orientation, interactive camera controls via OrbitControls, and a responsive renderer that adapts to window resizing, providing an intuitive and visually engaging way to explore color relationships in three dimensions.
Sine-Based Oscillation
This project aims to simplify how bouncing animations are calculated by removing the need for traditional conditional checks when an object reaches the edges of the screen. Instead, it uses a continuous filtering approach that naturally reverses direction, creating a smooth bounce effect without explicit boundary conditions. This technique can be applied to any scenario where an element needs to rebound (such as a ball moving around the screen or other looping, oscillating animations) making the underlying motion logic cleaner, more elegant, and easier to reuse in different programs.












