Skip to content

Functional requirements

This document defines the functional requirements for Papyrus, organized by feature area. Each requirement includes a priority level and references to related use cases.

Priority levels

Priority Description Target
P0 Critical - Must have for MVP v1.0
P1 High - Should have for MVP v1.0
P2 Medium - Post-MVP planned feature v1.x
P3 Low - Future consideration v2.x+

1. User management

FR-1.1: Account registration

Priority: P0 | Use case: UC-1.1

User can create an account using an email address and password.

Acceptance criteria:

  • Email must be valid and unique in the system
  • Password must meet minimum security requirements (8+ characters, mixed case, number)
  • Email verification is sent upon registration
  • Account is created in inactive state until email is verified

FR-1.2: Email/password login

Priority: P0 | Use case: UC-1.2

User can log in to the system using email and password.

Acceptance criteria:

  • System validates credentials against stored hash
  • Failed attempts are rate-limited (max 5 per minute)
  • Successful login creates a secure session token
  • User is redirected to their library after login

FR-1.3: OAuth login (Google)

Priority: P1 | Use case: UC-1.3

User can log in using their Google account via OAuth 2.0.

Acceptance criteria:

  • Google OAuth flow completes securely
  • New users are automatically registered on first OAuth login
  • Existing users can link Google account to email account
  • Google profile photo and name are imported (optional)

FR-1.4: Offline mode

Priority: P0 | Use case: UC-1.4

User can use the application in offline mode without credentials or internet connection.

Acceptance criteria:

  • All reading and library management features work offline
  • Data is stored locally on device
  • No account required for offline-only usage
  • Offline users can later create account and migrate data

FR-1.5: Password recovery

Priority: P1 | Use case: UC-1.5

User can reset their password via email recovery link.

Acceptance criteria:

  • Recovery link is sent to registered email
  • Link expires after 24 hours
  • Link is single-use and invalidated after password change
  • User must set new password meeting security requirements

FR-1.6: Account deletion

Priority: P1 | Use case: UC-1.6

User can permanently delete their account and all associated data.

Acceptance criteria:

  • Deletion requires password confirmation
  • User is warned about data loss
  • All user data is removed from server within 30 days
  • Local device data remains unless explicitly deleted

2. Book management

FR-2.1: Format conversion

Priority: P2 | Use case: UC-2.2

User can convert e-book files between supported formats (EPUB, PDF, MOBI).

Acceptance criteria:

  • Conversion preserves content and basic formatting
  • Original file is retained after conversion
  • Progress indicator shown for large files
  • Conversion errors are reported clearly

FR-2.2: Manual metadata editing

Priority: P0 | Use case: UC-2.3

User can manually edit book metadata (title, author, description, etc.).

Acceptance criteria:

  • Editable fields: title, subtitle, author, co-authors, publisher, publication date, ISBN, language, description, series, series number
  • Changes are saved immediately
  • Cover image can be replaced from file or URL

FR-2.3: Custom metadata fields

Priority: P2 | Use case: UC-2.3

User can add and remove custom metadata fields to books.

Acceptance criteria:

  • Custom fields have user-defined names
  • Field values can be text, number, date, or boolean
  • Custom fields are searchable
  • Batch editing of custom fields is supported

FR-2.4: Book file export

Priority: P0 | Use case: UC-2.7

User can export selected book files from the system.

Acceptance criteria:

  • Single or multiple books can be selected
  • Export as individual files or ZIP archive
  • Original file format is preserved
  • Export includes embedded metadata

FR-2.5: Library data export

Priority: P1 | Use case: UC-2.7

User can export library data in structured, human-readable formats.

Acceptance criteria:

  • Export formats: JSON, CSV, OPML
  • Includes all metadata, shelves, tags, and reading progress
  • Annotations and notes can be included optionally
  • Export can be filtered by shelf or tags

FR-2.6: Book import

Priority: P0 | Use case: UC-2.1

User can import books from files, URLs, or cloud storage.

Acceptance criteria:

  • Supported import sources: local files, URLs, Google Drive, OneDrive, Dropbox
  • Bulk import of multiple files/folders
  • Metadata is automatically extracted from file
  • Duplicate detection with merge options

