하드 스펙 문서: Antiperfect.Club 리브랜딩 프로젝트 완전 기술 명세서

서론: 하드 스펙이 없는 디자인은 추측에 불과하다

‘느낌’으로 디자인을 하지만, 실제 개발에서는 구체적인 수치와 명세가 필요하다. 이 문서는 Antiperfect.Club 리브랜딩 프로젝트의 완전한 기술 명세서로, 개발자가 즉시 구현할 수 있는 모든 하드 스펙을 담고 있다.

1. 프로젝트 요구사항 명세서 (PRD)

1.1 프로젝트 개요

항목 내용
프로젝트명 Antiperfect.Club 리브랜딩
목적 개인 포트폴리오를 고부가가치 컨설팅 리드 확보 플랫폼으로 전환
기술 스택 React, TypeScript, SCSS, Vite
타겟 해상도 1440px 데스크톱 기준 (반응형)
접근성 WCAG 2.1 AA 준수

1.2 핵심 페이지 구조

graph TD
    A[Home] --> B[Services]
    A --> C[Case Studies]
    A --> D[About]
    A --> E[Journal]
    B --> F[UX Compliance]
    B --> G[Full-Stack CRO]
    B --> H[Creative Web Production]
    B --> I[Antiperfect Mindset Workshop]
    
    style B fill:#f9f,stroke:#333,stroke-width:2px
    style C fill:#f9f,stroke:#333,stroke-width:2px

2. 디자인 시스템 명세

2.1 컬러 팔레트

역할 (Role) 설명 색상 값 (HEX) CSS 변수 사용처
Background 기본 배경색 #000000 --color-background 전체 배경
Text Primary 주요 텍스트 #FFFFFF --color-text-primary 본문, 제목
Text Secondary 보조 텍스트 #A0A0A0 --color-text-secondary 부제, 설명
Accent Primary 주요 악센트 #FF00FF --color-accent-primary CTA, 링크
Accent Secondary 보조 악센트 #00FFFF --color-accent-secondary 태그, 보조 하이라이트
Accent Glitch 글리치 효과 #00FF00 --color-accent-glitch 애니메이션
Component BG 컴포넌트 배경 rgba(255, 255, 255, 0.05) --color-component-bg 카드, 모듈

CSS 변수 정의:

:root {
  --color-background: #000000;
  --color-text-primary: #FFFFFF;
  --color-text-secondary: #A0A0A0;
  --color-accent-primary: #FF00FF;
  --color-accent-secondary: #00FFFF;
  --color-accent-glitch: #00FF00;
  --color-component-bg: rgba(255, 255, 255, 0.05);
}

2.2 타이포그래피 시스템

역할 (Role) 폰트 패밀리 크기 (rem) 굵기 줄 간격 CSS 변수
H1 VT323, monospace 3.0rem 400 1.2 --font-h1
H2 VT323, monospace 2.25rem 400 1.3 --font-h2
H3 Inter, sans-serif 1.5rem 700 1.4 --font-h3
H4 Inter, sans-serif 1.125rem 600 1.5 --font-h4
Body Primary Inter, sans-serif 1.0rem 400 1.6 --font-body-primary
Body Small Inter, sans-serif 0.875rem 400 1.5 --font-body-small

CSS 변수 정의:

:root {
  /* Font Family */
  --font-family-display: 'VT323', monospace;
  --font-family-sans: 'Inter', sans-serif;

  /* Font Styles */
  --font-h1: 400 3.0rem/1.2 var(--font-family-display);
  --font-h2: 400 2.25rem/1.3 var(--font-family-display);
  --font-h3: 700 1.5rem/1.4 var(--font-family-sans);
  --font-h4: 600 1.125rem/1.5 var(--font-family-sans);
  --font-body-primary: 400 1.0rem/1.6 var(--font-family-sans);
  --font-body-small: 400 0.875rem/1.5 var(--font-family-sans);
}

2.3 스페이싱 시스템

4px 기반의 일관된 스페이싱 시스템을 사용한다.

토큰 (Token) 값 (px) CSS 변수 사용처
space-1 4px --space-1 미세한 여백
space-2 8px --space-2 작은 여백
space-3 12px --space-3 중간 여백
space-4 16px --space-4 기본 여백
space-6 24px --space-6 섹션 간격
space-8 32px --space-8 큰 여백
space-12 48px --space-12 페이지 간격
space-16 64px --space-16 최대 여백

CSS 변수 정의:

:root {
  --space-1: 0.25rem; /* 4px */
  --space-2: 0.5rem;  /* 8px */
  --space-3: 0.75rem; /* 12px */
  --space-4: 1rem;    /* 16px */
  --space-6: 1.5rem;  /* 24px */
  --space-8: 2rem;    /* 32px */
  --space-12: 3rem;   /* 48px */
  --space-16: 4rem;   /* 64px */
}

3. 컴포넌트 아키텍처

3.1 컴포넌트 계층 구조

