경험담모노레포로 옮기면서 느낀 점여러 저장소를 하나로 합치면서 어떤 작업부터 시작했고, 공통 모듈의 기준은 어떻게 정했는지 회고해 보았습니다.이전 글에서는 모노레포의 개념을 다뤘다면, 이번에는 '직접 도입해 본 후기'를 적어보려 합니다. 왜 모노레포를 선택했는지, 도입 과정을 왜 여러 단계로 나누었는지, 그리고 공통 모듈의 기준을 어디까지로 잡았는지목차왜 모노레포를 했는지한꺼번에 안 옮긴 이유패키지에 올린 것 vs 앱에 둔 것잠깐 헷갈렸던 순간들나중에 보면 더 잘할 것 같은 점왜 모노레포를 했는지저희 팀에는 성격이 다른 두 개의 프로젝트가 있었습니다. 시간이 지나면서 버튼이나 모달 같은 UI 컴포넌트가 겹치기 시작했고, 로그인 로직이나 유틸 함수들도 비슷하게 중복해서 사용하고 있었죠.가장 큰 문제는 이런..
전체 글
아키텍처모노레포란 무엇인가 — 한 저장소에 여러 앱을 두는 이유멀티레포와 무엇이 다른지, 언제 쓰는지, 흔히 오해하는 지점까지 개념만 정리합니다.프론트가 웹·관리자·공유 라이브러리처럼 여러 덩어리로 나뉘면, 어떻게 관리할지 고민이 생깁니다. 해결법중 하나가 모노레포(monorepo)입니다. 핵심은 단순합니다. 관련 있는 프로젝트를 한 Git 저장소 안에 두고, 공통 코드와 도구를 함께 관리한다는 전략입니다.전체 로드맵 목차Part 1. 모노레포의 정의Part 2. 멀티레포와 한눈에 비교Part 3. 한 저장소 안의 역할 나누기Part 4. 왜 쓰는지 · 언제 피하는지Part 5. 자주 하는 오해Part 1. 모노레포의 정의1) 한 줄 정의모노레포는 여러 애플리케이션·라이브러리를 하나의 저장소(reposi..
React Native오프라인·네트워크 폴백: 기동 끊김과 사용 중 끊김을 나누는 방법NetInfo 판정, 전면 오프라인 UI, 상단 배너, TanStack Query 연동까지모바일 앱에서 네트워크는 “있다/없다” 두 상태가 아니다. Wi-Fi에만 붙고 인터넷은 없는 경우, 기동 직후 도달 여부가 아직 null인 경우, 쓰다가 끊기는 경우가 전부 다르다. 그런데도 isConnected === false 하나만 보고 같은 UI를 띄우면, 기동부터 오프라인인 유저를 로그인 화면으로 보내거나, 반대로 React Query가 요청을 멈춰 스피너만 도는 상황이 생긴다. 이 글에서는 React Native에서 NetInfo로 온라인을 어떻게 판정할지, 기동 오프라인과 사용 중 끊김 UI를 왜 나눠야 하는지, 데이터..
앱 보안Expo SecureStore: 토큰·PIN 저장 구조와 방어 로직SecureStore가 무엇인지부터, 토큰·PIN을 어떻게 나눠 저장하고 무엇을 막아야 하는지앱 보안을 설계할 때 자주 나오는 질문은 이것이다. "로그인은 서버가 검증하는데, 기기 안에 남는 access 토큰과 앱 잠금 PIN은 어디에 둬야 하는가?" 많은 앱이 처음에는 AsyncStorage에 평문으로 저장한다. 구현이 쉽고 호출도 단순하다. 다만 그 값은 앱이 종료되어도 디스크에 남는다. 기기 저장소에 접근할 수 있으면, 쉽게 말해 털리는 것이다. 이 글에서는 Expo(React Native) 기준으로 SecureStore가 무엇인지, 토큰과 앱락 PIN을 왜·어떻게 나눠 저장해야 하는지, Face ID/지문 해제를 붙일 때 프..