Priority: P1 | Use case: UC-2.6

System provides full-text search within book contents.

Acceptance criteria:

  • Search works for EPUB, TXT formats (PDF requires OCR)
  • Results show matched text with context
  • Search is case-insensitive by default
  • Results link directly to location in book

Priority: P0 | Use case: UC-2.6

System supports searching by metadata, tags, categories, and content.

Acceptance criteria:

  • Searchable fields: title, author, description, ISBN, tags, shelves
  • Filters: reading status, format, date added, publication date, rating
  • Search results are sortable
  • Recent searches are saved

FR-2.9: Shelf organization

Priority: P0 | Use case: UC-2.4

User can create shelves to group books into collections.

Acceptance criteria:

  • Shelves have name, description, and optional color
  • Books can belong to multiple shelves
  • Default shelves: "Currently Reading", "Want to Read", "Finished"
  • Shelves can be nested (sub-shelves)
  • Drag-and-drop organization

FR-2.10: Book tagging

Priority: P0 | Use case: UC-2.5

User can assign colored tags to books for organization and filtering.

Acceptance criteria:

  • Tags have title and color (from palette or custom)
  • Books can have 0-10 tags
  • Tags are visible in library view
  • Quick tag assignment via context menu
  • Batch tagging supported

FR-2.11: Query language filters

Priority: P2 | Use case: UC-2.6

User can create complex filters using a query language.

Acceptance criteria:

  • Query syntax similar to Jira/GitHub (e.g., author:"Name" AND year:>2000)
  • Supports AND, OR, NOT operators
  • Date ranges, numeric comparisons
  • Filters can be saved and named
  • Graphical filter builder as alternative

FR-2.12: ISBN barcode scanning

Priority: P2 | Use case: UC-2.8

User can scan ISBN barcodes to add physical books with fetched metadata.

Acceptance criteria:

  • Camera-based barcode scanning (mobile/desktop with camera)
  • ISBN lookup from multiple sources
  • User can edit fetched metadata before saving
  • Works offline with manual ISBN entry fallback

FR-2.13: Metadata fetching

Priority: P1 | Use case: UC-2.3

System can automatically fetch metadata from online sources.

Acceptance criteria:

  • Sources: Open Library, Google Books (configurable)
  • Fetch triggered manually or on import
  • User reviews and confirms changes before applying
  • Cover images can be fetched automatically

FR-2.14: Physical book tracking

Priority: P1 | Use case: UC-2.9

User can add and track physical books in their library.

Acceptance criteria:

  • Manual entry of all metadata fields
  • Physical books appear in library alongside digital
  • Reading status and progress tracking
  • Location field (e.g., "Shelf 3", "Lent to John")

3. Integrated viewer

FR-3.1: E-book reading

Priority: P0 | Use case: UC-3.1

User can read e-books using the integrated viewer.

Acceptance criteria:

  • Supports: EPUB, PDF, MOBI, AZW3, TXT, CBR, CBZ
  • Responsive layout adapts to screen size
  • Reading position is automatically saved
  • Table of contents navigation
  • Page/chapter navigation

FR-3.2: Viewer customization

Priority: P0 | Use case: UC-3.2

User can customize the viewer appearance and behavior.

Acceptance criteria:

  • Typography: font family, size (8-72pt), weight, line height, letter spacing, paragraph spacing
  • Colors: background, text, links (presets + custom)
  • Layout: margins, padding, single/dual page, pagination/scroll
  • Navigation: tap zones, swipe, volume keys, on-screen buttons
  • Brightness: in-app control independent of system

FR-3.3: Reading profiles

Priority: P1 | Use case: UC-3.3

User can create and manage named reading profiles.

Acceptance criteria:

  • Profile contains all viewer customization settings
  • Quick switch between profiles
  • One profile can be set as default
  • Profiles can be exported/imported
  • Device-specific default profiles

FR-3.4: Bookmarks

Priority: P0 | Use case: UC-3.4

User can create and manage bookmarks within books.

Acceptance criteria:

  • Create bookmark at current position with optional note
  • List all bookmarks for a book
  • Jump to bookmark location
  • Delete bookmarks
  • Bookmarks sync across devices

4. Annotations and notes

FR-4.1: Text highlighting

Priority: P0 | Use case: UC-4.1

User can highlight text while reading with optional notes.

Acceptance criteria:

  • Select text and choose highlight color
  • Multiple color options (at least 5)
  • Optional note attached to highlight
  • Highlights visible in text
  • View all highlights in dedicated panel

FR-4.2: Book notes

Priority: P0 | Use case: UC-4.2

User can create free-form notes associated with books.

Acceptance criteria:

  • Notes have title and content
  • Rich text or Markdown support
  • Notes are not tied to specific text location
  • Multiple notes per book
  • Notes are searchable

FR-4.3: Annotation editing

Priority: P0 | Use case: UC-4.3

User can edit and delete existing annotations and notes.

Acceptance criteria:

  • Edit highlight color and attached note
  • Edit note title and content
  • Delete with confirmation
  • Undo delete within session

FR-4.4: Annotation export

Priority: P1 | Use case: UC-4.4

User can export annotations and notes to external formats.

Acceptance criteria:

  • Export formats: plain text, Markdown, PDF, HTML
  • Include highlighted text with context
  • Group by book or export all
  • Include metadata (book title, date, page)

Priority: P1 | Use case: UC-4.5

User can search through all annotations and notes.

Acceptance criteria:

  • Search across all books or specific book
  • Search in highlight text and note content
  • Filter by color, date, book
  • Results link to source location

5. Progress tracking

FR-5.1: Reading statistics

Priority: P0 | Use case: UC-5.1

User can view comprehensive reading progress and statistics.

Acceptance criteria:

  • Metrics: total time read, books completed, pages read, current streaks
  • Per-book stats: time spent, sessions, reading velocity
  • Visual charts and graphs
  • Comparison to previous periods

FR-5.2: Statistics filtering

Priority: P1 | Use case: UC-5.2

User can filter statistics by time frame and book selection.

Acceptance criteria:

  • Time frames: today, week, month, year, custom range
  • Filter by: specific books, shelves, tags
  • Export statistics data
  • Save filter presets

FR-5.3: Cross-device sync

Priority: P0 | Use case: UC-7.3

System synchronizes reading progress, metadata, and annotations across all logged-in devices via the metadata server.

Acceptance criteria:

  • Reading position syncs within 30 seconds when online
  • Metadata, shelves, tags, annotations sync automatically
  • Offline changes queued and sync when connection restored
  • Conflict resolution: latest timestamp wins for position, merge for metadata
  • Sync status indicator visible in app (synced, syncing, offline, error)
  • Requires metadata server connection (self-hosted or official)

See Server Architecture for sync details.


6. Goal management

FR-6.1: Reading goals

Priority: P1 | Use case: UC-6.1

User can create time-based reading goals.

Acceptance criteria:

  • Goal types: books per period, pages per period, time per period
  • Periods: daily, weekly, monthly, yearly, custom
  • Multiple active goals allowed
  • Goal templates for quick creation

FR-6.2: Manual goal updates

Priority: P1 | Use case: UC-6.2

User can manually update goal progress values.

Acceptance criteria:

  • Increment/decrement progress
  • Set exact value
  • Add notes to progress updates
  • History of manual updates

FR-6.3: Automatic goal progress

Priority: P1 | Use case: UC-6.2

System automatically updates goal progress based on reading activity.

Acceptance criteria:

  • Book completion updates book-count goals
  • Reading time updates time-based goals
  • Pages read updates page-count goals
  • Progress is calculated in real-time

FR-6.4: Goal notifications

Priority: P2 | Use case: UC-6.2

System sends notifications about goal progress and reminders.

Acceptance criteria:

  • Reminder notifications (configurable frequency)
  • Milestone notifications (50%, 75%, complete)
  • Streak notifications
  • Notifications can be disabled per goal

7. Storage and synchronization

FR-7.1: File storage backend selection

Priority: P0 | Use case: UC-7.1

User can choose where book files are stored from application settings.

Acceptance criteria:

  • Options: device local, Google Drive, OneDrive, Dropbox, WebDAV, MinIO/S3, dedicated Papyrus server
  • Multiple backends can be configured simultaneously
  • One backend is designated as primary for new uploads
  • Files can be migrated between backends without data loss
  • Backend configuration accessible from Settings > Storage
  • Connection status and storage usage displayed

