Skip to content

orangebread/pagemint

Repository files navigation

PageMint

PageMint

Save any web page as a trustworthy PDF. Locally. Free. Open source.

A small press for the web.

License: MIT Chrome Web Store No telemetry Made with TypeScript Built with Next.js pnpm workspace

Install on Chrome · Website · Trust & permissions · Report an issue


PageMint hero — save any page as a local PDF

✨ Why PageMint?

Chrome's print-to-PDF breaks on the pages you actually need to save. Logged-in dashboards. Long receipts. Multi-page reports. Dynamic pages that load as you scroll.

PageMint captures all of them in one click — locally, on your device, with no account, no upload, no telemetry.

Every line of code is in this repo. Every claim is verifiable.

PageMint capturing a web page and rendering it to a local PDF

🚀 Features

🔑 Logged-in pages Bank statements, finance dashboards, GA4 reports, Notion pages — anything behind a login wall.
🎯 High Fidelity mode Uses Chrome DevTools Protocol locally to render pages exactly as you see them. No cut-off charts, no broken layouts.
🔒 100% local-first Page content, screenshots, and PDFs never leave your device. No servers in the product path.
📖 Open source MIT-licensed. Read it, fork it, ship your own build, audit the network behavior yourself.
✂️ Selection capture Highlight a section of the page and save just that — not the whole document.
📜 Local history Every PDF you've saved, searchable and re-exportable from your toolbar.
⚙️ Full export control Paper size, margins, scaling, page breaks, headers — tune once, save your defaults.
🧹 Remove elements Strip cookie banners, ads, or anything else before you capture. Session-local, never persisted.

🖼️ A look inside

PageMint options — permissions baseline
Permissions baseline — three permissions, gated and on demand.
PageMint options — export defaults
Export defaults — paper, margins, scaling, headers.
PageMint options — local history
Local history — every PDF, searchable from the toolbar.

📦 Install

From Chrome Web Store (recommended)

→ Install PageMint

From source

git clone https://github.com/orangebread/pagemint.git
cd pagemint
pnpm install
pnpm --filter @pagemint/extension build

Output lands in apps/extension/.output/chrome-mv3. In Chrome:

  1. Open chrome://extensions
  2. Toggle Developer mode
  3. Click Load unpacked, point at apps/extension/.output/chrome-mv3

🛡️ Privacy you can verify

PageMint has no hosted rendering, telemetry, account, checkout, support-intake, admin backend, or server-side feature gating in the open-source product.

  • Page content, rendered PDFs, settings, and optional history stay in the browser profile where PageMint is installed.
  • No third-party analytics. No phone-home. No usage pings.
  • The debugger permission is declared up front, gated behind a toggle, and attached only on demand.

Because the source is public, this isn't a promise — it's something you can check. Open the DevTools network tab. Grep the source. Run a custom build.

See pagemint.space/trust for the full permission baseline.


🧱 Repo layout

pagemint/
├── apps/
│   ├── extension/        # Chrome MV3 extension (WXT + React)
│   └── site/             # Public marketing site (Next.js 15)
├── packages/
│   ├── render-core/      # Exact-export defaults + High Fidelity CDP primitives
│   └── shared-types/     # Shared exact-export contracts
├── tests/                # Unit, browser-boundary, scaffold, type contracts
├── docs/                 # Product specs, architecture, roadmap
└── scripts/              # Release + preflight tooling

🧪 Verification

Command What it runs
pnpm run repo:verify Strongest gate. Lint, contracts, workspace tests, typecheck, build, real browser-boundary suite.
pnpm run repo:smoke Lightweight scaffold/authority check for planning + docs work.
pnpm run test:browser:install One-time Playwright Chromium install (required before repo:verify).
pnpm run dev Run extension + site dev servers in parallel via Turbo.

🛠️ Tech stack

  • Extension: WXT · React 19 · TypeScript strict · Chrome MV3 · DevTools Protocol
  • Site: Next.js 15 · React 19 · server components · zero-runtime CSS
  • Monorepo: pnpm workspaces · Turborepo
  • Testing: node:test · Playwright (browser boundary) · contract typechecks

🤝 Contributing

Bug reports, compatibility findings, and feature requests are welcome on the issue tracker.

Before opening an issue:

  • Do not attach private page content, screenshots, PDFs, or secrets — issues are public.
  • Include browser, extension version, OS, and a public-URL repro when possible.
  • Search existing issues; add confirmation to an existing thread when the behavior is already reported.

📚 Documentation


🧼 Public repo hygiene

The public tree intentionally excludes local agent, orchestration, and private environment artifacts. Keep secrets in local .env files or host-managed secret stores — never in git.


Built with care for the web that doesn't print right.

pagemint.space · @orangebread/pagemint

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors