내 새로운 2026 포트폴리오: Google Cloud와 AI 기반

발행: (2026년 1월 10일 오전 04:11 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

My New 2026 포트폴리오 표지 이미지: Google Cloud 및 AI로 구동

Google AI가 제시한 새해, 새로운 당신 포트폴리오 챌린지 제출 (링크: New Year, New You Portfolio Challenge Presented by Google AI)

소개

Hi, I’m a passionate full‑stack developer who loves exploring the intersection of design and engineering. For 2026, I wanted to express my evolution as a creator—moving beyond static pages to build immersive, interactive web experiences.

My goal with this portfolio was to create a “digital home” that feels alive. I wanted to showcase not just what I build, but how I think about performance, aesthetics, and user experience.

Portfolio

(포트폴리오는 챌린지 설명에 제공된 링크에서 실시간으로 확인할 수 있습니다.)

어떻게 만들었는가

이 포트폴리오는 속도, 인터랙티브성 및 확장성을 위해 구축된 최신 웹 애플리케이션입니다.

기술 스택

  • 프레임워크: Next.js 15 (App Router)
  • 언어: TypeScript
  • 스타일링: Tailwind CSS & custom CSS
  • 애니메이션: GSAP (GreenSock) for complex timelines and Framer Motion for UI interactions
  • 3D 요소: React Three Fiber (R3F) integration
  • 배포: Dockerized and hosted on Google Cloud Run

디자인 결정

저는 최신 UI 트렌드에서 영감을 받아 메인 네비게이션에 “벤토 박스” 그리드 레이아웃을 적용했습니다. 이를 통해 사용자는 제 작업의 다양한 측면(블로그, 프로젝트, 경력)을 모듈식으로 탐색할 수 있습니다.

컬러 팔레트는 깊고 풍부한 배경에 네온 포인트를 사용해 프리미엄하고 하이테크한 느낌을 줍니다. 가능한 한 표준 라이브러리 컴포넌트를 피하고, “플로팅 도크” 네비게이션과 같은 맞춤 UI 요소를 구축하여 독특한 아이덴티티를 확보했습니다.

Google Cloud 및 AI 통합

Google Cloud Run에 배포하는 과정은 매우 간단했습니다. 멀티‑스테이지 Dockerfile을 사용해 애플리케이션을 컨테이너화하여 이미지 크기를 최소화했으며(Next.js standalone 모드 활용).

  • Containerization: node:20-alpine 기반의 고도로 최적화된 Docker 이미지를 빌드했습니다.

    # syntax=docker/dockerfile:1
    FROM node:20-alpine AS builder
    WORKDIR /app
    COPY package*.json ./
    RUN npm ci
    COPY . .
    RUN npm run build && npm prune --production
    
    FROM node:20-alpine AS runner
    WORKDIR /app
    COPY --from=builder /app/.next/standalone ./
    COPY --from=builder /app/.next/static ./static
    EXPOSE 8080
    CMD ["node", "server.js"]
  • Deployment: Google Artifact Registry에 푸시한 뒤 단일 명령으로 Cloud Run에 배포했습니다.

  • AI Assistance: Antigravity를 통해 Google의 Gemini 모델을 활용하여 복잡한 GSAP 애니메이션 로직을 생성하고, Next.js 15로 마이그레이션하는 과정에서 발생한 엄격한 TypeScript 오류를 디버깅했습니다.

내가 가장 자랑스러워하는 것

🚀 우주선 게임

포트폴리오에 직접 삽입된 완전 플레이 가능한 우주선 슈팅 게임입니다. 상태 관리와 캔버스 성능 최적화에 대한 도전 과제로, 모바일 기기에서도 60 FPS로 부드럽게 실행됩니다.

⚛️ 테크 중력 (물리 기반 스택)

  • 작동 방식: Matter.js를 사용해 각 기술 아이콘이 물리 본체가 되는 2D 물리 세계를 만들었습니다.
  • 상호작용: 사용자는 아이콘을 잡고, 끌고, 던질 수 있습니다.
  • 동적 효과: 충돌 이벤트가 SVG 번개와 GSAP을 통한 빛나는 효과를 트리거하여 기술들 간의 에너지와 연결감을 제공합니다. IntersectionObserver는 컴포넌트가 화면에 보이지 않을 때 물리 엔진을 일시 정지시켜 배터리 소모를 줄입니다.

🌳 3D 유기적 스크롤 배경

  • 절차적 생성: 재귀 알고리즘이 실시간으로 3D 나무 구조를 생성합니다.
  • 맞춤 투영: 가벼운 3D‑to‑2D 원근 투영 함수가 생성된 점들을 SVG 캔버스로 매핑하여 무거운 3D 라이브러리를 피합니다.
  • 스크롤 애니메이션: GSAP ScrollTrigger를 사용해 스크롤할 때 가지가 “성장”하고 스스로 그려집니다. 경로는 유기적이고 부드러운 선을 위해 2차 베지어 곡선을 사용하며, 깊이 정렬(페인터 알고리즘)을 통해 Z‑depth에 따라 가지를 올바르게 레이어링합니다.

새해, 새로운 당신 포트폴리오 챌린지를 위해 제작되었습니다.

Back to Blog

관련 글

더 보기 »

안녕, 뉴비 여기요.

안녕! 나는 다시 S.T.E.M. 분야로 돌아가고 있어. 에너지 시스템, 과학, 기술, 공학, 그리고 수학을 배우는 것을 즐겨. 내가 진행하고 있는 프로젝트 중 하나는...