# Design a Mobile Comics / Manga Reader

Source: https://www.techinterview.org/post/3233475381/mobile-system-design-comics-manga-reader/
Updated: 2026-05-06 · techinterview.org

"Design Webtoon" or "design a comics reader" is a content-and-rendering mobile system design — Webtoon, ComiXology, Crunchyroll Manga, Manga Plus, Tappytoon are the references. The interview tests image pipelines, paging gestures, the unique cultural needs of manga (right-to-left), and offline-with-DRM downloads.

## Clarify scope

- Western comics (page-by-page) or webtoon (vertical scroll)?

- Manga (right-to-left) or LTR?

- Free with ads, freemium, subscription?

- Offline downloads with DRM?

- User-generated content / fan translations?

## The data model


```
{
  series: { id, title, language, direction, type },
  chapters: [
    { id, seriesId, number, title,
      pageCount, locked: bool,
      pages: [{ url, width, height, sha }] }
  ],
  progress: Map<chapterId, lastPage>
}
```


## Page rendering

- Each page is a high-resolution image (typically 1.5–3 MB)

- Display: full-screen with pinch-zoom and pan

- Pre-decode the next 2–3 pages off the main thread

- Aggressive memory management — release decoded pages 5+ pages back

## Reading direction

- LTR (Western): swipe left for next page

- RTL (manga): swipe right for next page

- Vertical scroll (webtoon): infinite-scroll within a chapter

- Configurable per series / per user preference

## Pre-fetch strategy

- Pre-load next 2–3 pages on Wi-Fi; 1 on cellular

- Show subtle loading indicator if pre-fetch falls behind

- Queue prefetch lower-priority than current-page render

- Cache decoded images in memory; raw bytes on disk

## The infinite-scroll webtoon variant

- Pages stitched vertically; gap between pages

- Virtualized scroll — only nearby pages mounted

- Auto-load next chapter when user reaches end

- Save scroll position per chapter

## Downloads

- Per-chapter download (small enough to be useful, granular for storage management)

- Background download via OS APIs

- Encrypted at rest if licensed content

- Storage management UI: per-series usage, per-chapter delete

- Auto-download next chapter on Wi-Fi (configurable)

## DRM

- FairPlay (iOS) / Widevine (Android) for video; image DRM is custom

- Pages encrypted with per-user keys; decrypted on display

- Screenshot prevention (FLAG_SECURE on Android, blank-on-screenshot on iOS) — works imperfectly

- Watermarking with user ID for piracy traceability

## Discovery and home

- Genre browse (action, romance, fantasy, slice-of-life)

- "Continue reading" rail with last-read chapter per series

- "New today" weekly schedule

- Recommendations based on read history

## Reading progress and bookmarks

- Last-read page per chapter, synced server-side

- Bookmark specific pages (favorite scenes)

- "Mark as read" for skipped chapters

- Cross-device sync

## Notifications

- "New chapter of [series] is out"

- "Your read schedule" reminder for daily readers

- "Coin discount" for premium content

- Per-series subscription

## Monetization (varies by region)

- Free with ads (Webtoon's primary model)

- Coin economy: purchase coins, spend on premium chapters

- Subscription: full access for monthly fee (Crunchyroll model)

- "Wait for free": chapter unlocks for free after 23 hours; pay to skip

## Translations and localization

- Official translations (paid) and fan translations (often unauthorized)

- Per-language version of each chapter

- Right-to-left text directions for some languages

- Locale-aware metadata (titles, genres)

## Performance considerations

- Image decode is heavy; offload to background threads

- Avoid loading full-resolution if user is browsing thumbnail strip

- Adaptive resolution based on screen and bandwidth

- Memory cap: target under 200 MB even on long reading sessions

## Accessibility

- Pinch-zoom for low-vision readers

- Some platforms add machine translation of text bubbles via on-device OCR + translate

- Reduced-motion mode disables page-turn animation

- VoiceOver / TalkBack: chapter titles and metadata accessible; images describable in alt text

## Edge cases interviewers love

- User reads on phone, switches to tablet — page sync

- Network drops mid-page — graceful retry; show last-good page

- App killed mid-reading — restore exact page

- Series locked region — show clear "Not available in your region" message

- User screenshots a watermarked page — log for compliance

## What separates senior from staff

Senior candidates handle the page model and reading flow. Staff candidates address pre-fetch tuning, DRM integration, the webtoon vertical-scroll variant, and the coin / subscription monetization. Principal candidates raise the regional licensing complexity, the translation pipeline, and the recommendation system.

## Frequently Asked Questions

### Why is screenshot prevention worth implementing if it leaks?

Reduces casual piracy. Determined pirates use external cameras, but most users are stopped by FLAG_SECURE / iOS overlay. Combine with watermarking for accountability.

### How do I handle webtoon's very tall panels?

Some webtoon pages are 10,000+ px tall. Stream-decode if possible; or cut into vertical sub-panels server-side. Mobile decoders have hard limits.

### What about offline-only fan translation apps?

Out of scope for legitimate platforms. Mention as a context — these apps exist; your platform should differentiate on legal-but-friction-free experience plus official translations.
