왜 블로그 플랫폼을 직접 만들기로 했을까?
지금 이 글도 티스토리에 작성하고 있지만, 어느 순간부터 생각이 들었습니다.
"내가 직접 글을 쓰는 공간, 내가 원하는 기능을 자유롭게 붙이고 고칠 수 있는 플랫폼을 직접 만들어보면 어떨까?"
기성 플랫폼이 제공하는 템플릿이나 기능이 충분하지 않거나, 특정한 콘텐츠 흐름(예: 개발자 글쓰기, 기술 문서, 나만의 북마크 등)에 맞게 구성하려면 결국 커스터마이징이 필요하다는 한계가 있었어요.
그래서 블로그 플랫폼을 직접 만드는 프로젝트를 시작했습니다.
기술 스택 구성
영역 | 스택 | 선택한 이유 |
🖥 프론트엔드 | React (with context API), Webpack | 컴포넌트 기반 구조로 UI를 관리하기 쉽고, context API를 통해 전역 상태도 무겁지 않게 다룰 수 있습니다. Webpack을 통해 커스터마이징된 번들링 설정도 유연하게 조정할 수 있습니다. |
🗄 백엔드 | Koa.js | Express보다 더 미니멀하고 현대적인 구조를 가진 Node.js 프레임워크입니다. 미들웨어 흐름이 명확해 API 설계에 집중하기 좋습니다. |
🧬 ORM | Sequelize (MySQL) | SQL 쿼리를 직접 다룰 수 있으면서도 모델 기반으로 직관적인 데이터 관리를 할 수 있어 유지보수와 협업에 유리합니다. 기존 프로젝트에서도 사용한 경험이 있어 안정적으로 선택했습니다. |
🧰 기타 | Babel, Webpack, Gulp | ES6+ 문법을 트랜스파일하고, 프론트 빌드와 정적 자산 처리에 필요한 자동화를 그대로 가져가기 위해 기존 빌드 환경 |
프로젝트 디렉토리 구조 설계
이번 프로젝트는 1패키지(monorepo) 구조로 설계했습니다.
프론트엔드와 백엔드를 하나의 저장소에서 통합 관리하고, 단일 package.json에서 의존성을 다루는 방식입니다.
project-root/
├── client/ # React 기반 프론트엔드
│ ├── pages/
│ ├── components/
│ ├── managers/
│ ├── routes/
│ └── ...
├── server/ # Koa 기반 백엔드
│ ├── controllers/
│ ├── services/
│ ├── models/
│ ├── routes/
│ └── ...
├── public/ # 정적 파일
├── package.json # 공통 패키지 관리
├── app.js # 서버 진입점
└── webpack.config.js # 프론트 빌드 설정
장점
- 프론트/백 공통 의존성 통합 관리
- 서버와 클라이언트 간 협업 흐름이 명확해짐
- 추후 CI/CD 및 배포에 유리
주요 목표 기능
- 글 목록 조회 / 상세 보기
- 글 작성 및 수정
- 사용자 인증 (로그인 / 로그아웃)
- 카테고리/태그 기반 글 정리
- 마크다운 기반 작성기
- 검색 기능
앞으로의 진행 방향
이 프로젝트는 단순한 CRUD 기능 구현에 그치지 않고,
다음과 같은 핵심 가치를 중심으로 완성도를 높여갈 예정입니다.
- 체계적인 구조 설계
- 실제 사용자 입장에서 고려한 사용성 및 품질
- 장기적인 관점에서의 코드 유지보수성과 확장성
- 검색 노출을 고려한 SEO 최적화
다음 글 예고
다음 글에서는 실제로 API와 DB 모델을 어떻게 설계했는지, Koa + Sequelize 조합으로 "블로그 글 작성 API" 를 어떻게 만들었는지를 공유해보겠습니다.
'TIL' 카테고리의 다른 글
운송장 기반 배송조회 크롤링 자동화: 우리택배 연동 과정 정리 (6) | 2025.06.09 |
---|---|
Exit Intent 배너 직접 구현기 – 유료 배너에서 자체 구현으로 전환한 이유와 방법 (0) | 2025.05.26 |
글또 회고록: 글쓰기에 대한 고민부터 성장까지 (0) | 2025.03.30 |
Git 브랜치 전략: Trunk-Based에서 GitHub Flow로의 여정 (0) | 2025.03.05 |
[React-Query] Query Key 관리와 개선 경험 (0) | 2025.02.25 |