Skip to content

jlmiles4/pdfcomments.app

Repository files navigation

PDF Comments

Extract annotations from PDFs and export to Markdown.

Try it live →

PDF Comments Screenshot

Features

  • Drag-and-drop - Upload PDFs directly in the browser
  • 100% private - Files never leave your browser, no server processing
  • Annotation types - Highlights, strikeouts, underlines, circles, squares, sticky notes, free-text boxes, and ink drawings
  • Accurate marked text - Handles partial selections, multi-line marks, and rotated, skewed, or vertical text
  • Smart grouping - Links each sticky note to its nearest nearby annotation in rendered-page coordinates
  • Resilient processing - Cancel long documents without leaving PDF workers behind; readable pages and annotations survive recoverable extraction errors
  • Export formats - Detailed Markdown (AI-ready), GFM checklist, and rich HTML for Google Docs / Word

Quick Start

Use Node.js 22 and the pnpm version declared in package.json.

pnpm install
pnpm dev

Open localhost:3000

Run the complete verification gate before submitting a change:

pnpm test
pnpm lint
pnpm exec tsc --noEmit
pnpm build

To preview the generated static export, run pnpm start after pnpm build.

Deploy

Pull requests targeting main run tests, lint, type checking, and a static build. A push to main runs the same gate, then deploys the verified out/ artifact to S3 and invalidates CloudFront through GitHub Actions. The production job uses GitHub OIDC rather than stored AWS access keys.

For an explicitly approved manual deployment:

pnpm send-it         # build, s3 sync --delete, then CloudFront invalidation

Manual deployment requires the variables in .env.example plus working AWS credentials. GitHub Actions uses the equivalent repository or production environment variables. See the deployment runbook for the required OIDC trust policy, environment protection, CloudFront routing, and rollback procedure.

Tech Stack

  • Next.js 16 (static export, Turbopack)
  • pdfjs-dist 5 (client-side PDF parsing)
  • React 19
  • TypeScript 6
  • Tailwind CSS 4

Contributing

  • docs/ — architecture, extraction pipeline, design system, deploy runbook, and the add-a-new-annotation-type guide
  • CLAUDE.md — shared project guidance for Claude Code and Codex (commands, lifecycle rules, gotchas, and conventions)
  • .codex/config.toml — in a trusted checkout, tells Codex to recognize CLAUDE.md when AGENTS.md is absent, avoiding a second documentation tree

License

MIT - see LICENSE

About

Extract annotations from PDFs and export to Markdown

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors