웹툰·전자책 앱
웹툰과 출판만화, 소설을 한 앱에서 읽는 콘텐츠 서비스의 앱을 개발했습니다. 이 서비스는 여러 콘텐츠 공급사의 연재작을 받아 매일 새 회차를 올리고, 독자는 PC · 모바일 웹 · 앱으로 작품을 봅니다. 그림과 문서를 오래 붙잡고 읽는 서비스라, 스크롤이 끊기거나 내려받은 작품의 상태가 어긋나면 읽는 흐름 자체가 끊깁니다. 웹툰 뷰어 화면, 여러 문서 형식을 여는 보기 화면, 그리고 기기 안에 남는 콘텐츠 상태 · 다운로드 · 열람 정보의 저장 구조를 맡았습니다.
스크롤과 페이지 넘김이 끊기지 않는 웹툰 뷰어
웹툰 뷰어는 세로로 긴 그림을 내려 가며 읽는 화면입니다. 스크롤, 페이지 전환, 콘텐츠 불러오기가 감상의 대부분을 정하기 때문에, 화면 배치와 주요 조작을 구현하면서 이 세 흐름을 안정적으로 맞추는 데 무게를 뒀습니다. 작품을 오래 읽는 서비스라 독자가 자주 마주치는 불러오기와 화면 전환은 따로 다시 점검했습니다.

형식이 다른 출판만화 · 소설까지 한 앱에서 여는 문서 보기
웹툰만이 아니라 출판만화와 소설도 같은 앱에서 읽게 하려고, PDF와 전자책 형식을 여는 문서 보기 부품을 여럿 연동했습니다. 형식마다 글자와 그림이 화면에 그려지는 모양이 달라서, 그 차이를 하나씩 확인했습니다. 독자는 어떤 형식인지 신경 쓰지 않고 앱 안에서 같은 방식으로 넘겨 읽습니다.

내려받은 작품의 상태를 다시 짠 기기 안 데이터베이스
웹툰 앱은 내려받은 작품의 콘텐츠 상태, 다운로드 정보, 열람 정보를 기기 안 데이터베이스에 둡니다. 어떤 회차를 받았고 어디까지 읽었는지가 이 기록에 남기 때문에, 기록이 어긋나면 독자는 받은 회차를 다시 받거나 읽던 자리를 잃습니다. 화면 배치와 기기 안 데이터 관리에서 문제가 생기던 기존 구조를 두고, 세 가지 정보를 안정적으로 다루도록 데이터베이스 구조를 다시 설계했습니다.

가벼운 값과 오래 남을 데이터를 나눠 둔 저장 기준
웹툰 앱은 데이터의 성격에 따라 저장하는 곳을 나눴습니다. 즐겨찾기처럼 가볍고 사라져도 큰 문제가 없는 값은 기기 설정 저장소에 두고, 오래 남아야 하고 서로 맞아야 하는 데이터는 서버와 기기 안 데이터베이스에 뒀습니다. 무엇을 어디에 두는지 기준이 정해지면서, 뒤에 고치는 사람도 데이터를 찾고 손대기 쉬워졌습니다.

이 작업의 포인트
스크롤 · 페이지 넘김 · 불러오기를 다듬은 웹툰 뷰어
웹툰 · 출판만화 · 소설을 한 앱에서 여는 문서 보기
콘텐츠 상태 · 다운로드 · 열람 정보를 성격대로 나눠 담은 저장 구조
인사이트
GA4 client_storage: 'none'은 정말 쿠키를 막을까?
두 달 전 이 블로그에 「GA4 쿠키 없이 쓰기」라는 글을 썼습니다. clientstorage: 'none' 으로 쿠키 저장을 끄고, 자체 분석이 쓰던 익명 ID 를 clientid 로 넘기면 쿠키 0개로 GA4 를 쓸 수 있다는 내…
GA4 Measurement Protocol: gtag.js 없이 서버에서 이벤트 보내기
랜딩 페이지의 전송량을 파일 단위로 쪼개 보다가, 가장 큰 파일이 우리 코드가 아니라는 것을 알았습니다. Google Analytics 의 gtag.js 였고, 방문 한 번에 176KB 를 받고 있었습니다. 페이지 전체가 1,094K…
중소 제조업 AI 도입 순서: DX를 먼저 끝내야 할까?
공장을 가진 중소·중견 제조기업 16만여 곳 가운데 스마트공장을 도입한 곳은 19.5%입니다. 회사가 작을수록 이 비율은 더 떨어집니다. 중소벤처기업부가 2025년 4월에 낸 제1차 스마트제조혁신 실태조사 결과입니다. 그림: 기업 규…
Next.js loading.tsx와 404: 버튼이 화면보다 먼저 살아나게 하기
관리 화면 왼쪽 위에 사이드바를 접고 펴는 ☰ 버튼이 있습니다. 폭 하나 바꾸는 버튼인데, 대시보드에서 누르면 2초 넘게 아무 반응이 없었습니다. 레이아웃만 바꾸는 일이 왜 이렇게 오래 걸리는지부터 들여다봤습니다. Next.js 16…



