νλ‘ νΈμλ κ°λ°μ κΉμμμ ν¬νΈν΄λ¦¬μ€ μ¬μ΄νΈμ λλ€.
- React 19 + TypeScript
- Vite β λΉλ λꡬ
- Tailwind CSS v4 β μ€νμΌλ§
- React Three Fiber / drei β 3D Hero μ¬ (Three.js)
3D Hero μ¬
@react-three/fiberCanvas μμdreiμStars(λ°°κ²½ λ³)μ 컀μ€ν FloatingOrb(νμ μμ΄μ΄νλ μ μ μ΄μ면체),FloatingParticles(λΆμ νν°ν΄)λ₯Ό λ λλ§useFrameμΌλ‘ λ§€ νλ μ rotation Β· position μ λ°μ΄νΈ,MeshDistortMaterialλ‘ νλ©΄ distort ν¨κ³Ό μ μ©
μ€ν¬λ‘€ fade-in
useScrollFadeIn컀μ€ν ν μμIntersectionObserverλ‘ λ·°ν¬νΈ μ§μ μ κ°μ§, opacity Β· translateYλ₯Ό CSS transitionμΌλ‘ μ ν
3D tilt μΉ΄λ
useTilt컀μ€ν ν μμonMouseMoveμ΄λ²€νΈμ 컀μ μ’νλ₯Ό μΉ΄λ μ€μ¬ κΈ°μ€ λΉμ¨λ‘ λ³νν΄perspective+rotateX/Ytransform μ μ©
νλ‘μ νΈ λͺ¨λ¬
-
μΉ΄λ ν΄λ¦ μ
useStateλ‘ μ νλ νλ‘μ νΈλ₯Ό κ΄λ¦¬,ProjectModalμμuseEffectλ‘ body μ€ν¬λ‘€ μ κΈ λ° ESC ν€ μ΄λ²€νΈ λ±λ‘ -
λ°μν λ μ΄μμ + λͺ¨λ°μΌ νλ²κ±° λ©λ΄
src/
βββ components/
β βββ sections/ # νμ΄μ§ μΉμ
μ»΄ν¬λνΈ
β βββ ui/ # μ¬μ¬μ© UI (SectionTitle, ProjectModal, HeroScene)
β βββ icons/ # SVG μμ΄μ½
β βββ Navbar.tsx
βββ data/ # μ μ λ°μ΄ν° (νλ‘μ νΈ, κ²½λ ₯, μ격μ¦)
βββ hooks/ # 컀μ€ν
ν
(useTilt, useScrollFadeIn)
βββ types/ # TypeScript μΈν°νμ΄μ€
npm install
npm run dev