
진행 기간
2025.11 - 현재
핵심 기술
Next.js 15 (App Router)React 19TypeScriptTurborepopnpmTanStack QuerynuqsZustand

진행 기간
2025.11 - 현재
핵심 기술
"1인 개발의 효율을 극대화하는 지속 가능한 시스템 설계"
코드 중복을 최소화하고, 런타임 성능과 데이터 정합성을 보장하는 견고한 아키텍처를 구축하는 데 집중했습니다.
| 분류 | 기술 스택 | 핵심 역할 |
|---|---|---|
| Monorepo | Turborepo, pnpm | 멀티 앱 운영 및 공통 패키지(ui, util) 격리 관리 |
| Framework | Next.js 15 (App Router) | 서버 컴포넌트(RSC) 중심의 번들 최적화 및 Vercel 배포 |
| State | nuqs, Zustand | URL 기반 단방향 데이터 흐름(SSOT) 및 전역 상태 관리 |
| Network | customFetch, TQ | 표준 API 기반 통신 계층 내재화 및 선언적 데이터 호출 |
| Responsive | Custom Hook | 브레이크포인트 기반의 모바일/웹 뷰 시스템 통제 |
Musician과 Manager 앱을 분리하되, packages/ui와 packages/util을 통해 핵심 로직과 UI를 공유합니다. 수정 사항이 모든 앱에 즉각 반영되어 관리 비용을 최소화했습니다.JSESSIONID를 검증합니다. 인가되지 않은 접근을 페이지 렌더링 전에 차단하여 보안 성능과 서버 자원 효율을 동시에 확보했습니다.TanStack Query를 결합해 URL 변화가 즉각적인 데이터 호출로 이어지는 파이프라인을 구축했습니다.isMounted 상태를 추적하여 클라이언트와 서버 간의 미스매치를 방지하고, 런타임 시 디바이스 환경에 맞는 정확한 UI를 렌더링하도록 강제합니다.
Middleware 보안 계층부터 nuqs 기반의 단방향 데이터 흐름까지 아우르는 muroom 프론트엔드 시스템 아키텍처
"사용자 경험의 완결성을 위한 뷰 통제와 커뮤니티 아키텍처"
isMounted 상태를 추적하며, 디바이스별로 최적화된 UI를 렌더링하도록 시스템적으로 통제합니다.| Desktop View (Web) | Mobile View (App) |
|---|---|
지도 탐색부터 복합 필터링, 커뮤니티 인터랙션까지 이어지는 핵심 서비스 플로우
개발 과정에서 마주한 기술적 고민들과 이를 해결하기 위해 시도한 접근 방식입니다. 상세 내용은 개별 회고록에 정리되어 있습니다.
"예외 상황을 통제하고 시스템의 예측 가능성을 높이는 데 집중했습니다."
error.tsx와 GA4를 연동하여 예외 발생 시 상세 로그(description, digest 등)를 데이터화합니다. 장애 발생 빈도를 실시간으로 모니터링하며, 배포 후 안정성을 객관적 지표로 관리합니다.useResponsiveLayout을 통해 디바이스별로 최적화된 복구 경로를 제공하여 서비스 이탈을 최소화했습니다.customFetch에 제네릭을 적용하여 API 응답 규격을 컴파일 단계에서 검증합니다. 런타임 데이터 구조 불일치 에러를 차단하여 시스템의 견고함을 확보했습니다.AbortSignal.timeout을 적용해 2초가 지나도 데이터가 오지 않는 지연 요청은 강제로 종료합니다. 백엔드 네트워크 오류 등으로 사용자가 무작정 기다리는 일을 방지하기 위해 프론트에서 먼저 연결을 끊고, 자연스러운 재연결을 유도하여 시스템의 반응성을 일정하게 유지합니다.
[Network 탭] 2.0s 지점 Abort에 의한 canceled 상태 확인
[Console 탭] 커스텀 에러 핸들러에 의한 Timeout 로그 수집
[Heap Snapshot] Comparison 모드 분석 결과: 라우팅 반복 후에도 Delta 값이 안정적으로 유지되며 자원 해제가 정상 작동함을 확인
기술적 화려함보다는 서비스의 지속 가능성과 예측 가능한 코드를 작성하는 데 집중했습니다.
customFetch를 직접 구현하여 시스템 통제권을 확보했습니다.nuqs와 useResponsiveLayout을 활용해 어떤 환경에서도 유저의 탐색 맥락이 끊기지 않는 설계를 지향했습니다.