Skip to content

About

Local-first browser conversion toolkit with no backend, uploads, or tracking.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Serverless Converter

Serverless Converter is a privacy-first, zero-backend conversion toolkit.

Everything runs locally in your browser.

Live site: https://vismaytiwari.github.io/serverless_converter/

Source: https://github.com/vismaytiwari/serverless_converter

Supported tools

  • Markdown Converter: paste or upload .md / .txt, preview Markdown, export TXT, MD, HTML, DOCX, and print/save as PDF.
  • Text Cleaner: paste or upload .txt, remove Markdown formatting, normalize whitespace, convert smart quotes, remove zero-width characters, and export TXT.
  • PDF Tools: merge PDFs, split/extract ranges, delete pages, reorder pages, and unlock password-protected PDFs when you already know the password.
  • JSON / CSV: pretty-print JSON and convert between JSON and CSV.
  • Image Tools: convert and resize PNG, JPEG, and WebP images.
  • Base64: encode and decode text or files.
  • Slack: convert Markdown to Slack mrkdwn.

Supported formats

  • Input: Markdown, plain text, PDF, JSON, CSV, PNG, JPEG, WebP, and Base64.
  • Output: TXT, Markdown, standalone HTML, semantic DOCX, print/save-as-PDF, generated PDFs, JSON, CSV, PNG, JPEG, WebP, and Base64.

Local setup

npm install
npm run dev

Build and preview

npm run build
npm run preview

For a local root-path build instead of the default GitHub Pages base path:

VITE_BASE_PATH=/ npm run build

GitHub Pages deployment

This app is fully static and deploys to GitHub Pages:

https://vismaytiwari.github.io/serverless_converter/

Deployment is handled by .github/workflows/deploy.yml.

  1. Enable GitHub Pages for the repository.
  2. Set the Pages source to GitHub Actions.
  3. Push to main.
  4. The workflow installs dependencies, runs tests, builds with VITE_BASE_PATH=/<repo-name>/, uploads dist, and deploys the static site.

The app uses a single-page shell and hash-based tab state, so browser refreshes do not depend on server-side routing.

Architecture

The app is split so design changes do not affect conversion logic:

  • src/app owns the app shell and toolRegistry.
  • src/components/common contains reusable UI only.
  • src/tools/markdown contains Markdown UI, service logic, exporters, types, and tests.
  • src/tools/text contains Text Cleaner UI, service logic, types, and tests.
  • src/tools/pdf contains PDF UI and separate services for merge, split, reorder/delete, and unlock.
  • src/export contains TXT, HTML, DOCX, and print exporters.
  • src/services contains reusable file and page-break helpers.
  • src/styles controls theme and layout through CSS variables.

Conversion services do not import React or CSS. React components handle layout, interaction, and rendering only.

Adding or removing tools safely

Tools are declared in src/app/toolRegistry.ts. Each tool is lazy-loaded through its own registry entry.

To remove a tool, remove its registry entry. The app shell still builds because it renders only enabled registry tools and does not import tool components directly.

To add a tool, create a new folder under src/tools/<tool-name>, keep service logic separate from UI, add focused tests, then add one registry entry.

PDF unlock

PDF unlock is local-only and lazy-loads qpdf WASM only when the unlock tool is used. It only works when you already know the PDF password.

Serverless Converter does not crack, guess, brute force, or bypass unknown passwords.

Sample files

Sample files live under public/samples:

  • simple-markdown.md
  • multipage-markdown.md
  • markdown-table-list-code.md
  • simple-text.txt

For PDF testing, create or use local PDFs from your own device. Do not upload private PDFs to third-party services to create samples.

Limitations

  • No backend conversion.
  • No API calls.
  • Browser memory limits apply.
  • Very large files may be slow.
  • Markdown PDF export uses browser print/save-as-PDF.
  • DOCX export is semantic, not pixel-perfect.
  • PDF unlock only works when the user already knows the password.
  • No password cracking or brute-force support.
  • Some encrypted PDFs may use unsupported encryption.

About

Local-first browser conversion toolkit with no backend, uploads, or tracking.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages