블로그 사이트 마이그레이션
블로그 사이트 마이그레이션

블로그 사이트 마이그레이션

작성일
2026년 01월 19일
태그
nextjs
react
css
카테고리
nextjs
Last edited time
Last updated January 19, 2026
날짜
디자이너가 운영하던 아카이브 사이트를 Next.js로 마이그레이션하면서 댓글, 포스트 관리 기능을 추가했다.
개발자로서 가장 신경 쓴 부분은 기능을 넣으면서도 원본의 힙한 감성을 해치지 않는 것이었다.

원본 사이트의 특징

  • 다크 모드 기본
  • 미니멀한 타이포그래피
  • 이미지 중심 레이아웃
  • 여백의 미
  • 불필요한 UI 요소 없음
추가하는 기능들이 이 감성을 해치면 안 됐다.
notion image

1. 댓글 UI: 투명하게

보통 댓글 폼은 배경색이 있고, 테두리가 두꺼우며, 라벨이 있다. 이게 다 디자인을 방해한다.
원칙: 있는 듯 없는 듯
<form className="space-y-4"> <input placeholder="닉네임" className=" bg-transparent border-b border-white/20 focus:border-white/60 transition-colors outline-none w-full py-2 " /> <textarea placeholder="댓글을 남겨주세요" className=" bg-transparent border border-white/20 focus:border-white/60 transition-colors outline-none w-full p-3 resize-none " /> </form>
포인트:
  • bg-transparent: 배경 없음
  • border-white/20: 희미한 테두리
  • focus:border-white/60: 포커스 시에만 살짝 강조
  • placeholder로 라벨 대체


2. 버튼: 텍스트만

원본 사이트에는 틀 같은 버튼이 없었다. 그래서 우리도 버튼을 최대한 절제했다.
<button type="submit" className=" text-white/60 hover:text-white transition-colors text-sm " > 등록 </button>
포인트:
  • 배경색, 테두리 없음
  • 텍스트만
  • 평상시는 희미하게, hover 시 밝게

4. 폰트: 원본 사이트와 통일

원본 사이트는 Press Start 2P 폰트를 사용했다. 이걸 그대로 가져왔다.
/* globals.css */ @font-face { font-family: 'Press Start 2P'; src: url('/fonts/PressStart2P-Regular.ttf'); } :root { --font-mono: 'Press Start 2P', monospace; }
// site.config.ts export const siteConfig = { name: "Parallel Walk", slogan: "Walk in your own orbit.", // ... };
사이트 이름, 슬로건 등에 이 폰트를 적용해 원본과 통일감을 줬다.

5. 레이아웃: 여백의 미

원본 사이트는 여백이 많았다. 콘텐츠가 빽빽하게 차있지 않았다.
// PostCard <article className="space-y-4"> {/* 이미지 */} <div className="aspect-square" /> {/* 작성자, 날짜 - 여백 충분히 */} <div className="mt-4 space-y-1"> <p className="text-sm">{author}</p> <p className="text-xs text-white/40">{date}</p> </div> </article>
포인트:
  • 요소 간 충분한 간격 (space-y-4, mt-4)
  • 텍스트는 작게 (text-sm, text-xs)
  • 부가 정보는 희미하게 (text-white/40)

6. 색상: 다크 모드 기본

원본이 다크 모드였으므로, 라이트 모드는 고려하지 않았다.
/* globals.css */ :root { --background: #000000; --foreground: #ffffff; --muted: rgba(255, 255, 255, 0.4); --border: rgba(255, 255, 255, 0.2); }
모든 UI가 이 색상 시스템을 따르도록 했다.

결과
notion image
 
이미지 크기에 따라 딱 정돈된게 아니라
이미지 사이즈에 맞춰 각 레이어가 구분되게끔 설계
 

정리: 디자인 원칙

요소
원칙
적용
배경
투명
bg-transparent
테두리
희미
border-white/20
텍스트
작게
text-sm, text-xs
강조
focus시만
focus:border-white/60
컨트롤
최소화
돈트만, 버튼 없음
여백
충분히
space-y-4, mt-4
개발자로서 기능을 추가할 때 "이게 원래 있던 것처럼" 보여야 한다는 게 가장 어려웠다. 기능을 넣는 것보다 절제하는 게 더 어려웠다.
또, 일관적이지 않은 디자인이 요구사항이어서 최대한 맞춰서 구현해보았다.