Paul Rockstar

What's Next

Magazine work board

What the magazine is *building now · planning next · already shipped*, as a kanban. Cards share the same frontmatter as the internal spec — refreshed in real time.

In Progress

(8)

apps/web — COLDSURF Labs 페이지

apps/web — `/labs/feed` (COLDSURF AB Test · B안)

apps/web — Labs Research Notes

apps/web — Labs Virtual Interview 포맷 실험

실존 인물에 가상 발언을 씌우지 않으면서 "인터뷰형" 콘텐츠를 만들 수 있는 세 가지 포맷을 정리·시연한다.

2026-05-25

coldsurf io absorption

EventDetail — coldsurf-io /event/[slug] 흡수

coldsurf-io 의 공연 상세 페이지를 paul-rockstar 의 `/stage/event/:slug` 로 흡수. 1차 슬라이스(헤더·라인업·상세 안내·다른 판매처) 푸시, 나머지 섹션·자동 수집·도메인 매핑 진행 중.

2026-06-01↗ PR

critique

Phase 0d — Editorial signal-driven seed import (C)

Paul 이 Pick 한 시드 레이블·감독 12곳의 MB/TMDb 카탈로그를 야간 batch 로 import. catalog-ingestion C 전략의 실행 자리.

2026-06-01↗ PR

editorial institution

Field Notes 포맷 launch

Pick(큐레이션) 과 RN(방법론) 중간의 _현장 지속성 증거_. 정식 시리즈로 격주 1편 cadence 운영 — 스캐폴드·라우트·Cover 진입점 완료, 첫 노트 발행 대기.

2026-05-25

editorial institution

댓글 인입화 — Giscus → 자체 댓글 인프라

Giscus 임베드를 자체 댓글 시스템으로 전환. Phase A — UI + auth-portal redirect (backend X, mock 데이터). Phase B+ 에서 backend·migration·운영 표면.

2026-05-30

To Do

(28)

billets-admin: paul-rockstar 토큰 기반 ocean-road 대체

coldsurf — 채용/잡 보드 (씬 채용 공고)

씬의 채용 공고(venue·promoter 스태프 모집)를 매체가 큐레이션하거나 venue owner 가 직접 발행. 두 방향성 킵, 결정 미정.

뉴스레터 약관동의 — 버전 갱신 시 기존 구독자 처리

새 PRIVACY TermsVersion 발행 시 기존 구독자의 consentVersion 처리 정책·운영 플레이북. coldsurf 측 작업.

COLDSURF — Promoter Status Wedge (큐레이션 라벨 + 주간 메일링)

coldsurf-studio — 재방문율 대시보드

coldsurf-studio — venue analytics 대시보드

venue 별 analytics — 해당 venue 의 공연별 view · venue 페이지 방문율 · referrer breakdown.

coldsurf-studio — 공연장주 인증 후 venue 연결 (ownership)

공연장주가 studio 가입·로그인 후 본인 venue 의 ownership 을 검증·연결. venue 관리·analytics 의 권한 게이트.

apps/web — `/labs/survey` (분기형 밸런스게임 · 유형 도출)

답에 따라 다음 질문이 갈라지고 말단에서 "유형"을 도출하는 분기형 설문. 클라이언트 only(응답 수집 없음), `/labs/feed`와 동일한 정적 SSG 패턴.

apps/web 개인 브랜딩 강화

auth client

Auth Client Phase E — Web consumers (coldsurf-io · billets-admin) 가 hosted portal 로 redirect

wamuseum 의 coldsurf-io · billets-admin 의 auth route handler 를 `auth.coldsurf.io` 로 *redirect* 만 하도록 정리. consumer 측 OAuth 실수행 코드 제거. SDK 직접 의존 끊김 (portal 이 단일 OAuth 실수행자).

auth client

Auth Client Phase F — RN (billets-app) 의 WebView opener + postMessage 캡처

billets-app 이 `auth.coldsurf.io/login?mode=webview&provider=...` 을 WebView 로 열고, postMessage 로 token 받아 native storage 에 영구화. SDK 직접 의존 X — 기존 native sign-in SDK (`@react-native-google-signin/google-signin` 등) 제거 후보.

coldsurf io bridge

앱 셸·디자인 시스템 통일 (C안)

단일 COLDSURF 플랫폼 — paul-rockstar(Vite SSG) 셸이 coldsurf-io 의 공연·티켓 도메인을 흡수. 매거진(비평·해외) + 슈퍼앱(공연·티켓·국내) 두 면을 *정적 호스팅 위* 한 앱에서. (2026-06-01 방향 반전 — 비용 axis 추가로 흡수 주체 paul-rockstar 측으로 결정.)

critique

Phase C — 독자 계정 + 평가 (가벼운 시그널)

별점 + 상태(읽음/봄/들음). Letterboxd/RYM 의 초기 모양. 실행 home 은 [`web-work-first-class/review-model-write`] (= 글 atom 의 메타 일부로 흡수 검토).

critique

Phase D — 독자 글 비평 (UGC 1급)

독자가 자기 글을 작품에 붙임. Letterboxd Review atom. 실행 home 은 [`web-work-first-class/review-model-write`].

critique

Phase E — 과금 모델 (작품 후원 wedge)

발견자(편집부) · 후원자(독자) · 받는 곳(작품/아티스트) 이 모이는 monetization. 실행 home 은 [`web-work-first-class/patreon-monetization`].

critique

Phase 0e — On-demand catalog 진입 (A)

독자가 Review 작성 진입 시 MB/TMDb/OpenLibrary 검색 → 후보 선택 → 로컬 Work 생성. 시드 바깥의 작품을 _수요_ 따라 자라게.

critique

Phase 0f — 커버 아트 fallback chain

CAA → Discogs → Bandcamp → Wikipedia fair-use 의 fallback chain. CAA hit 71% 측정으로 _진짜 필요_ 확정. seed + on-demand 양쪽에서 공통 호출.

discovery loop

Open Submissions — /submit 외부 제보 채널

1인 편집장이 _혼자 못 보는 영역_ 을 외주하는 전용 표면. methodology 의 외부 제보 채널 한 줄을 페이지로 승격.

discovery loop

Discovery Trail — Pick 의 발견 경로 메타데이터

_어떻게 발견했는가_ 를 기록. 슬로건의 _증명 회로_. 알고리즘 의존도/외부 제보 기여를 누적 가시화.

discovery loop

Watchlist — 내부 후속 관찰 리스트

_Pick 이전 단계_ 의 작품을 추적. 승격 시 _Discovered N months before pick_ backdated 신뢰 자산.

editorial institution

billets cross-link — Concert card → /reviews permalink

billets Concert card 의 Pick 배지 → apps/web 영구 발행물 deep link.

editorial institution

Reader Score / Subscribe-to-see 페이월 (Phase 2)

Pitchfork 식 _READER SCORE → 🔒 Subscribe to see_ — 편집 기관의 상업적 회수 자리.

editorial institution

Mind 매거진 본문 typographic 정밀화

drop cap 세부 (dark theme contrast · 크기 ramp) + pull quote 강조 + body 글자 크기·leading 미세 조정.

editorial institution

Fundraising 캠페인 — 자체 결제 내재화

Tumblbug 등 외부 캠페인 위탁을 건너뛰고 Stripe Connect / 토스페이먼츠 분배 결제로 직행.

editorial institution

YouTube — 글의 부 채널

발행한 글의 영상 부 채널. 매체 본체는 글, YouTube 는 도달 채널.

work first class

Phase C — Review 모델 + 작성

독자의 글 비평 atom. workId · authorId · body · rating?. auth blocker (B10).

work first class

Phase D — /critics/<id> + Featured Review

비평가 프로필 페이지 + 편집장의 _featured_ 표시 권한.

work first class

Phase E — Patreon 모델 결제 (자매 epic 묶음)

비평가 후원 + 매체 후원 + 작품 후원. paywall 과 통합. 가장 늦은 단계.

Paused

(3)

coldsurf io bridge

coldsurf.io 이벤트 → 매거진 Pick 역링크

표면 cross-link 가교 — 도메인 비-교차(해외 비평 vs 국내 KOPIS 99%+)로 분모 자체가 임계 미달. 통합(`ui-unification`) 으로 자연 해소.

coldsurf io bridge

같은 handle, 두 프로필의 수렴

가교 — 통합(`ui-unification`) 이 결정되면 한 프로필로 자연 해소. 가교 비용은 throwaway.

coldsurf io bridge

두 서브도메인 전환 wayfinding

가교 — 통합(`ui-unification`) 이 결정되면 두 서브도메인 자체가 하나로 합쳐져 wayfinding 의의 사라짐.

Done

(61)

coldsurf-studio — 공연 중심 재구성

billets-server fast-jwt CRITICAL 보안 업그레이드 — @fastify/jwt 9→10 (wamuseum)

paul-rockstar 측 [`coldsurf-server-fast-jwt-security`](./coldsurf-server-fast-jwt-security.md) 의 자매 카드. 같은 fast-jwt 5 CVE 3종이 wamuseum/billets-server 에도 그대로 노출 — 같은 레포 아니라 분리. @fastify/jwt 9→10 으로 fast-jwt 6.2.4 흡수.

2026-05-28↗ PR

billets-server — partner cutover (wamuseum 잔존 코드 제거)

paul-rockstar/coldsurf-studio-server 로 이미 이전된 partner 라우트·핸들러를 wamuseum/billets-server 에서 단계적으로 비활성화→삭제하고, billets-admin 워크스페이스를 deprecate.

2026-05-26

fast-jwt CRITICAL 보안 업그레이드 — @fastify/jwt 9→10 (auth·studio server)

