본문으로 건너뛰기
DEVKBS
작업 원장
008Vstro2023.10 – 2023.11운영 중

Eurasia Consulting 홈페이지

워드프레스에서 Next.js로, 디자인까지 혼자

기간
2023.10 – 2023.11
분류
웹사이트
역할
기획·디자인·개발 단독
구성
단독 진행
사이트 방문
Eurasia Consulting 홈페이지 데스크톱 화면
Eurasia Consulting 홈페이지 모바일 화면

01개요

회사 사정상 디자인부터 개발까지 혼자 맡게 된 프로젝트였습니다. 워드프레스로 만들어져 있던 컨설팅 회사 홈페이지를 Next.js로 옮기는 일이었는데, 개발 기간보다 '디자인을 어떻게 할 것인가'가 더 큰 문제였습니다.

프론트엔드 개발자가 시안 없이 디자인까지 하려고 하면 대체로 두 가지 중 하나가 됩니다. 시간을 다 쓰고 개발을 못 끝내거나, 대충 만들어 결과물이 부끄러워집니다. 그래서 처음부터 '디자인 결정의 수를 줄이자'는 방향을 잡고 컴포넌트 키트를 도입했습니다.

기능적으로는 뉴스 RSS 연동과 파일 첨부가 가능한 문의 폼이 핵심이었습니다. 특히 파일 첨부는 클라이언트에서 보낸 데이터를 서버에서 어떻게 신뢰할 것인가라는, 당시의 나에게는 새로운 질문을 던져준 부분이었습니다.

02기술 결정

문제가 무엇이었고, 무엇을 골랐고, 그래서 어떻게 됐는지.

  1. 결정 01

    혼자 디자인해야 한다면 결정의 수를 줄인다

    문제
    디자이너 없이 시안부터 만들면 색·간격·타이포를 매번 새로 정하게 됩니다. 결정마다 시간이 들고, 일관성도 유지되지 않습니다.
    선택
    Daisy UI를 도입해 컴포넌트 단위의 기본값을 받아들이고, 내가 결정할 영역을 레이아웃과 콘텐츠 구조로 좁혔습니다.
    결과
    디자인에 쓰는 시간이 크게 줄었고 화면 간 일관성이 유지됐습니다. 개발 일정 안에 완성할 수 있었던 직접적인 이유였습니다.
  2. 결정 02

    첨부 파일은 클라이언트 검증을 믿지 않는다

    문제
    문의 폼에 파일 첨부를 붙였는데, 파일 크기와 확장자를 브라우저에서만 확인하면 요청을 직접 조작해 우회할 수 있습니다. 메일 서버가 그대로 노출되는 셈입니다.
    선택
    클라이언트에서 바이너리로 변환해 보내고, 서버에서 Buffer의 byteLength로 실제 크기를, 파일 시그니처로 실제 타입을 다시 확인했습니다. 확장자 문자열은 참고만 합니다.
    결과
    확장자를 바꿔 올린 파일이 서버에서 걸러집니다. 이 경험 이후로 '클라이언트 검증은 사용자 편의, 서버 검증은 보안'이라는 구분이 몸에 뱄습니다.
  3. 결정 03

    외부 RSS를 쓰기 전에 저작권부터 확인한다

    문제
    최신 뉴스 섹션을 위해 언론사 RSS를 가져다 쓰려 했는데, 기술적으로 가능한 것과 써도 되는 것은 다른 문제였습니다.
    선택
    제공 언론사의 RSS 이용 조건을 먼저 확인하고, 전문 대신 제목·요약·원문 링크만 노출하는 방식으로 구현했습니다.
    결과
    기능은 유지하면서 저작권 문제를 피했습니다. 외부 데이터를 쓸 때 라이선스를 먼저 확인하는 것이 개발 순서의 일부라는 걸 이때 배웠습니다.

03주요 기능

  • 뉴스 RSS 연동

    언론사 RSS를 파싱해 제목·요약·원문 링크 형태로 최신 소식을 표시.

  • 파일 첨부 문의 폼

    Nodemailer로 메일을 보내고, 첨부 파일은 서버에서 크기·타입을 재검증.

  • 전면 리뉴얼

    워드프레스 콘텐츠 구조를 정리해 Next.js 라우트로 재구성.

04화면

Desktop

Mobile · 반응형

  • Eurasia Consulting 홈페이지 모바일 화면 1

    01

  • Eurasia Consulting 홈페이지 모바일 화면 2

    02

  • Eurasia Consulting 홈페이지 모바일 화면 3

    03

  • Eurasia Consulting 홈페이지 모바일 화면 4

    04

05회고

혼자 다 해야 하는 상황에서는 무엇을 직접 정하지 않을지 고르는 게 실력입니다. UI 키트를 쓴 건 실력이 모자라서가 아니라 시간을 어디에 쓸지 정한 것이었습니다.

서버 검증의 의미를 처음으로 실감한 프로젝트이기도 합니다. 그전까지는 폼 검증을 '사용자가 실수하지 않게 돕는 것'으로만 생각했는데, 첨부 파일을 다루면서 검증에는 전혀 다른 두 가지 목적이 있다는 걸 알게 됐습니다.