{
"info": {
"author": "Silvio Luis",
"author_email": "silviolleite@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Environment :: Web Environment",
"Framework :: Django",
"Framework :: Django :: 1.10",
"Framework :: Django :: 1.11",
"Framework :: Django :: 1.8",
"Framework :: Django :: 1.9",
"Framework :: Django :: 2.0",
"Framework :: Django :: 2.1",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content"
],
"description": "django-pwa\n==========\n\n|Build Status| |Maintainability| |codecov| |PyPI - Downloads| |PyPI -\nDownloads| |PyPI - Downloads|\n\nThis Django app turns your project into a `progressive web\napp `__.\nNavigating to your site on an Android phone will prompt you to add the\napp to your home screen.\n\n.. figure:: https://github.com/silviolleite/django-pwa/raw/master/images/screenshot1.png\n :alt: Prompt for install\n\n Prompt for install\n\nLaunching the app from your home screen will display your app `without\nbrowser\nchrome `__.\nAs such, it\u2019s critical that your application provides all navigation\nwithin the HTML (no reliance on the browser back or forward button).\n\nRequirements\n============\n\nProgressive Web Apps require HTTPS unless being served from localhost.\nIf you\u2019re not already using HTTPS on your site, check out `Let\u2019s\nEncrypt `__ and\n`ZeroSSL `__.\n\nInstallation\n============\n\nInstall from PyPI:\n\n::\n\n pip install django-pwa\n\nConfiguration\n=============\n\nAdd ``pwa`` to your list of ``INSTALLED_APPS`` in settings.py:\n\n.. code:: python\n\n INSTALLED_APPS = [\n ...\n 'pwa',\n ...\n ]\n\nConfigure your app name, description, icons and splash screen images in\nsettings.py:\n\n.. code:: python\n\n\n PWA_APP_NAME = 'My App'\n PWA_APP_DESCRIPTION = \"My app description\"\n PWA_APP_THEME_COLOR = '#0A0302'\n PWA_APP_BACKGROUND_COLOR = '#ffffff'\n PWA_APP_DISPLAY = 'standalone'\n PWA_APP_SCOPE = '/',\n PWA_APP_ORIENTATION = 'any'\n PWA_APP_START_URL = '/'\n PWA_APP_ICONS = [\n {\n 'src': '/static/images/my_app_icon.png',\n 'sizes': '160x160'\n }\n ]\n PWA_APP_SPLASH_SCREEN = [\n {\n 'src': '/static/images/icons/splash-640x1136.png',\n 'media': '(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)'\n }\n ]\n PWA_APP_DIR = 'ltr'\n PWA_APP_LANG = 'en-US'\n\nAll settings are optional, and the app will work fine with its internal\ndefaults. Highly recommend setting at least ``PWA_APP_NAME``,\n``PWA_APP_DESCRIPTION``, ``PWA_APP_ICONS`` and\n``PWA_APP_SPLASH_SCREEN``.\n\nAdd the progressive web app URLs to urls.py:\n\n.. code:: python\n\n from django.urls import url, include\n\n urlpatterns = [\n ...\n url('', include('pwa.urls')), # You MUST use an empty string as the URL prefix\n ...\n ]\n\nInject the required meta tags in your base.html (or wherever your HTML\n is defined):\n\n.. code:: html\n\n {% load pwa %}\n\n \n ...\n {% progressive_web_app_meta %}\n ...\n \n\nTroubleshooting\n===============\n\nWhile running the Django test server:\n\n1. Verify that ``/manifest.json`` is being served\n2. Verify that ``/serviceworker.js`` is being served\n3. Verify that ``/offline`` is being served\n4. Use the Application tab in the Chrome Developer Tools to verify the\n progressive web app is configured correctly.\n5. Use the \u201cAdd to homescreen\u201d link on the Application Tab to verify you\n can add the app successfully.\n\nThe Service Worker\n==================\n\nBy default, the service worker implemented by this app is:\n\n.. code:: js\n\n // Base Service Worker implementation. To use your own Service Worker, set the PWA_SERVICE_WORKER_PATH variable in settings.py\n\n var staticCacheName = \"django-pwa-v\" + new Date().getTime();\n var filesToCache = [\n '/offline',\n '/css/django-pwa-app.css',\n '/images/icons/icon-72x72.png',\n '/images/icons/icon-96x96.png',\n '/images/icons/icon-128x128.png',\n '/images/icons/icon-144x144.png',\n '/images/icons/icon-152x152.png',\n '/images/icons/icon-192x192.png',\n '/images/icons/icon-384x384.png',\n '/images/icons/icon-512x512.png',\n '/static/images/icons/splash-640x1136.png',\n '/static/images/icons/splash-750x1334.png',\n '/static/images/icons/splash-1242x2208.png',\n '/static/images/icons/splash-1125x2436.png',\n '/static/images/icons/splash-828x1792.png',\n '/static/images/icons/splash-1242x2688.png',\n '/static/images/icons/splash-1536x2048.png',\n '/static/images/icons/splash-1668x2224.png',\n '/static/images/icons/splash-1668x2388.png',\n '/static/images/icons/splash-2048x2732.png'\n ];\n\n // Cache on install\n self.addEventListener(\"install\", event => {\n this.skipWaiting();\n event.waitUntil(\n caches.open(staticCacheName)\n .then(cache => {\n return cache.addAll(filesToCache);\n })\n )\n });\n\n // Clear cache on activate\n self.addEventListener('activate', event => {\n event.waitUntil(\n caches.keys().then(cacheNames => {\n return Promise.all(\n cacheNames\n .filter(cacheName => (cacheName.startsWith(\"django-pwa-\")))\n .filter(cacheName => (cacheName !== staticCacheName))\n .map(cacheName => caches.delete(cacheName))\n );\n })\n );\n });\n\n // Serve from Cache\n self.addEventListener(\"fetch\", event => {\n event.respondWith(\n caches.match(event.request)\n .then(response => {\n return response || fetch(event.request);\n })\n .catch(() => {\n return caches.match('offline');\n })\n )\n });\n\nAdding Your Own Service Worker\n==============================\n\nTo add service worker functionality, you\u2019ll want to create a\n``serviceworker.js`` or similarly named template in a template\ndirectory, and then point at it using the PWA_SERVICE_WORKER_PATH\nvariable (PWA_APP_FETCH_URL is passed through).\n\n.. code:: python\n\n PWA_SERVICE_WORKER_PATH = os.path.join(BASE_DIR, 'my_app', 'serviceworker.js')\n\nThe offline view\n================\n\nBy default, the offline view is implemented in\n``templates/offline.html`` You can overwrite it in a template directory\nif you continue using the default ``serviceworker.js``.\n\nFeedback\n========\n\nI welcome your feedback and pull requests. Enjoy!\n\nLicense\n=======\n\nAll files in this repository are distributed under the MIT license.\n\n.. |Build Status| image:: https://travis-ci.org/silviolleite/django-pwa.svg\n :target: https://travis-ci.org/silviolleite/django-pwa\n.. |Maintainability| image:: https://api.codeclimate.com/v1/badges/246542ea921058c4f76f/maintainability\n :target: https://codeclimate.com/github/silviolleite/django-pwa/maintainability\n.. |codecov| image:: https://codecov.io/gh/silviolleite/django-pwa/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/silviolleite/django-pwa\n.. |PyPI - Downloads| image:: https://img.shields.io/pypi/dm/django-pwa.svg\n :target: https://pypi.org/project/django-pwa/\n.. |PyPI - Downloads| image:: https://img.shields.io/pypi/v/django-pwa.svg\n :target: https://pypi.org/project/django-pwa\n.. |PyPI - Downloads| image:: https://img.shields.io/pypi/djversions/django-pwa.svg\n :target: https://pypi.org/project/django-pwa\n\n\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://github.com/silviolleite/django-pwa",
"keywords": "",
"license": "MIT License",
"maintainer": "",
"maintainer_email": "",
"name": "django-pwa",
"package_url": "https://pypi.org/project/django-pwa/",
"platform": "",
"project_url": "https://pypi.org/project/django-pwa/",
"project_urls": {
"Homepage": "http://github.com/silviolleite/django-pwa"
},
"release_url": "https://pypi.org/project/django-pwa/1.0.5/",
"requires_dist": [
"django (>=1.8)"
],
"requires_python": "",
"summary": "A Django app to include a manifest.json and Service Worker instance to enable progressive web app behavior",
"version": "1.0.5"
},
"last_serial": 4909592,
"releases": {
"1.0.0": [
{
"comment_text": "",
"digests": {
"md5": "a64c94094e305ff5e29ffabd9722d75c",
"sha256": "bbcf1ce4323d5dc23ed91b48c30634556a9e7e6c4b15bcfacb6900dec1c88201"
},
"downloads": -1,
"filename": "django-pwa-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "a64c94094e305ff5e29ffabd9722d75c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6655,
"upload_time": "2018-11-17T12:29:24",
"url": "https://files.pythonhosted.org/packages/83/bd/4660447eddf98db7994b1b304a4d8730fe5fadd5ee5666833458c2aafbaa/django-pwa-1.0.0.tar.gz"
}
],
"1.0.1": [
{
"comment_text": "",
"digests": {
"md5": "ac11a00a371774932c9ac1b651dffa44",
"sha256": "db653b7eb23369e2e415969283de6245a94c2702f1cfaec8caaff1d1106a6f92"
},
"downloads": -1,
"filename": "django_pwa-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ac11a00a371774932c9ac1b651dffa44",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 189693,
"upload_time": "2018-11-30T22:30:04",
"url": "https://files.pythonhosted.org/packages/1a/52/246266d8441545740b92b87723f1bacf64f971f4ef8c1a3bad506f3c4f40/django_pwa-1.0.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "02dc1bdb15d2bbf326c1c997bcfc981d",
"sha256": "db42d5cea842a608e7522e9abb54de0eb958e4ea2fd1cf445da4249a38fe9b83"
},
"downloads": -1,
"filename": "django-pwa-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "02dc1bdb15d2bbf326c1c997bcfc981d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 189015,
"upload_time": "2018-11-30T22:30:07",
"url": "https://files.pythonhosted.org/packages/dd/29/b09a0bb5b39f3ea6376db26885d4d1564d0d52e2dd3109ac69226f00a58a/django-pwa-1.0.1.tar.gz"
}
],
"1.0.2": [
{
"comment_text": "",
"digests": {
"md5": "fca27d4872eff2fe2b2999d639d18a9f",
"sha256": "e25b3a5a6dedd739d61e9360a7e6ca788319873390f7187d8ae47dc8394448b7"
},
"downloads": -1,
"filename": "django_pwa-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fca27d4872eff2fe2b2999d639d18a9f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 343279,
"upload_time": "2019-01-23T13:57:58",
"url": "https://files.pythonhosted.org/packages/37/e1/3d54444deed9261a627005b3af163e6f555681f9c58a14b7f2a4283932f2/django_pwa-1.0.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "45172963e758dd1c8926a87095f22e3b",
"sha256": "ec1cf9ae9766b41f4a91d619c04f99a1afb36982527f59b68eaf2bbf36b055a1"
},
"downloads": -1,
"filename": "django-pwa-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "45172963e758dd1c8926a87095f22e3b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 336786,
"upload_time": "2019-01-23T13:58:01",
"url": "https://files.pythonhosted.org/packages/f3/5f/e1e7bc197454bdfb79ea12139158e2b17e9e445dd331f6607d238746dcf8/django-pwa-1.0.2.tar.gz"
}
],
"1.0.3": [
{
"comment_text": "",
"digests": {
"md5": "bc5db0eabd8407ad01c69711479d34f7",
"sha256": "d592505fcde87a9fb1684ed1550b2f3704cdf0c54b952f669e02ed9db09ebdab"
},
"downloads": -1,
"filename": "django_pwa-1.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bc5db0eabd8407ad01c69711479d34f7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 343320,
"upload_time": "2019-02-01T12:17:32",
"url": "https://files.pythonhosted.org/packages/8b/a0/ee17640f73293d4e19585a76b39f946141ced443b44c031766e1f361ffa5/django_pwa-1.0.3-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1094327678f28fdb497f065da6524171",
"sha256": "8f8a4157181433b321be6a7aef5bb63898778fd8af2ea1a96e39b26581913767"
},
"downloads": -1,
"filename": "django-pwa-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "1094327678f28fdb497f065da6524171",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 336808,
"upload_time": "2019-02-01T12:17:34",
"url": "https://files.pythonhosted.org/packages/bc/8b/8c99479db3bf2fd0e7542058de4da311000a7e140d7f867b60c81137676e/django-pwa-1.0.3.tar.gz"
}
],
"1.0.4": [
{
"comment_text": "",
"digests": {
"md5": "60627bb3d2cabd780e56d554946ddb20",
"sha256": "49eaa4f0ce3d1ea6ad9f67ff907773274e806bcb87dc81e04e0fdf9fbe9dde8b"
},
"downloads": -1,
"filename": "django_pwa-1.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "60627bb3d2cabd780e56d554946ddb20",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 343321,
"upload_time": "2019-02-11T09:45:02",
"url": "https://files.pythonhosted.org/packages/35/de/4027fd6e60b96bbbd20e6c3975ff3aaff32f36dd8a5a495515b097ca84a8/django_pwa-1.0.4-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "3e2d250f96cbd25f65cd4867a362a29a",
"sha256": "228a5a6e758a3b36cff29b4005989cf65f30b58ad26b4d49f524db72f98ad069"
},
"downloads": -1,
"filename": "django-pwa-1.0.4.tar.gz",
"has_sig": false,
"md5_digest": "3e2d250f96cbd25f65cd4867a362a29a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 336864,
"upload_time": "2019-02-11T09:45:05",
"url": "https://files.pythonhosted.org/packages/72/bb/8f47232b70e310656d6d8b39ac276621dd8780e6add23b8661d28f217554/django-pwa-1.0.4.tar.gz"
}
],
"1.0.5": [
{
"comment_text": "",
"digests": {
"md5": "bb5c2f9150eaef2bb66473bcab925889",
"sha256": "ef093fda3028bdc99853cdd09844914fc223e64b0a98be4d4da2f44ba72b2761"
},
"downloads": -1,
"filename": "django_pwa-1.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bb5c2f9150eaef2bb66473bcab925889",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 343367,
"upload_time": "2019-03-07T10:55:24",
"url": "https://files.pythonhosted.org/packages/db/fb/f07e4565429a6436da001c2c08fd7a5d3399eb639bcba69ffe8e578004db/django_pwa-1.0.5-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "ede35ab0df23a571c98726a008ca646c",
"sha256": "50384d068e16e9b1c45c591603cbf5cb8e9fc01cb70147a6ada2858c733d60be"
},
"downloads": -1,
"filename": "django-pwa-1.0.5.tar.gz",
"has_sig": false,
"md5_digest": "ede35ab0df23a571c98726a008ca646c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 336959,
"upload_time": "2019-03-07T10:55:27",
"url": "https://files.pythonhosted.org/packages/cb/69/764f85b8df02feaf2c6f52f11ef494fb71ac94e3a0788227521645099b3d/django-pwa-1.0.5.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "bb5c2f9150eaef2bb66473bcab925889",
"sha256": "ef093fda3028bdc99853cdd09844914fc223e64b0a98be4d4da2f44ba72b2761"
},
"downloads": -1,
"filename": "django_pwa-1.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bb5c2f9150eaef2bb66473bcab925889",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 343367,
"upload_time": "2019-03-07T10:55:24",
"url": "https://files.pythonhosted.org/packages/db/fb/f07e4565429a6436da001c2c08fd7a5d3399eb639bcba69ffe8e578004db/django_pwa-1.0.5-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "ede35ab0df23a571c98726a008ca646c",
"sha256": "50384d068e16e9b1c45c591603cbf5cb8e9fc01cb70147a6ada2858c733d60be"
},
"downloads": -1,
"filename": "django-pwa-1.0.5.tar.gz",
"has_sig": false,
"md5_digest": "ede35ab0df23a571c98726a008ca646c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 336959,
"upload_time": "2019-03-07T10:55:27",
"url": "https://files.pythonhosted.org/packages/cb/69/764f85b8df02feaf2c6f52f11ef494fb71ac94e3a0788227521645099b3d/django-pwa-1.0.5.tar.gz"
}
]
}