fast-jwt 5.0.6 의 인증 우회·알고리즘 혼동·캐시 혼동(critical/high) 3종을 @fastify/jwt 9→10(fast-jwt 6.2.4)으로 닫음. auth-server·studio-server staging e2e 라운드트립 검증 완료. Dependabot 안전-승리 PR(#45)에서 의도적으로 제외했던 갈래.

2026-05-28↗ PR

coldsurf-studio — admin 모바일 최적화

AdminShell·이벤트 도메인 페이지·테이블·스캐너를 모바일 뷰포트(≤ 480px)에서 사용 가능하게. 스캐너 검증의 선결 조건.

2026-05-26

coldsurf-studio — 무료티켓(EntryTicket) admin UI 이관

wamuseum/billets-admin의 entry-ticket 도메인(무료티켓 발급/풀 대시보드/스캐너)을 coldsurf-studio admin으로 이관. 서버는 이미 완료.

2026-05-26

coldsurf-studio-server — 파트너 서버를 떼어내기

2026-05-26

coldsurf-studio-server: AWS Lambda 배포 (surfers-root reusable workflow 호출)

paul-rockstar 모노레포 마이그레이션

SPEC: 시리즈 연결 — "실행되지 않는 조직"

Sitemap 빌드 시 생성

View count — Supabase Edge Function + RLS 셋업

Supabase Edge Function 으로 블로그 view count 트래킹. SQL/RLS 정책 + dev/prod 환경변수 셋업.

web — 회원탈퇴(soft-deactivate) + 최소 계정 面

billets-app 과 동일한 soft-delete 정책으로 web 에 회원탈퇴를 신설. 백엔드·SDK 는 이미 존재(`DELETE /v1/user/deactivate`)하므로 web-only. 탈퇴 버튼이 설 *계정 surface* 부터 만든다.

2026-06-02

web — 회원 재활성(이메일 코드 → activate)

탈퇴(soft-deactivate)한 web 사용자가 스스로 돌아오는 경로. 백엔드·SDK 는 이메일 인증코드 기반 재활성을 *이미 지원* — web 은 그 UI(sendCode → activate)만 신설. OAuth-only 인 web 에 유일하게 없는 복귀 surface.

2026-06-02

web — Full SSG (body prerender + hydration)

prerender 가 `<head>` 만 채우고 `<body>` 는 빈 셸로 두는 현재 구조를 빌드 타임 body 렌더(renderToString)+클라 hydration 으로 승격. 사이트링크·소셜 unfurl·이벤트 SEO·크롤 신뢰도의 공통 뿌리.

2026-06-02

web — Link Unfurl (OG Image) for Labs For You

2026-05-29

뉴스레터 월간 호 발송 — 수동 트리거(mailer-cli)

월간 호(號) 발행 시 list=PAUL_ROCKSTAR 구독자에게 일괄 메일 1회 발송. 호당 1회 사람이 명시적으로 실행.

2026-05-28↗ PR

뉴스레터 가입 시 최신 호 발송 — welcome 에 최신 호 얹기

구독 직후 신규 구독자 1명에게 가장 최근 발행 호를 메일링. 사이클 중간 가입자의 starvation 을 메우고 welcome 을 즉시 가치 전달로 바꾼다. broadcast 카드가 미뤄둔 *공개 메타 엔드포인트* 를 필수로 승급.

2026-05-28↗ PR

뉴스레터 구독 — 이메일 구독 + 수신거부

월간 호(號) 이메일 구독·웰컴메일·수신거부 e2e 완료. billets-server 의 기존 뉴스레터를 list 구분자로 확장(coldsurf / paul-rockstar). 발송(broadcast)은 분리 카드.

2026-05-27

web — SEO 구조화 데이터(JSON-LD) + keywords

coldsurf-io 의 generateLdJson 수준으로 따라잡기 — apps/web prerender 에 JSON-LD(WebSite/Article/Review/Breadcrumb) + keywords 메타 추가

2026-06-02

web — /stage 정식 섹션 (공연 面 · 발행물 ↔ 라이브 루프)

billets 공연 데이터를 매거진 포맷 표면으로 승격. Labs 실험과 분리된 상시 섹션 + Pick 양방향 브리지.

2026-05-29

auth client

Auth Client Phase A — paul-rockstar 측 changeset + release.yml 셋업

paul-rockstar 에 GitHub Packages publish 인프라 도입. surfers-root 의 release.yml 미러. Phase B~D 의 cross-repo 소비를 물리적으로 가능하게 하는 게이트.

2026-05-28↗ PR

auth client

Auth Client Phase B — `@coldsurfers/auth-client` 패키지 작성

paul-rockstar/packages/auth-client 신규 — AuthClient 클래스 + types + storage adapter + Google/Apple/Email provider helper. surfers-root 의 data-models 패턴 미러 (build-less TS source export).

2026-05-28↗ PR

auth client

Auth Client Phase C — coldsurf-studio 가 첫 consumer (workspace:*)

paul-rockstar/coldsurf-studio 의 Google·Email 호출부를 @coldsurfers/auth-client 로 교체. workspace:* 로 직링크 → SDK 의 첫 실사용 검증.

2026-05-28

auth client

Auth Client Phase D — Hosted Auth Portal (auth.coldsurf.io) — SDK 의 첫 진짜 client-side consumer

`auth.coldsurf.io` Next.js 앱 신규. 모든 OAuth (Google · Apple · Email) 의 *단일 호스팅 진입점*. Dual return mode — `postMessage` (RN WebView) · `redirect` (Web). 후속 Phase E (web consumers redirect) · F (RN WebView) 의 게이트.

2026-05-29

auth client

Auth Client Phase E follow-up — coldsurf-io orphaned OAuth route cleanup

wamuseum/coldsurf-io 의 portal 이주 (6d8dfc08c) 직후 *고아 상태로 남은* OAuth 라우트 4개 + `/social-redirect` 페이지 + 관련 상수·import 제거. Phase E Surface 1 의 5개 체크박스가 한 번에 풀린다. email 로그인·`google-signup`·`local-reissue-token` 은 *적극 사용 중* — 별도 카드로 분리.

2026-05-30↗ PR

coldsurf io bridge

Work 를 공유 prisma schema 의 1급 객체로

로컬 TS 레지스트리 Work 를 공유 Postgres(PaulRockstarWork)로 승격 — 브리지의 척추.

2026-06-01↗ PR

coldsurf io bridge

PaulRockstarArtist 신설 + Work↔Artist 조인

카탈로그 아티스트(~1,329)를 공유 DB PaulRockstarArtist 로 1급화 + Work↔Artist 내부 조인. `/artists/<slug>` 페이지 첫 consumer. billets 다리·콜라보 분해는 Phase 2.

2026-06-01↗ PR

critique

Phase 0 — 카탈로그 ingestion 전략 결정

비평의 장 의 첫 결정. 4 갈래 (A/B/C/D) 비교 + PoC 3편 측정 (Sub Pop · Domino · Mothland) → C+A 조합 확정 채택. 실행은 sub-card 3장으로 분기.

2026-05-30

critique

Phase A — Work entity 신설 (데이터 모델 1차)

Pick 에서 작품 메타 분리 → workId 참조. /works/<type>/<slug> canonical 페이지. 실행은 자매 epic [`web-work-first-class/`] 에서 수행.

2026-05-24

critique

Phase B — Work 에 외부 카탈로그 식별자 옵셔널 필드

Work 에 옵셔널 외부 ID (MusicBrainz · TMDb · ISBN · OpenLibrary 등) 필드 + 카탈로그 선정 메모. 자동 import 는 분리 — [`catalog-ingestion.md`] 자리.

2026-05-30

editorial institution

COLDSURF Pick 발행 표면 신설

/reviews 아카이브 + 영구 permalink + OG 카드. 매체의 핵심 atom.

2026-04-20

editorial institution

Methodology 페이지 — Pick 은 어떻게 뽑히는가

/reviews/methodology — 선정 기준·발행 주기·이해상충·외부 제보 채널 공개.

2026-04-22

editorial institution

Homepage 매거진화 — 명함 강등

/ 를 "이번 호의 표지" 로 전환. 명함 Hero 는 colophon 으로 이동.

2026-04-25

editorial institution

Colophon 신설 — about + resume 통합 강등

/colophon 한 페이지에 발행자 정보·외부 채널·발행 정책 통합. about/resume 는 1급 IA 에서 강등.

2026-04-26

editorial institution

Section archive 의 매거진화

카테고리별 _섹션 표지_ 매거진화. dev=Engineering, catholic=Catholic, life(구 avclub 잔여)=B-SIDE, labs=reader only. /blog 제거 + 리다이렉트.

2026-05-24

editorial institution

Field Notes — sitemap · RSS 진입

`/field-notes` 인덱스 + 개별 노트(KO/EN) 를 sitemap·RSS 에 노출해 검색·구독 표면 확보.

2026-05-26

editorial institution

매체 네이밍 — Paul Rockstar

COLDSURF Reviews(generic) → Paul Rockstar(편집자 페르소나). 1인 편집 + 보증인 정체성을 이름 자체로.

2026-04-30

editorial institution

PicksList 좌측 cover 썸네일

리스트 아이템 좌측에 80×80(sm 96×96) 정사각 cover 썸네일.

2026-05-01↗ PR

editorial institution

OG dev preview 정합

OG 카드 출력을 dist/og/ → public/og/ 로 이동해 Vite dev/build 양쪽 동일 경로(/og/...) 서빙.

↗ PR

editorial institution

매체 태그라인 — Discover what you didn’t expect

"매주 한 건의 _위상_" → "Discover what you didn’t expect". value proposition 또렷화 + cadence 약속을 헤드라인에서 분리.

2026-05-05

editorial institution

Pick Likes — 익명 1-인-1-좋아요

클라이언트 + Edge Function + Prisma 마이그레이션. paywall 이전 단계의 audience signal.

2026-05-15

editorial institution

Comments (Giscus) — PickDetail + MindEssay 임베드

coldsurfers/giscus 리포 · General 카테고리. 광고 없음 · GitHub Discussions 모더레이션 위임.

2026-05-20

editorial institution

Pick 상세 — Listen 채널 + Watch 채널 분리

음악 9편 Bandcamp/Spotify/Apple Music · films 2편 Apple TV+/Hulu/Disney+. 음악 vs 영상 정체성 분리.

2026-05-24↗ PR

editorial institution

매거진 후원 페이지 (/support)

독자가 편집자를 후원. Ko-fi(글로벌) · KakaoPay(한국) 2채널. methodology 의 _광고 수익 없음_ 의 짝.

2026-05-22

editorial institution

billets API — Auth Microservice 분리

billets-server 의 인증 로직을 별도 마이크로서비스로 추출. billets + paul-rockstar 공통 의존. Phase A 완료 — dev/prod 배포 + cross-server JWT 양방향 검증 통과.

2026-05-28↗ PR

editorial institution

Mind 매거진 — /mind layer 신설

essay 카테고리(19편) 를 _Life Magazine 스타일 편집 지면_ 으로 재구성. /mind archive + /mind/essays/<slug> detail.

2026-05-23

editorial institution

Mind frontmatter 보강 (lede · featuredAt · dropCap)

Post 인터페이스에 옵션 3종 추가 + getFeaturedEssay() SSOT + Otrovert/John Wick 시범 적용.

2026-05-24↗ PR

editorial institution

What's Next — 외부 공개 칸반 보드

/whats-next 라우트 — docs/kanban/ frontmatter 를 source 로 4컬럼 (In Progress · To Do · Paused · Done) 보드. spec 의 3컬럼 안에서 paused 컬럼이 추가되어 운영.

2026-05-27

editorial institution

월간 호(號) — 스냅샷 기반 온라인 매거진

apps/web/src/posts/ 의 해당 월 글들을 별도 디렉터리로 스냅샷 복사해 편집자가 손본 *n월호* 매거진을 발행한다.

2026-05-27↗ PR

editorial institution

호(號) Reader — 웹에 잡지 문법 입히기

/issues/<month>/read — 표지·목차·편집장의 글·본문을 시퀀스로 잇는 연속 reader. 잡지의 _구조 문법_ + _유한성 문법_ 을 웹에서 재현.

2026-05-28

i18n

Phase A — UI 문자열 i18n 인프라

src/i18n/locales/{ko,en}.ts + useLang() hook. 페이지 컴포넌트의 하드코딩 한국어 → 번역 맵 추출.

2026-05-10

i18n

Phase B — Content i18n

11 Picks 의 postSlug → .en.md 보유 100%. methodology EN 작성. 신규 Pick KO/EN 동시 발행 원칙.

2026-05-15

i18n

Phase C — 글로벌 라우팅 + 자동 감지

navigator.language 기반 첫 진입 redirect + localStorage 사용자 선택 저장 + GlobalLangToggle.

2026-05-18

i18n

Phase D — SEO 보강 (hreflang · og:locale)

hreflang 모든 페이지로 확장. <html lang> locale 별 정확히. og:locale + og:locale:alternate.

2026-05-20

tss migration

web-next 스캐폴딩 — TSS 셸 + CF Workers

apps/web-tss-poc 를 기반으로 apps/web-next 워크스페이스를 만들고, Cloudflare Workers 배포 파이프라인 + 최소 1 라우트(/) SSR 까지 동작.

2026-06-02

tss migration

SEO 재배선 — @paul-rockstar/seo → TSS head() 어댑터

apps/web 의 buildSeoTags(PageSeoInput) → TSS head() shape 어댑터 도입. /, 그리고 이후 모든 라우트의 SEO 가 한 패턴(seoHead(input)) 으로 표현됨.

2026-06-02

tss migration

i18n 재구성 — KO/EN 이중 트리 + useLang·LangLink 이식

apps/web 의 LangContext·useLang·LangLink·useLocalizedSeoMeta·useAutoLocaleRedirect 를 TSS 위로. KO `/` + EN `/en/*` 이중 라우트 트리 셋업. Phase A–E 완료.

2026-06-02

tss migration

라우트 트리 이식 — App.tsx ~40 <Route> → TSS 파일 기반 트리

apps/web 의 LocalizedRoutes (~40 라우트) 를 한 카테고리씩 apps/web-next/src/routes/ 로 이식. i18n 인프라(카드 3) 위에서 페이지 컴포넌트는 import 경로 변경 외 무수정.

2026-06-03

work first class

Phase A — Work 모델 + 마이그레이션

apps/web/src/works/ + Pick 에 workId 옵션 필드. 11 Pick → Work 추출 + 중복 검증.

2026-05-24

work first class

Phase B — /works/<type>/<slug> canonical 페이지

작품 페이지 신규. 1차는 _그 작품을 다룬 Pick 목록_ 만. 향후 phase 에서 Review 등 추가.

2026-05-24