Local-first reader 앱

BookField

BookField는 사용자의 device에서 설치 가능한 .wbpkg packages를 읽습니다. 학습 자료, reference content, annotations, schedules, offline reading을 위해 만들어졌으며 app을 cloud service로 바꾸지 않습니다.

.wbpkg 가져오기

오프라인 읽기

Notes와 highlights

.wbpkg import actions가 표시된 BookField Library 화면

Package 형식

BookField가 설치하고 읽을 수 있는 package

.wbpkg는 BookField가 사용하는 설치 가능한 package format입니다. package에는 local use에 필요한 manifest, ReaderDoc content, media assets, navigation tree, optional study plans, locator indexes가 포함됩니다.

Manifest 계약

Manifest는 package identity, work, edition, assets, navigation entry points를 정의합니다.

ReaderDoc 콘텐츠

ReaderDoc 기반 text는 local storage로 import되므로 app은 runtime에서 EPUB, HTML, CSS를 parse하지 않습니다.

오프라인 references

Matching packages가 설치되어 있으면 locator indexes와 bindings가 authored references를 device에서 resolve할 수 있게 합니다.

Reader 경험

Cloud documents가 아니라 installed packages를 중심으로 설계

BookField는 package 설치 후 reader experience에 집중합니다: Library management, reading position, local annotations, schedules, search.

Library 가져오기

App Library 또는 Files와 Open In flows에서 .wbpkg files를 import합니다.

Library 우선 접근

최근 사용한 packages를 열고 reading entry point를 package 자체에 가깝게 유지합니다.

학습 계획

package에 schedule metadata가 포함된 경우 Calendar에서 authored study plans를 사용합니다.

Search와 notes

highlights, paragraph notes, bookmarks, searchable local records를 device에 보관합니다.

Package 전달

Public workflow를 단순하게 유지

Public page는 handoff를 product level로 유지합니다. internal production tooling을 노출하지 않고 prepared package가 BookField로 이동하는 방식을 설명합니다.

  1. 1

    .wbpkg 받기

    publisher 또는 internal workflow가 BookField용 installable package를 준비합니다.

  2. 2

    BookField로 import

    user가 package를 BookField에 import하면 reader가 validate하고 locally store합니다.

  3. 3

    읽기, 일정, 검색

    installed package가 Library에 표시되고 authored schedules와 search data를 사용할 수 있습니다.

Platform 상태

현재 implementation baseline

iOS
현재 product baseline은 iOS implementation입니다.
Android
Android는 iOS behavior를 따르며 parity hardening 중입니다.

기술 노트

reader를 예측 가능하게 유지하는 경계

  • Imported package content는 reading과 lookup을 위해 locally stored됩니다.
  • 초기 product promise는 cloud sync에 의존하지 않습니다.
  • Reader-side authoring은 scope 밖입니다. BookField는 prepared packages를 읽습니다.
  • Navigation은 runtime EPUB parsing이 아니라 package navigation tree로 제어됩니다.

BookField package flow 계획

package overview로 BookField가 content model에 맞는지 판단하거나, 자료를 위한 custom distribution flow를 상담하세요.