Skip to main content

Sphinx Extension to turn Sphinx websites into Progressive Web Applications

Project description

sphinxext-pwa

🛑 STOP 🛑

This technology is highly experimental and volatile. Individuals using this extension should expect the following:

  • completely random breakage
  • excessive data usage
  • excessive battery life drain
  • completely breaking your sphinx website

Current Issues

  • iOS is only partially working
    • For some weird reason, the service worker is getting killed and not being reactivated consistently.

See issues for more information.

Introduction

Progressive Web Applications, also known as PWAs, are a fantastic technology that enables seemless integration between websites and mobile devices. It empowers websites with the ability to present itself as a native-style application; complete with notifications and offline support. This extension's goal is to provide a "close as possible" integration between Sphinx and PWAs.

Installation

Installation is pretty easy but has a couple major points.

First, you need to add this dependency to your extensions list in conf.py.

extensions = [
    "sphinxext.pwa",
]

The extension will automatically prepopulate data for the manifest that is required for PWAs. However, setting the icons is mandatory. pwa_icons is a configuration variable that accepts a list of arrays. The nested array must have index 0 be the directory of the icon. The second 1 index must be string list of sizes of that icon.

IMPORTANT: Icons must be placed at the root of the _static directory. Subdirectories will not work.

pwa_icons = [["_static/myicon.webp", "48x48"]]

This extension does require NodeJS >= 16. If you are deploying on ReadTheDocs, you need to add or customize the build config as shown here. Once this is done, that should be all that is required to turn your Sphinx website into a Progressive Web Application!

Configuration

PWAs have a lot of configuration. For details on accepted inputs, see the Mozilla documentation. Only a limited subset of options are exposed. Below are a list of exposed manifest options.

Note: Invalid inputs to these options can break the PWA and be extremely difficult to debug.

Configuration Default Type
pwa_name project variable in conf.py String
pwa_short_name None String
pwa_theme_color None String containing HEX color code
pwa_display "standalone" String
pwa_icons MANDATORY [["image location", "sizes"]]
pwa_online_only False Boolean

Caveats

Supported Browsers: Chrome (Desktop & Mobile), Firefox (Mobile), Safari (iOS). Only the standard, non-beta, non-light versions of these browsers are supported.

Supported OSes: Android >= 6. iOS >= 14.2

Installation Time for Offline to Work: It depends on the website, but a 160MB application takes on average 15 minutes to enable offline support. This also changes depending on the device specific implementation.

Cache Timeouts: Whenever the user clears their browser cache, it will purge the assets. It is undetermined at this time if it will retrigger the download of the entire cache. Some users have space saving applications that may interfere with this.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sphinxext-pwa-0.0.1a0.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

sphinxext_pwa-0.0.1a0-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file sphinxext-pwa-0.0.1a0.tar.gz.

File metadata

  • Download URL: sphinxext-pwa-0.0.1a0.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for sphinxext-pwa-0.0.1a0.tar.gz
Algorithm Hash digest
SHA256 8eeabb72af983a83fbdacf8484b70c402d54bb4e43e7af77f56f674ddc685b56
MD5 10fb92bf0589a2fe7f58f2c57624ad02
BLAKE2b-256 59b4187febc16a854cfa9afd227d391ce6515770f68b769298129eb7b2889607

See more details on using hashes here.

File details

Details for the file sphinxext_pwa-0.0.1a0-py3-none-any.whl.

File metadata

  • Download URL: sphinxext_pwa-0.0.1a0-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for sphinxext_pwa-0.0.1a0-py3-none-any.whl
Algorithm Hash digest
SHA256 c07d55bfb441baff82f22b4a324f40b88ffc72b5661119bc941c3d1556ff76eb
MD5 284e0a1b19c55da1fe45ba4d99f74ae2
BLAKE2b-256 9d83a0c2fa5f4f4a6599025708372504f95d672decb76db5fdc3564571b85808

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page