1. 프로젝트 개요
Present Flame (Blog) 은 단순한 정보의 나열을 넘어, 창작자의 실존적 고민과 성장의 궤적을 기록하는 독립적인 디지털 거점입니다. 기성 블로그 플랫폼1이 제공하는 편리함 이면에는 데이터 주권의 상실과 플랫폼 종속성이라는 한계가 존재합니다. 이 프로젝트는 이러한 제약에서 벗어나, 자신의 사유를 온전히 통제하고 불꽃이라는 개인의 고유한 정체성을 디자인과 코드 전반에 투영하기 위해 시작되었습니다.
마치 시지프(Sisyphus)가 끝없이 바위를 밀어 올리듯, 개발자는 끊임없이 코드를 수정하고 글을 다듬으며 자신만의 의미를 구축해 나갑니다. 이 블로그는 그 치열한 과정의 결과물이자, 동시에 계속해서 타올라야 할 과정 그 자체입니다.
1.1. 핵심 가치 (Core Values)
- Ownership (데이터 주권): 글과 데이터, 그리고 디자인을 특정 기업의 서비스 정책에 의존하지 않고 온전히 소유합니다. 마크다운(Markdown) 기반의 콘텐츠 관리는 향후 어떤 플랫폼으로든 이주 가능한 유연성을 보장합니다.
- Performance (극한의 효율성): 현대 웹의 비대함에 반기를 들고, Astro의 아일랜드 아키텍처(Islands Architecture)2를 통해 필요한 부분에만 자바스크립트를 로드합니다. 이를 통해 독자에게 지체 없는 읽기 경험을 제공합니다.
- Philosophy (철학적 브랜딩): 단순히 예쁜 디자인이 아닌, 창작자의 가치관을 시각화했습니다. 메인 테마 색상부터 커스텀 아이콘, 그리고 폴더 구조의 네이밍까지 성장과 불꽃이라는 메타포를 일관되게 적용했습니다.
2. 기술적 의사결정 (Tech Stack & Decisions)
이 프로젝트는 최신 웹 기술의 트렌드를 반영하되, 장기적인 유지보수성과 성능을 최우선으로 고려하여 선정되었습니다.
- Framework: Astro 5.0
- 콘텐츠 중심의 웹사이트에 최적화된 프레임워크입니다. React나 Next.js와 달리 기본적으로 Zero JS를 지향하며, 정적 사이트 생성(SSG)3을 통해 압도적인 SEO 성능과 로딩 속도를 제공합니다.
- UI Library: Svelte 5
- 가상 돔(Virtual DOM) 없는 컴파일러 방식의 접근은 런타임 오버헤드를 최소화합니다. Svelte 5의 룬(Runes)4 시스템을 도입하여 반응형 상태 관리를 직관적이고 간결하게 구현했습니다.
- Styling: Tailwind CSS
- 유틸리티 우선(Utility-first) 접근 방식을 통해 스타일의 일관성을 유지하고, 디자인 시스템을 빠르게 구축했습니다. 다크 모드 지원 및 반응형 디자인 구현에 있어 최고의 생산성을 보여줍니다.
- Deployment: Cloudflare Pages
- 글로벌 엣지 네트워크를 통한 빠른 콘텐츠 전송과 안정적인 배포 파이프라인을 활용합니다.
3. 주요 구현 기능 (Key Features)
3.1. 1. 계층형 카테고리 시스템 (Hierarchical Categories)
기존 정적 블로그 템플릿들이 가지는 단조로운 1차원적 카테고리 구조를 탈피했습니다. 파일 시스템 기반의 라우팅을 분석하여 3단계(Depth)까지 확장 가능한 중첩 카테고리를 구현했으며, 현재 읽고 있는 글의 위치를 자동으로 펼쳐주는(Auto-expand) 아코디언 UI를 Svelte로 직접 제작하여 탐색 편의성을 극대화했습니다.
3.2. 2. 몰입형 독서 경험 (Immersive Reading)
- TOC (목차) 연동: 긴 글을 읽을 때 현재 위치를 파악할 수 있도록, 스크롤 위치에 따라 목차가 하이라이팅되는 인터랙션을 구현했습니다.
- 독서 시간 예측: 글의 길이를 분석하여 예상 독서 시간을 제공, 독자가 호흡을 조절할 수 있도록 돕습니다.
- 다크 모드 최적화: 시스템 설정 자동 감지 및 부드러운 전환 효과를 통해 눈의 피로를 최소화했습니다.
3.3. 3. 프로젝트 쇼케이스 (Project Showcase)
블로그 포스트와는 성격이 다른 프로젝트를 위한 별도의 컬렉션(Collection) 타입을 정의했습니다. GitHub 리포지토리 링크와 라이브 데모 버튼을 눈에 띄게 배치하고, 프로젝트의 성격을 직관적으로 보여주는 썸네일 중심의 레이아웃을 적용하여 포트폴리오로서의 기능을 강화했습니다.
4. 회고 및 향후 계획 (Retrospect & Roadmap)
이 블로그를 구축하는 과정은 그 자체로 하나의 성장통이었습니다. 초기에는 단순히 기능을 구현하는 데 급급했지만, 점차 코드의 가독성과 컴포넌트의 재사용성을 고민하게 되었습니다. 특히 Astro와 Svelte의 상호운용성을 이해하고, 타입스크립트(TypeScript)를 통해 타입 안정성을 확보하는 과정에서 많은 배움을 얻었습니다.
앞으로는 다음과 같은 기능들을 추가하여 이 공간을 더욱 발전시킬 예정입니다.
- 댓글 시스템 통합: Giscus 등을 활용하여 독자와의 소통 창구 마련.
- 동적 검색 기능 강화: Pagefind5를 고도화하여 더욱 정밀한 본문 검색 지원.
- 시각적 스토리텔링: Three.js 등을 활용한 인터랙티브 3D 요소를 실험적으로 도입하여 불꽃의 이미지를 더욱 생동감 있게 표현.
가장 개인적인 것이 가장 창의적인 것이다. — 마틴 스코세이지
이 공간이 저의 가장 개인적인 기록이자, 동시에 누군가에게 영감이 되는 작은 불씨가 되기를 희망합니다.
Medium, Tistory, Velog 등의 서비스형 블로그 플랫폼을 의미합니다. 편리하지만 커스터마이징의 한계가 있고 서비스 종료 시 데이터 백업이 어려울 수 있습니다. ↩
Islands Architecture. 페이지의 정적인 부분은 HTML로 렌더링하고, 상호작용이 필요한 부분(아일랜드)만 독립적으로 수화(Hydration)하여 성능을 최적화하는 아키텍처 패턴입니다. ↩
Static Site Generation. 사용자가 요청할 때마다 서버에서 페이지를 만드는 것이 아니라, 빌드 시점에 미리 모든 페이지를 HTML로 만들어두는 방식입니다. ↩
Svelte 5에서 도입된 새로운 반응형 시스템으로,
$state,$derived등의 룬을 사용하여 상태 변화를 명시적이고 효율적으로 추적합니다. ↩정적 사이트를 위한 저비용, 고성능 클라이언트 사이드 검색 라이브러리입니다. ↩
