Skip to content

🌐 Proposal: Add a 'Web App' branch β€” WebToEpub without installing an extensionΒ #2740

Description

@rasadonly

Hello @dteviot πŸ‘‹

First of all, thank you for building and maintaining WebToEpub over the years. It's an incredible tool and the community around it is a testament to how useful it is. I've been using it daily and decided to explore a different way to deliver the same power to users.


What I Built

I created a standalone web application version of WebToEpub, live here:
πŸ‘‰ rasadonly.github.io/WebToEpub-App

It is based entirely on your codebase β€” same parsers, same logic, same EPUB output quality β€” but it runs as a regular website in any browser tab, with zero installation required.


How It's Different from the Main Extension

Feature Your Extension This Web App
Installation Required (Chrome/Firefox store) ❌ None β€” open a URL and go
Browser support Chrome, Firefox, Edge Any modern browser, including mobile
Android support Firefox Nightly only βœ… Full support β€” just open the site
Extension permissions Required Not needed
Deployment Browser store review process Instant via GitHub Pages
CORS restrictions Extension bypasses them natively Solved via CORS proxy (see below)

The Core Technical Challenge β€” CORS

Browser extensions work because they have special host_permissions that let them fetch content from any site without hitting CORS (Cross-Origin Resource Sharing) restrictions. A plain website running in a browser tab doesn't have these β€” the browser blocks cross-origin fetches by default.

How We Solved It

We added an optional, configurable CORS proxy layer to the fetch pipeline. When the app is running as a website (not an extension), all chapter/image fetches are routed through a CORS proxy server that:

  1. Receives the request from the browser
  2. Fetches the target URL server-side (no CORS restrictions)
  3. Returns the response with proper Access-Control-Allow-Origin headers

The proxy URL is fully user-configurable in Settings β€” users can plug in any cors-anywhere-compatible endpoint. We also included a guide (DEPLOY_PROXY.md) so users can self-host a free private proxy on Render.com in minutes.

The proxy is opt-in β€” if someone loads the page as a local extension or in an environment where CORS isn't a problem, they can disable it entirely.


Why This Helps Users

  1. No installation friction β€” A huge portion of potential users never install extensions. A website link they can bookmark and share immediately is a much lower barrier to entry.

  2. Works on Android β€” The extension currently requires Firefox Nightly on Android. The web app works on any Android browser (Chrome, Firefox, Samsung Internet, etc.) out of the box.

  3. Works in restricted environments β€” Schools, workplaces, and managed devices often block extension installation. A website works everywhere.

  4. Easy to share β€” Anyone can share rasadonly.github.io/WebToEpub-App/ with a friend who wants to convert a novel. No "first install the extension" step.

  5. Serves users who can't use extensions β€” iOS Safari does not support WebExtensions at all. A web app is the only way to reach these users.


My Request

I'd love for you to consider hosting this as a separate branch (e.g., web-app or webapp-cors-proxy) in the official dteviot/WebToEpub repository. This would:

  • Keep it part of the official project's history and community
  • Allow the main parser updates from main to be merged in over time
  • Let interested contributors improve the web-app experience alongside the extension
  • Clearly label it as experimental/alternative so there's no confusion with the main extension

I'm not proposing to change anything about the extension β€” it stays exactly as it is. This would purely be an additive, opt-in branch showing an alternative way to deploy the same tool.


Repository

My fork with the changes: rasadonly/WebToEpub-App
Branch with web-app changes: rasadonly/WebToEpub-App/tree/web-app-cors-proxy
Live demo: rasadonly.github.io/WebToEpub-App

Happy to open a proper PR, answer any questions, or restructure anything to fit the project's conventions.

Thank you for your time and for everything you've built! πŸ™

β€” prasadghanwatprof-lang (prasadghanwat123@gmail.com)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions