$ show eladnava/applicationize
Applicationize is a Node.js/Koa web application that converts web apps into standalone desktop apps by generating Chrome packaged extensions (CRX files). Users input a URL, and the service fetches the web app to extract its title and favicon, then creates a custom Chrome extension that embeds the URL in a webview with native app-like behavior (e.g., keyboard shortcuts for fullscreen, zoom, and dialog handling). The extension is packaged and served as a ZIP file for download to avoid Chrome's CRX_REQUIRED_PROOF_MISSING error. The architecture consists of a server-rendered web interface built with Bootstrap 3 and jQuery, and a backend that handles extension generation via two main routes: one for serving the applicationizer form and another for processing the generation request. The generation process involves fetching the target URL, parsing HTML with Cheerio, generating a self-signed certificate, customizing extension template files (manifest, background script, embed HTML), and packing the extension using the crx and adm-zip modules. Although the code demonstrates clear separation of concerns and includes reusable Koa middleware for HTTPS redirection and error handling, the core functionality is now obsolete due to Google's deprecation of Chrome packaged apps. The project relies on outdated dependencies (including the deprecated request library) and generates extensions using manifest v2 and chrome.app.runtime APIs, which are no longer supported in modern Chrome versions. The README explicitly directs users to alternatives like native application shortcuts or Nativefier, indicating the project is effectively abandoned.
The LLM identified 2 files worth highlighting for reuse:
A simple Koa middleware that forces HTTPS by checking the x-forwarded-proto header and redirecting HTTP requests to HTTPS. It is isolated, reusable in any Koa application, and demonstrates a common pattern for handling SSL termination at a reverse proxy.
A centralized error handling middleware for Koa that sends JSON error responses for API requests and renders an error page for browser requests. It is reusable in other Koa apps and demonstrates the pattern of checking the Accept header to determine the response format.