Back to all case studies
Native Android AppOpen Source2025

PurplePrint

A fully offline Android Markdown editor with on-device PDF export.

Sole Developer Timeline: 2025

Built an offline Android Markdown editor with an on-device parser and PDF workflow.

0

network permissions

The application is designed to work without internet access.

2

adaptive layouts

Tabs on phones and split editor/preview on tablets.

1

local document engine

The parser and PDF renderer run on the device.

01 / Project evidence

Project visual and links

PurplePrint Markdown editor showing split preview

Product screenshot

Split editor and preview

Product screenshot showing Markdown source and its rendered document side by side.

02 / System design

Architecture diagram

PurplePrint has no network dependency: Markdown is parsed into an AST and laid out into a PDF entirely on the Android device.

01

Markdown source → PDF document

The full document pipeline is local to the Android device and does not require a network service.

STEP 01

Jetpack Compose + Material 3

Editor

Captures Markdown and shows adaptive phone/tablet editing UI.

STEP 02

Custom block + inline parser

Parser

Converts Markdown syntax into a structured document model.

STEP 03

AST

Document tree

Represents headings, paragraphs, lists, code, and inline spans.

STEP 04

Android canvas / page layout

Layout engine

Measures content and places blocks across PDF pages.

STEP 05

Android PdfDocument

PDF output

Writes the pages to a device-local PDF.

On-device; no network permission
02

Preview and print handoff

The editor preview and the native Android print flow consume the same parsed document model.

STEP 01

Shared AST

Parsed Markdown

Supplies content to both preview and export paths.

STEP 02

Compose UI

Live preview

Shows the rendered document while the source is edited.

STEP 03

PrintManager

Print / share

Hands the generated document to Android’s native print surface.

Arrows show the main request or data handoff. Boundary labels mark local-only processing, browser-to-server transitions, or external services.

03 / Engineering decisions

Choices and trade-offs

Decision 01

Keep the document engine on-device

Choice: Use a custom parser and Android PDF APIs instead of uploading Markdown to a conversion service.

Trade-off: Documents stay local and the app works offline, while parser and pagination edge cases remain the app’s responsibility.

Decision 02

Adapt editing to screen size

Choice: Use a split editor/preview on larger layouts and a focused tab workflow on phones.

Trade-off: The same content model supports both layouts, with different navigation affordances by device size.

Evidence

Evidence snapshot

Offline and privacy controls from the Android build review. Document content and device identifiers are intentionally absent.

Internet permissionNot declaredIMPLEMENTED
Document processingOn-deviceIMPLEMENTED
PDF outputNative PdfDocumentDOCUMENTED
Backup defaultDisabledIMPLEMENTED
MODE: offline-first
PERMISSIONS: network access absent
REDACTION: source document and device metadata removed

Offline behavior is supported by the declared permission posture and the local parser/PDF workflow. It does not imply a measured user-adoption or performance result.

05 / Verification

Verification methodology

01

Test parser coverage

Checked block and inline Markdown combinations, empty documents, long lines, and malformed syntax against the AST renderer.

02

Validate layout output

Compared preview and generated PDF across headings, lists, code, page breaks, and print dialog handoff.

03

Exercise device states

Verified phone tabs, tablet split view, theme changes, rotation, and offline launch behavior.

06 / Ownership

What I personally contributed

This section separates my direct contribution from broader project outcomes.

  • Sole developer responsible for the native Android architecture and product decisions.
  • Wrote the custom block-level and inline Markdown parser and AST model.
  • Implemented the PDF layout engine with Android PdfDocument and PrintManager.
  • Designed the adaptive Compose UI, themes, permission posture, and offline behavior.