graph TD
    A[Design System] --> B[Atoms]
    A --> C[Molecules]
    A --> D[Organisms]
    A --> E[Templates]
    A --> F[Pages]
    
    B --> B1[Button]
    B --> B2[Input]
    B --> B3[Typography]
    
    C --> C1[ServiceCard]
    C --> C2[CaseStudyCard]
    C --> C3[Navigation]
    
    D --> D1[Header]
    D --> D2[ServiceSection]
    D --> D3[Footer]
    
    E --> E1[ServicePage]
    E --> E2[AboutPage]
    
    F --> F1[Services]
    F --> F2[CaseStudies]
    F --> F3[About]

3.2 핵심 컴포넌트 명세

3.2.1 ServiceBlock 컴포넌트

구조: H2 제목 + 설명 + 2개 모듈 (ShowcaseModule, TechStackModule)

요소 (Element) 스타일 상태 (State)
전체 컨테이너 padding: var(--space-8)
border-top: 1px solid var(--color-component-bg)
-
H2 제목 font: var(--font-h2)
color: var(--color-text-primary)
Hover: text-shadow: 0 0 10px var(--color-accent-primary)
P 설명 font: var(--font-body-primary)
color: var(--color-text-secondary)
max-width: 70ch
-
내부 모듈들 background-color: var(--color-component-bg)
padding: var(--space-6)
border-radius: var(--space-2)
Hover: box-shadow: 0 0 15px var(--color-accent-secondary)

React 컴포넌트 구조:

interface ServiceBlockProps {
  title: string;
  description: string;
  showcase: {
    title: string;
    content: string;
  };
  techStack: string[];
}

const ServiceBlock: React.FC<ServiceBlockProps> = ({
  title,
  description,
  showcase,
  techStack
}) => {
  return (
    <div className="service-block">
      <h2 className="service-title">{title}</h2>
      <p className="service-description">{description}</p>
      <div className="service-modules">
        <ShowcaseModule {...showcase} />
        <TechStackModule technologies={techStack} />
      </div>
    </div>
  );
};

구조: 상단 고정 헤더, 로고 + 네비게이션 링크

요소 스타일 상태
헤더 컨테이너 position: fixed
top: 0
width: 100%
background: var(--color-background)
border-bottom: 1px solid var(--color-component-bg)
-
네비게이션 링크 font: var(--font-body-primary)
color: var(--color-text-secondary)
Hover: color: var(--color-accent-primary)
Active: color: var(--color-text-primary)

4. 레이아웃 시스템

4.1 그리드 시스템

기본 그리드: 12컬럼 그리드 시스템 브레이크포인트:

  • 모바일: 320px - 768px
  • 태블릿: 768px - 1024px
  • 데스크톱: 1024px+

CSS 그리드 정의:

.container {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: var(--space-4);
  max-width: 1440px;
  margin: 0 auto;
  padding: 0 var(--space-4);
}

@media (max-width: 768px) {
  .container {
    grid-template-columns: 1fr;
    gap: var(--space-2);
    padding: 0 var(--space-2);
  }
}

4.2 페이지 레이아웃 명세

4.2.1 Services 페이지 레이아웃
+--------------------------------------------------------------------------+
| Header: [Services] [Case Studies] [About] [Journal]                      |
+--------------------------------------------------------------------------+
|                                                                          |
|     <H1> Services & Capabilities                                         |
|     <H4> This is how I translate my unconventional arsenal...            |
|                                                                          |
+==========================================================================+
|                                                                          |
|     <Service Block 1: UX Compliance & Team Training>                     |
|                                                                          |
|     +------------------------------------------------------------------+ |
|     |  [서비스 설명]                                                   | |
|     |  +------------------------------------------------------------+  | |
|     |  | [관련 역량 쇼케이스: Pragmatic Compliance...]              |  | |
|     |  +------------------------------------------------------------+  | |
|     |  [Key Technologies: WCAG, JIRA, ISO 27001...]                | | |
|     +------------------------------------------------------------------+ |
|                                                                          |
+--------------------------------------------------------------------------+

5. 인터랙션 명세

5.1 애니메이션 가이드라인

인터랙션 유형 목적 구현 방법 지속 시간
호버 효과 피드백 제공 transform, box-shadow 150ms
스크롤 애니메이션 시각적 흥미 GSAP, Intersection Observer 300ms
페이지 전환 일관성 유지 터미널 스타일 로딩 500ms
글리치 효과 브랜드 개성 CSS clip-path, transform 100ms

5.2 CSS 애니메이션 변수

:root {
  --duration-fast: 150ms;
  --duration-normal: 300ms;
  --duration-slow: 500ms;
  --ease-out: ease-out;
  --ease-in-out: ease-in-out;
}

/* 호버 효과 예시 */
.button {
  transition: all var(--duration-fast) var(--ease-out);
}

.button:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 20px rgba(255, 0, 255, 0.4);
}

/* 글리치 효과 예시 */
.glitch-text {
  animation: glitch 0.1s infinite;
}

@keyframes glitch {
  0% { transform: translate(0); }
  20% { transform: translate(-2px, 2px); }
  40% { transform: translate(-2px, -2px); }
  60% { transform: translate(2px, 2px); }
  80% { transform: translate(2px, -2px); }
  100% { transform: translate(0); }
}

