.---.
     /     \
     \.@-@./
     /`\_/`\
    //  _  \\
   | \     )|_
 /`\_`>  <_/ \
 \__/'---'\__/
ruehan@ruehanix
─────────────────
OS ruehanix 1.0
WM Hyprland
DE Catppuccin Mocha
SH zsh 5.9
WHO 한규 · full-stack dev
00:00 KST
Mon 22 Jun 2026 · up 4h 12m
CPU14%
RAM47% · 30/64G
DISK61% · 1.2/2T
NET↓2.4M ↑312K
PROC312 · 0.84
Super + D 앱 실행기
Super + 1-6 워크스페이스
Super + / 단축키 전체보기
ruehanix
1
2
3
4
5
6
ruehanix · Hyprland
비둘기 (PEACE)
00:00
Files
Reader
Foto
HOT LAP
Terminal
Web
rhx-play
Settings
About
Files
~/blog
posts
series
tags
drafts
devices
/dev/nvme0
all
dev
racing
moto
music
데스크톱을 닮은 블로그를 만들었다..md
터미널 화면을 좋아하는 개발자가, 그 미감을 그대로 옮긴 블로그를 만든 이유와 구조
dev2026.06.22
1 items · 1 total
Reader
posts/
데스크톱을 닮은 블로그를 만들었다.
2026.06.22
#dev

데스크톱을 닮은 블로그를 만들었다.

ruehan·2026.06.22·6분

나는 단정한 화면을 좋아한다. 터미널에서 일하는 시간이 길고, 색은 에디터부터 셀까지 한 벌로 맞춰 둔다. 군더더기 없이 검고 차분한 화면이 편하다. 그런데 정작 블로그는 늘 남의 템플릿이었다. 떠 있는 카드, 큼직한 히어로, 어디서 본 듯한 폰트, 내가 매일 보는 화면과 내가 글을 올리는 공간의 결이 따로 놀았다. 그게 계속 걸려서, 내가 좋아하는 데스크톱의 미감을 블로그에 그대로 옮기기로 했다.

ruehanix는 그 결과다. 부팅 로그가 한 줄씩 흐르고, 위에 상태 바가 붙고, 창이 타일로 나뉘고, 아래 독에서 앱을 연다. Files에서 글을 고르고 Reader에서 읽는다. 블로그라기보다 나를 표현하기 위한 작은 운영체제에 가깝다.


만들면서 가장 오래 붙든 결정은 하나였다. 이런 화면은 통째로 클라이언트에서 돈다. 창을 드래그하고 테마를 바꾸고 키보드로 화면을 넘기는 건 전부 브라우저 안의 상태다. 문제는 검색 엔진이 그걸 읽지 못한다는 것이다. 셸만 있으면 그럴듯한 데모이지 블로그는 아니다. 그래서 둘로 쪼갰다. 탐색과 분위기는 셸이 맡고, 글 하나하나는 `/posts/[slug]`라는 서버 페이지로 따로 가진다. 셸의 Reader에서 글을 열면 같은 글의 서버 페이지로 가는 링크가 붙는다. 그 페이지는 메타데이터와 공유 카드, 구조화 데이터를 갖춘 평범한 글 문서다. 검색에 잡히고 공유도 된다. 보이는 화면은 데스크톱이지만, 글은 제대로 된 웹 문서로 따로 존재한다.

스택은 이 구조를 위해 골랐다. Next의 App Router를 쓴 건 서버 컴포넌트 때문이다. 글은 서버에서 그려 내려보내고, 인터랙티브한 셸만 잘라서 클라이언트로 보낸다. 경계가 분명하니 검색에 노출돼야 할 곳과 상태가 사는 곳이 깔끔하게 갈린다. 글은 Sanity에 둔다. 콘텐츠를 코드 밖으로 빼서, 배포 없이 글을 쓰고 고친다. 새 글은 재빌드 없이 1분 안에 반영된다. 이 선택에는 대가도 있었다. Sanity를 붙이려다 보니 React와 Next를 한 단계씩 끌어올려야 했고, 그 과정에서 빌드가 한 번 통째로 흔들렸다. 그래도 글을 코드에서 떼어 낸 값은 그만큼 했다고 본다.

여기에는 네 가지가 쌓인다. 개발을 위한 지식 (코드)와 개인 취미 (모터스포츠, 음악, 베이스). 결국 한 사람의 기록이다.

전체 페이지로 보기 →
한규 · ruehan
full-stack dev · sim racing · bass
Foto
사진이 없습니다
/studio 에서 사진(photo)을 추가하세요
HOT LAP
PERSONAL BEST
Nürburgring Nordschleife · BMW M4 GT3
6:59.214
▼ 0.41s · 개인 기록 경신
1,284
total laps
6
GT3 cars
4.2k
iRating
TRACKCARTIMEΔ
PBNürburgring NordschleifeBMW M4 GT36:59.214-0.41
Spa-FrancorchampsFerrari 296 GT32:17.882-0.12
MonzaPorsche 992 GT3 R1:47.503+0.08
SuzukaBMW M4 GT32:00.661-0.27
Le Mans · La SartheToyota GR0103:24.119-0.55
Terminal
ruehan@ruehanix:~$ fastfetch
    .---.
   /     \
   \.@-@./
   /`\_/`\
  //  _  \\
 | \     )|_
/`\_`>  <_/ \
\__/'---'\__/
ruehan@ruehanix
───────────────
OS: ruehanix 1.0 x86_64
Kernel: 6.9.2-rue
WM: Hyprland (Wayland)
Theme: Catppuccin Mocha
Shell: zsh 5.9
Role: Full-stack Dev · SW Lead
Stack: TypeScript · Go · React
Hobby: Sim Racing · F1/WEC · Bass
ruehan@ruehanix:~$ whoami
한규 — 코드를 짓고, 랩타임을 줄이고, 베이스를 친다.
ruehan@ruehanix:~$
Web
‹ ›
https://ruehan.dev
ruehan.dev
postsprojectsracingabout
FULL-STACK DEVELOPER · SW LEAD

코드를 짓고, 랩타임을 줄이고,
베이스를 친다.

한규(ruehan)의 기술 블로그. 서버 컴포넌트와 모노레포, 그리고 트랙 위의 0.1초에 대한 기록.

최근 글

all posts →
#dev2026.06.22
데스크톱을 닮은 블로그를 만들었다.
터미널 화면을 좋아하는 개발자가, 그 미감을 그대로 옮긴 블로그를 만든 이유와 구조
© 2026 ruehan.dev · built on ruehanix · 서울
rhx-play
PAUSED
비둘기 (PEACE)
ChRocktikal (크록티칼)
재생목록
아티스트
1
비둘기 (PEACE)
ChRocktikal (크록티칼)
Settings
ruehan
localhost
General
Appearance
Window Rules
Keybindings
Displays
Wallpaper

Appearance

APPEARANCE
Light
Dark
Auto
Accent color
Window gaps
10px
Window transparency
Rounded corners
Active border glow
변경 사항은 모든 워크스페이스의 창에 즉시 반영됩니다. Super + 1-6 으로 확인해 보세요.
About
ruehanix
1.0 · kernel 6.9.2-rue · x86_64
CPURyzen 9 7950X · 16C/32T
GPURadeon RX 7900 XTX
Memory64GB DDR5-6000
WMHyprland · Wayland
Uptime7 yrs in the industry
한규 · ruehan
full-stack dev · SW Lead
sim racing · F1/WEC · bass
ruehan@ruehanix~login: