{"id":16492668,"url":"https://github.com/sandoche/surfable-app","last_synced_at":"2025-03-21T07:31:47.599Z","repository":{"id":41534301,"uuid":"282714092","full_name":"sandoche/Surfable-app","owner":"sandoche","description":"Install any website as an app for instant access 🖥️","archived":false,"fork":false,"pushed_at":"2023-06-25T09:42:05.000Z","size":159456,"stargazers_count":66,"open_issues_count":3,"forks_count":17,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-17T22:42:13.526Z","etag":null,"topics":["desktop-app","installable","installable-website","pwa","service-worker","surfable"],"latest_commit_sha":null,"homepage":"https://surfable.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sandoche.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.buymeacoffee.com/surfable"]}},"created_at":"2020-07-26T18:57:48.000Z","updated_at":"2025-03-08T00:32:30.000Z","dependencies_parsed_at":"2022-09-01T13:50:51.994Z","dependency_job_id":null,"html_url":"https://github.com/sandoche/Surfable-app","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandoche%2FSurfable-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandoche%2FSurfable-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandoche%2FSurfable-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandoche%2FSurfable-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sandoche","download_url":"https://codeload.github.com/sandoche/Surfable-app/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244758035,"owners_count":20505564,"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":["desktop-app","installable","installable-website","pwa","service-worker","surfable"],"created_at":"2024-10-11T14:06:50.139Z","updated_at":"2025-03-21T07:31:43.841Z","avatar_url":"https://github.com/sandoche.png","language":"JavaScript","funding_links":["https://www.buymeacoffee.com/surfable"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"/src/public/images/icon.png\" width=\"150\"\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003eSurfable\u003c/h1\u003e\n\u003cp\u003e\n  \u003ca href=\"/LICENSE\"\u003e\n    \u003cimg alt=\"License: Apache 2.0\" src=\"https://img.shields.io/badge/License-Apache 2.0-yellow.svg\" target=\"_blank\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://twitter.com/farbodsaraf\"\u003e\n    \u003cimg alt=\"Twitter: farbodsaraf\" src=\"https://img.shields.io/twitter/follow/farbodsaraf.svg?style=social\" target=\"_blank\" /\u003e\n  \u003c/a\u003e\u003ca href=\"https://twitter.com/sandochee\"\u003e\n    \u003cimg alt=\"Twitter: sandochee\" src=\"https://img.shields.io/twitter/follow/sandochee.svg?style=social\" target=\"_blank\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nInstall any website as an app for a quick access 🖥️\n\nSurfable.app is a website to be able to install any website as an application.\nIt is built with `Express.js` and uses `google-play-scraper` package to search in Google Play Store and to get the metadata.\n\n### 👉 [Get started](https://surfable.app)\n\n## 🤔 How it works\n\n- Surfable.app creates a Progressive Web App for each website that redirects to an URL\n- It uses Google Play Store as a source of data by using apps' names, icons and developer website\n- The search also works using Google Play Store data\n- Because it uses the developer website as the URL of the app, some URLs can be wrong, but it can be corrected (see the documentation below)\n- Some links may be missing on the search (you can make a pull request to add them)\n\n## 📖 How to add or update a website\n\nIf you don't know Javascript, just open an [issue](https://github.com/sandoche/Surfable-app/issues) explaining what link you would like to add / edit.\nOtherwise just follow the steps below.\n\n### Update a website\n\nIf you realize that a website redirects to the wrong URL you can correct it by following these steps:\n1. Search for the app name on Surfable.app\n2. Copy the `appId` from the URL for example in `https://surfable.app/pwa/com.sandoche.gitnews/` it would be `com.sandoche.gitnews`\n3. Edit the following file [`src/data/websites.js`](/src/data/websites.js)\n4. Check if the `appId` does not already exist, if it does, edit the object and if it does not exsit, add a new object like below to the array:\n```js\n{\n  title: 'Twitter',\n  appId: 'com.twitter.android',\n  developerWebsite: 'https://twitter.com/',\n  icon: 'https://lh3.googleusercontent.com/wIf3HtczQDjHzHuu7vezhqNs0zXAG85F7VmP7nhsTxO3OHegrVXlqIh_DWBYi86FTIGk',\n},\n```\n5. Note that omitting one of the fields will take the default value from Google Play. You can for example omit the icon field, and the logo will be retrieved from Google Play.\n6. Then just do a pull request\n\n### Add a website that does not exist\n\nIf a website could not be found in Google Play, it needs to be added manually.\n1. Edit the following file [`src/data/websites.js`](/src/data/websites.js)\n2. Check if the URL you would like to add does not exist, if it does edit the object, if it does not exist, add a new object like below to the array:\n```js\n{\n  title: 'Kanbanote',\n  developerWebsite: 'https://www.kanbanote.com/board',\n  icon: 'https://www.kanbanote.com/assets/app/images/icon_512x512.png',\n  appId: 'www.kanbanote.com'\n},\n```\n3. Note that the appId can be anything except the ones that are already used on Google Play, so putting the website address is a safe choice, also the icon should have a size of 512x512\n4. Then just do a pull request\n\n\n## ⚙️ How to use\n\n### Clone\n```\ngit clone git@github.com:sandoche/Surfable-app.git\n```\n\n### Run\n\n#### Install\n\n```sh\nnpm install\n```\n\n#### Usage\n\n```sh\nnpm run start\n```\n\n#### Development\n\n```sh\nnpm run dev\n```\n\n### Deploy to Heroku\nSince this project scraps data from Google Play, the number of queries are limited per server, therefore in case of problem we recommend you to host your own instance of Surfable.\u003cbr\u003e\u003cbr\u003e\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)\n\n### Deploy using Docker\n```sh\ndocker build . -t surfable\ndocker run -p 3000:80 surfable\n```\n\n## Authors\n\n👤 **Sandoche ADITTANE \u0026 Farbod SARAF**\n\n* Twitter: [@farbodsaraf](https://twitter.com/farbodsaraf)\n* Github: [@sandoche](https://github.com/sandoche)\n\n## 🤝 Contributing\n\nContributions, issues and feature requests are welcome!\n\n## ⭐️ Show your support\n\nGive a ⭐️ if this project helped you!\n\n## ☕️ Buy me a coffee \n\nIf you like this project, feel free to donate: https://www.buymeacoffee.com/surfable\n\n## 📝 License\n\nCopyright © 2022 [Sandoche ADITTANE](https://www.sandoche.com) \u0026 [Farbod SARAF](https://farbodsaraf.com/)\u003cbr /\u003e\nThis project is [Apache 2.0](/LICENSE) licensed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandoche%2Fsurfable-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsandoche%2Fsurfable-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandoche%2Fsurfable-app/lists"}