Movie gallery 대표 이미지

Movie gallery

MediaPipe 기반 제스처 제어형 영화 포스터 기록

작업일
2026.03.25
디자인 분야
인터랙션·모션
용도
코드·프로토타입
사용 도구
FigmaGeminiSupabase
작성자
조윤서

작업 배경

개인 기록을 축적할 수 있는 웹을 만들고자 시작한 작업이다. 바이브코딩을 연습하며 3차원 공간처럼 깊이감이 느껴지는 캔버스형 인터페이스를 구현했다. 작업 과정에서 데이터베이스와 매직 링크 기반 이메일 로그인 기능을 처음 적용했다. 당시에는 MCP를 사용하지 않았으며, Gemini와 대화하며 구현 방향을 정리하고 IDE에서 직접 코드를 수정했다.

작업 단계

서비스 기획

Figma

바이브코딩 연습을 위한 개인 기록 웹의 방향을 정하고, 영화 목록 API와 BaaS를 활용하는 구조를 계획했다. 레이아웃 와이어프레임을 작성해 기본 화면 구성을 정리했다.

Supabase 연결

Supabase

웹에서 생성한 데이터를 저장하고 관리하기 위한 백엔드 서비스를 연결했다.

Supabase 연결 단계 이미지

매직 링크 로그인 구현

Gemini

기존 카카오·구글 로그인에 더해 이메일로 인증 링크를 전송하는 매직 링크 로그인 기능을 구현했다.

그리고 로그인은 일단 supabase로 카카오, 구글 두 개 연결해놓긴 했는데 이메일로 매직 링크 보내서 로그인하는 기능도 만들어줘. html 이메일 템플릿으로 초대링크 보내서 로그인하게끔 하면 돼. html 이메일 템플릿은 짜놨으니까 파일 확인해.

영화 목록 API 연결

Gemini

영화 검색 결과와 포스터 이미지를 웹에 불러오기 위해 TMDB API를 연결했다.

3차원 탐색 로직 구현

Gemini

영화 포스터가 깊이감을 가진 무한 확장 캔버스에 배치되고, 사용자의 제스처에 반응해 공간을 탐색할 수 있는 렌더링 로직을 구현했다.

영화 포스터들이 뎁스가 있는 무한확장 캔버스 형태로 배열된 3D 공간을 사용자가 제스처로 탐험하는 웹의 렌더 로직을 짜줘.
빨려 들어가는 듯한 Depth 체감 (Pinch Zoom) / 속도에 반응하는 미세한 모션 블러 / 거리에 따른 흑백/밝기 감쇄
Palm Position - 카메라 앞 손바닥의 중심 좌표로 이동 속도 제어.
Pinch Gesture - 검지와 엄지 사이의 거리를 계산하여 확대 및 축소. 이거 확대 축소 할 때 포스터 메시 간 거리가 1차원적으로 줄면 안되고 뎁스에 따라서 속도가 달라야겠지.

지금 빌드는 Vite/vercel로 호스팅 하고 있으니께 알아서 잘 최적화할 수 있는 걸로. Three.js 쓰면 되지 않나
필요하다면 vanila js 외에 react 등을 사용해도 돼. 그리고 포스터는 흑백이 아니고 원본 이미지 그대로이되 멀어질수록 흑백+화이트아웃이 되는거야. 우선 네가 계획한대로 진행해봐. 코드 작성시에도 초보자도 보고 이해하며 공부할 수 있도록 상세한 주석을 달아.

인터랙션 및 기록 기능 보정

Gemini

포스터의 원본 비율을 유지하면서 화면 스타일과 줌 동작을 수정하고, 선택한 포스터에 마크다운 메모를 작성할 수 있도록 기능을 확장했다.

라운딩은 없애고, favicon도 없애. vite 기본 아이콘 개못생김 그리고 포스터 사이즈가 다양한 건 좋은데 가로세로 비율을 임의로 수정하지는 마. 원본 포스터가 잘리면 안돼. 그리고 마우스 휠을 아래로 스크롤하면 포스터간 간격이 줄어들면서 크기도 줄어들고 밀도가 높아지고, 위로 스크롤하면 활대되다가 꽤 커졌다 싶으면 수렴할정도로 미세하게만 커지게 로직 수정해. 줄어들때도 마찬가지고. 그리고 포스터를 클릭하면 왼쪽에는 포스터, 오른쪽에는 마크다운 형식으로 메모할 수 있는 타이핑 공간이 나오게끔 기능을 확장해줘.

회고

성과와 한계

완성도 높은 서비스로 발전시키기보다 바이브코딩을 연습하기 위한 습작에 가까운 작업이었다. 별도의 버전 관리나 지속적인 디벨롭은 진행하지 않았지만, 기능 구현을 넘어 웹을 하나의 서비스로 바라보기 시작한 첫 시도였다는 점에 의미가 있었다. Supabase와 같은 서비스를 활용하며 데이터베이스를 처음부터 직접 구성하지 않아도 빠르게 기능을 구현할 수 있다는 점을 경험했고, 작업에 활용할 수 있는 다양한 도구와 서비스가 있다는 것도 알게 되었다.

시행착오와 개선점

3차원 공간처럼 보이는 웹 레퍼런스는 많았지만, 익숙한 형태를 벗어나면서도 자연스러운 깊이감을 만드는 데 어려움이 있었다. 실제 3D 공간을 구현하기보다 로직에 따라 포스터의 크기와 이동 속도를 조절해 깊이감을 만드는 방식이었기 때문에, 시각적으로 설득력 있는 움직임을 만드는 과정에서 반복적인 조정이 필요했다. 캐러셀처럼 구조가 단순해 보이는 인터랙션도 바이브코딩만으로 완성도 있게 구현하려면 세부적인 움직임과 비율을 직접 조정해야 한다는 점을 확인했다.

적합한 활용 맥락

데이터 저장이 필요한 웹

참고 자료

댓글

0개

작성자 정보를 확인하고 있습니다.