{"id":13804878,"url":"https://github.com/quavedev/pwa","last_synced_at":"2025-07-27T22:35:14.484Z","repository":{"id":119413696,"uuid":"266116829","full_name":"quavedev/pwa","owner":"quavedev","description":"Meteor package that allows you to configure your PWA","archived":false,"fork":false,"pushed_at":"2020-07-30T03:54:42.000Z","size":5,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-05T18:54:04.486Z","etag":null,"topics":["meteor-package","pwa"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quavedev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-22T13:26:07.000Z","updated_at":"2022-12-13T07:44:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"09c5ffd8-dab1-4515-877e-fad6b7843bac","html_url":"https://github.com/quavedev/pwa","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quavedev%2Fpwa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quavedev%2Fpwa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quavedev%2Fpwa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quavedev%2Fpwa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quavedev","download_url":"https://codeload.github.com/quavedev/pwa/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251569683,"owners_count":21610600,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["meteor-package","pwa"],"created_at":"2024-08-04T01:00:54.954Z","updated_at":"2025-04-29T19:33:06.245Z","avatar_url":"https://github.com/quavedev.png","language":"JavaScript","funding_links":[],"categories":["Offline"],"sub_categories":[],"readme":"# quave:pwa\n\n`quave:pwa` is a Meteor package that allows you to configure your PWA.\n\n## Why\n\nPWA is a very simple way to provide a better experience for your users. Every website should provide a manifest compatible with PWA specifications.\n\nWe believe we are not reinventing the wheel in this package but what we are doing is like putting together the wheels in the vehicle :).\n\n## Installation\n\n```sh\nmeteor add quave:pwa\n```\n\n### Usage\n\nIn your settings\n\n```json\n  \"packages\": {\n    \"quave:pwa\": {\n      \"name\": \"MyApp\",\n      \"appleItunesAppId\": \"1514380385\",\n      \"googlePlayAppId\": \"com.mysite.app\",\n      \"lang\": \"pt-BR\",\n      \"backgroundColor\": \"#6200A8\",\n      \"themeColor\": \"white\"\n    }\n  }\n```\n\nIn your server\n\n```javascript\nimport { Meteor } from 'meteor/meteor';\n\nimport { registerPwaManifestHandler } from 'meteor/quave:pwa';\n\nMeteor.startup(() =\u003e {\n  registerPwaManifestHandler();\n});\n```\n\nIn your `head` tag of your HTML add a link to this manifest:\n```html\n\u003chead\u003e\n  ...\n  \u003clink rel=\"manifest\" href=\"/pwa.json\" /\u003e\n  ...\n\u003c/head\u003e\n```\n\nThat is it, now you can access http://localhost:3000/pwa.json to check your PWA Manifest. Also you can open Chrome DevTools \u003e Application tab \u003e Manifest to check if everything is working correctly.\n\n## Advanced\n\nIf you want to provide configurations in runtime (in case you serve multiple apps from the same backend) you can use\n`createResponderPwaManifest` function. See a full example from a market place that each store can have a native app.\n\n```javascript\nimport { createResponderPwaManifest, MANIFEST_PATH } from 'meteor/quave:pwa';\n\nimport { StoresCollection } from '../../app/stores/data/StoresCollection';\nimport { getNativeStoresInfo } from './native';\nimport { getBaseUrlFromHeaders } from '../mode/modeCommon';\n\nexport const pwaJson = (req, res) =\u003e {\n  const baseUrl = getBaseUrlFromHeaders(req.headers);\n  const store = StoresCollection.findByFullUrl(baseUrl);\n  const nativeStoresInfo = getNativeStoresInfo(store);\n\n  createResponderPwaManifest(nativeStoresInfo)(req, res);\n};\n\nMeteor.startup(() =\u003e {\n    WebApp.connectHandlers.use(\n      MANIFEST_PATH,\n      Meteor.bindEnvironment(pwaJson)\n  );\n});\n```\n\n### License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquavedev%2Fpwa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquavedev%2Fpwa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquavedev%2Fpwa/lists"}