6. 반응형 디자인 명세

6.1 브레이크포인트

디바이스 최소 너비 최대 너비 그리드 컬럼
모바일 320px 768px 1
태블릿 768px 1024px 6
데스크톱 1024px 1440px+ 12

6.2 반응형 타이포그래피

/* 모바일 */
@media (max-width: 768px) {
  :root {
    --font-h1: 400 2rem/1.2 var(--font-family-display);
    --font-h2: 400 1.5rem/1.3 var(--font-family-display);
    --font-h3: 700 1.25rem/1.4 var(--font-family-sans);
  }
}

/* 태블릿 */
@media (min-width: 769px) and (max-width: 1024px) {
  :root {
    --font-h1: 400 2.5rem/1.2 var(--font-family-display);
    --font-h2: 400 2rem/1.3 var(--font-family-display);
  }
}

7. 성능 최적화 명세

7.1 이미지 최적화

  • 포맷: WebP 우선, PNG/JPEG 폴백
  • 크기: 데스크톱 1440px, 태블릿 768px, 모바일 320px
  • 로딩: Lazy loading 적용
  • 압축: 80% 품질 기준

7.2 폰트 최적화

/* 폰트 로딩 최적화 */
@font-face {
  font-family: 'Inter';
  src: url('/fonts/inter-var.woff2') format('woff2-variations');
  font-weight: 400 700;
  font-display: swap;
}

@font-face {
  font-family: 'VT323';
  src: url('/fonts/vt323-regular.woff2') format('woff2');
  font-weight: 400;
  font-display: swap;
}

8. 접근성 명세

8.1 WCAG 2.1 AA 준수 항목

항목 요구사항 구현 방법
색상 대비 4.5:1 이상 컬러 팔레트 검증
키보드 네비게이션 모든 인터랙티브 요소 접근 가능 tabindex, focus 스타일
스크린 리더 지원 의미있는 HTML 구조 시맨틱 마크업
애니메이션 제어 사용자 설정 존중 prefers-reduced-motion

8.2 접근성 CSS

/* 키보드 포커스 스타일 */
:focus {
  outline: 2px solid var(--color-accent-primary);
  outline-offset: 2px;
}

/* 애니메이션 제어 */
@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

9. 테스트 명세

9.1 브라우저 지원

브라우저 최소 버전 테스트 우선순위
Chrome 90+ 높음
Firefox 88+ 높음
Safari 14+ 높음
Edge 90+ 중간

9.2 성능 목표

지표 목표값 측정 도구
First Contentful Paint < 1.5초 Lighthouse
Largest Contentful Paint < 2.5초 Lighthouse
Cumulative Layout Shift < 0.1 Lighthouse
Total Blocking Time < 300ms Lighthouse

10. 배포 명세

10.1 빌드 설정

{
  "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",
    "preview": "vite preview",
    "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0"
  },
  "dependencies": {
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "gsap": "^3.12.0"
  },
  "devDependencies": {
    "@types/react": "^18.2.0",
    "@types/react-dom": "^18.2.0",
    "@vitejs/plugin-react": "^4.0.0",
    "typescript": "^5.0.0",
    "vite": "^4.0.0"
  }
}

10.2 환경 변수

# .env.production
VITE_APP_TITLE=Antiperfect.Club
VITE_APP_DESCRIPTION=Creative Technologist Portfolio
VITE_ANALYTICS_ID=GA_MEASUREMENT_ID

결론: 명세서의 힘

이 하드 스펙 문서는 단순한 디자인 가이드라인을 넘어서, 실제 개발팀이 즉시 구현할 수 있는 완전한 기술 명세서다. 모든 수치, 색상, 타이포그래피, 애니메이션, 반응형 동작이 구체적으로 정의되어 있어, 개발 과정에서 발생할 수 있는 모호함을 최소화한다.

특히 CSS 변수를 활용한 디자인 시스템은 일관성 있는 개발을 가능하게 하며, 컴포넌트 아키텍처는 재사용 가능한 코드 구조를 제공한다. 이는 단순한 포트폴리오 웹사이트를 넘어서, 확장 가능하고 유지보수가 용이한 디지털 제품의 기반이 된다.

부록: 개발 체크리스트

A. 구현 전 체크리스트

  • [ ] 디자인 시스템 CSS 변수 설정
  • [ ] 폰트 파일 최적화 및 로딩 설정
  • [ ] 컴포넌트 아키텍처 설계
  • [ ] 반응형 브레이크포인트 정의
  • [ ] 접근성 가이드라인 적용

B. 구현 후 체크리스트

  • [ ] 모든 브라우저에서 테스트
  • [ ] 성능 최적화 검증
  • [ ] 접근성 검사 통과
  • [ ] 모바일 사용성 테스트
  • [ ] SEO 메타데이터 설정

이 명세서를 바탕으로 개발을 진행하면, 일관성 있고 확장 가능한 웹사이트를 효율적으로 구축할 수 있을 것이다.