See Server Architecture for details.

FR-7.1.1: Metadata server configuration

Priority: P0 | Use case: UC-7.1

User can configure connection to a metadata server for cross-device synchronization.

Acceptance criteria:

  • Default: use official hosted server (optional)
  • Self-hosted option: user provides server URL
  • Server URL validation and connection testing
  • Login/registration on metadata server
  • Clear indication when offline or disconnected
  • Works without metadata server (local-only mode)

FR-7.2: File upload

Priority: P0 | Use case: UC-2.1

User can upload book files from their device.

Acceptance criteria:

  • File picker with format filtering
  • Drag-and-drop support (desktop/web)
  • Progress indicator for large files
  • Duplicate detection

FR-7.3: OCR processing

Priority: P2 | Use case: UC-7.2

System can apply OCR to scanned documents for text extraction.

Acceptance criteria:

  • Processes PDF files with scanned images
  • Text becomes searchable after OCR
  • Processing happens in background
  • Quality/confidence indicator shown
  • Multiple language support

FR-7.4: Plugin system

Priority: P3 | Use case: N/A

System supports optional plugins for extended functionality.

Acceptance criteria:

  • Plugin types: metadata sources, storage backends, reader features
  • Plugins are sandboxed for security
  • Enable/disable individual plugins
  • Plugin marketplace/repository

FR-7.5: OPDS catalog support

Priority: P2 | Use case: UC-7.4

User can browse and download books from OPDS catalogs.

Acceptance criteria:

  • Add OPDS catalog URLs
  • Browse catalog hierarchy
  • Search within catalogs
  • Download books directly to library
  • Authentication for protected catalogs

Requirements traceability matrix

Requirement Priority Use Cases Actors
FR-1.1 P0 UC-1.1 Anonymous → Registered
FR-1.2 P0 UC-1.2 Registered
FR-1.3 P1 UC-1.3 Registered
FR-1.4 P0 UC-1.4 Anonymous, Registered
FR-1.5 P1 UC-1.5 Registered
FR-1.6 P1 UC-1.6 Registered
FR-2.1 P2 UC-2.2 Reader
FR-2.2 P0 UC-2.3 Reader
FR-2.3 P2 UC-2.3 Reader
FR-2.4 P0 UC-2.7 Reader
FR-2.5 P1 UC-2.7 Reader
FR-2.6 P0 UC-2.1 Reader
FR-2.7 P1 UC-2.6 Reader
FR-2.8 P0 UC-2.6 Reader
FR-2.9 P0 UC-2.4 Reader
FR-2.10 P0 UC-2.5 Reader
FR-2.11 P2 UC-2.6 Reader
FR-2.12 P2 UC-2.8 Reader
FR-2.13 P1 UC-2.3 Reader
FR-2.14 P1 UC-2.9 Reader
FR-3.1 P0 UC-3.1 Reader, E-ink Reader
FR-3.2 P0 UC-3.2 Reader, E-ink Reader
FR-3.3 P1 UC-3.3 Reader, E-ink Reader
FR-3.4 P0 UC-3.4 Reader
FR-4.1 P0 UC-4.1 Reader
FR-4.2 P0 UC-4.2 Reader
FR-4.3 P0 UC-4.3 Reader
FR-4.4 P1 UC-4.4 Reader
FR-4.5 P1 UC-4.5 Reader
FR-5.1 P0 UC-5.1 Reader
FR-5.2 P1 UC-5.2 Reader
FR-5.3 P0 UC-7.3 Registered
FR-6.1 P1 UC-6.1 Reader
FR-6.2 P1 UC-6.2 Reader
FR-6.3 P1 UC-6.2 Reader
FR-6.4 P2 UC-6.2 Reader
FR-7.1 P0 UC-7.1 Registered, Admin
FR-7.1.1 P0 UC-7.1 Registered
FR-7.2 P0 UC-2.1 Reader
FR-7.3 P2 UC-7.2 Reader
FR-7.4 P3 N/A Developer
FR-7.5 P2 UC-7.4 Reader