{"id":13506799,"url":"https://github.com/redsolver/skydroid","last_synced_at":"2025-04-06T01:08:35.256Z","repository":{"id":38777678,"uuid":"283838218","full_name":"redsolver/skydroid","owner":"redsolver","description":"A decentralized domain-based App Store for Android.","archived":false,"fork":false,"pushed_at":"2022-03-01T15:00:07.000Z","size":2462,"stargazers_count":400,"open_issues_count":18,"forks_count":20,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-03-30T00:07:08.181Z","etag":null,"topics":["android","app-store","handshake-domains","sia-skynet"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/redsolver.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"redsolver"}},"created_at":"2020-07-30T17:35:42.000Z","updated_at":"2025-03-24T16:47:41.000Z","dependencies_parsed_at":"2022-08-03T09:15:18.598Z","dependency_job_id":null,"html_url":"https://github.com/redsolver/skydroid","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redsolver%2Fskydroid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redsolver%2Fskydroid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redsolver%2Fskydroid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redsolver%2Fskydroid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redsolver","download_url":"https://codeload.github.com/redsolver/skydroid/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247419860,"owners_count":20936012,"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":["android","app-store","handshake-domains","sia-skynet"],"created_at":"2024-08-01T01:00:57.962Z","updated_at":"2025-04-06T01:08:35.237Z","avatar_url":"https://github.com/redsolver.png","language":"Java","funding_links":["https://github.com/sponsors/redsolver"],"categories":["Unsorted:","Apps","Java"],"sub_categories":["Installer \u0026 app stores"],"readme":"\u003cimg align=\"left\" width=\"120\" height=\"120\" src=\"https://github.com/redsolver/skydroid/raw/master/assets/icon/icon.png\" alt=\"App Icon\"\u003e\n\n# SkyDroid • Decentralized App Store\n\n[![Chat on Matrix](https://img.shields.io/matrix/skydroid:matrix.org?style=for-the-badge)](https://matrix.to/#/#skydroid:matrix.org)\n![GPL-3.0 License](https://img.shields.io/github/license/redsolver/skydroid?style=for-the-badge)\n\n[![Help Translate](https://weblate.bubu1.eu/widgets/skydroid/-/skydroid-app/287x66-black.png)](https://weblate.bubu1.eu/engage/skydroid/)\n\n\nSkyDroid is a decentralized domain-based **Android** App Store which offers easy and fast app distribution, discoverability and security through collections, multi-language support, multiple Themes, Search and Filter options, nice error handling and of course a good user experience.\n\nRelated repos are the [F-Droid bridge](https://github.com/redsolver/skydroid-fdroid-bridge) and the [Multi-DoH Server](https://github.com/redsolver/multi-doh-server).\n\nSkyDroid uses native code from https://github.com/Aefyr/SAI (GPL-3.0).\n\n## Screenshots\n\n\u003cp\u003e\n  \u003cimg src=\"https://github.com/redsolver/skydroid/raw/master/screenshots/screen1.jpg\" width=\"250\"\u003e\n  \u003cimg src=\"https://github.com/redsolver/skydroid/raw/master/screenshots/screen2.jpg\" width=\"250\"\u003e\n  \u003cimg src=\"https://github.com/redsolver/skydroid/raw/master/screenshots/screen3.jpg\" width=\"250\"\u003e\n\u003c/p\u003e\n\n## Install + First Steps\n\n1. Visit https://get.skydroid.app on your Android device\n2. Open the downloaded APK file and install it\n3. Open SkyDroid and go to \"Collections\"\n4. Add some recommended Collections\n5. Navigate back to \"Apps\" and enjoy!\n\n## How to publish your own app\n\nSee https://skydroid.dev\n\n## Video Demo\n\nHere's a little demo of the app and how it works: https://youtu.be/MTSrz3Jb778?t=2461\n\n## Why it's important\n\nFair and secure app distribution is currently more important than ever. (see the current news about the Apple App Store and Google Play)\n\nSkyDroid aims to fix this problem on Android by making direct app distribution decentralized, convenient to use, affordable and secure.\n\n## Technical Details\n\n### Apps\n\nEvery app on SkyDroid is offered through a specific domain. [Handshake Domains](https://handshake.org/) are also fully supported to allow full decentralization.\n\nFor example the domain `noteless.redsolver` has a `TXT` record with the following content:\n\n`skydroid-app=1+AADbpx41U1UCRcIhSHvzRAgt8LJYaDlxiLyqHnPj8ckXAA+0a2e07bb2666409ceb6f49072e296d6ca4f2050af098da1cf6d17fd09b49e6cc`\n\nThe `skydroid-app=` part tells SkyDroid, that this Domain/Name contains an App.\n\nThe `1` is the version of this record format.\n\nThe `AADbpx41U1UCRcIhSHvzRAgt8LJYaDlxiLyqHnPj8ckXAA` part is a Skylink (explained in a moment) which points to the metadata file of the app.\n\nThe `0a2e07bb2666409ceb6f49072e296d6ca4f2050af098da1cf6d17fd09b49e6cc` part is a sha256 hash of the metadata file to ensure the integrity.\n\nOk, but what is a Skylink?\n\nA Skylink points to a file on the Sia Skynet. The Sia Skynet is a decentralized CDN and file sharing platform for devs.\n\nIt works like this: There are multiple so-called \"portals\" to the Skynet. (for example https://siasky.net/ or https://www.siacdn.com/, anyone can host one!)\n\nA file which is uploaded to one portal, can be downloaded from any other portal!\n\nThis enables fully decentralized file-sharing, because the uploader can use any portal or even directly upload to Skynet and also the user can choose between any of the portals!\n\nSkylinks **must** be used for the metadata files and **can** be used for the app icon, images and the APK files.\n\nOk, so back to the metadata file!\n\nIf you add `noteless.redsolver` in SkyDroid, the apps checks the TXT records of the name like explained above and then downloads the metadata file.\n\nYou can choose any Skynet portal of your choice in the SkyDroid settings.\n\nThe metadata file is checked against the hash and then the app is shown in the UI.\n\nWhen a SkyDroid user wants to check for updates of all apps, only the `TXT` records need to be checked.\nOnly if a new metadata hash is found, the metadata file is downloaded again and applied.\n\n### Collections\n\nA collection in SkyDroid has two main goals:\n\n- Offer a way to discover apps\n- Offer a decentralized trust-system for apps\n\nA collection metadata file is loaded exactly like an app metadata file from a domain name (for example `redsolver`),\nbut it uses `skydroid-collection=` instead in the `TXT` record.\n\n#### Discover Apps\n\nA collection can be made by anyone.\n\nIt usually contain's multiple curated Domains/Names from SkyDroid apps which the collection author wants to recommend.\n\nFor example, a developer could have a collection of his own apps and some other apps he found and finds nice.\n\nWhen the SkyDroid user adds the collection, every app in it is added as well.\n\nSome collections are \"recommended\" by me in the app to get the user started fast, but any collection can be added easily by simply pressing the \"Add\" button and entering the Domain/Name.\n\n#### Decentralized Trust-System\n\nCollections can also \"verify\" apps they list. That basically means putting the hash of the app metadata to the name.\n\nThis allows security researchers or companies to check the app and mark it as \"secure\".\n\nThis system can also be used for other \"verification\" to for example check if an app is good or not.\n\nThe user can see how many and which collections verified the app in the current state on the \"App Page\".\n\n### Metadata file examples\n\nThe `redsolver` collection metadata file (can be JSON or YAML):\n\n```yaml\ntitle: red's collection\ndescription: This collection contains every app available via SkyDroid that I'm aware of. Some apps are verified.\nicon: sia://PAGUwiKmHy_83Att8NssAMj79PF1V8g5x_B2lKyThFhKig\n\napps:\n  - name: noteless.redsolver\n    verifiedMetadataHashes:\n      [\n        f7922a73001a8838db29aa4eea5bc91244c07b65fd9a2f1bad16b6a491308af4,\n        4bd9b5ad567784b4defa02a892794b28b4acc0b8e32b6c2e996f955280cfed02,\n        f06c6781e7964ab458903594189734216a06f71bc820d2816c3f5347cff72fd5,\n        0a2e07bb2666409ceb6f49072e296d6ca4f2050af098da1cf6d17fd09b49e6cc,\n      ]\n  - name: skydroid.app\n    verifiedMetadataHashes:\n      [bdcbc30b582a078deaea5c6c12f8d265ca22922e5143bb63974e91871de343fe]\n\n```\n\nThe `noteless.redsolver` app metadata file (can be JSON or YAML):\n\n```yaml\ncategories:\n  - Writing\nlicense: MIT\nauthorName: redsolver\nauthorEmail: info@redsolver.net\nsourceCode: https://github.com/redsolver/noteless\nissueTracker: https://github.com/redsolver/noteless/issues\nchangelog: https://github.com/redsolver/noteless/blob/HEAD/CHANGELOG.md\n\nname: Noteless\npackageName: net.redsolver.noteless\n\nicon: https://github.com/redsolver/noteless/raw/master/assets/icon/icon.png\n\nlocalized:\n  en-US:\n    description: |-\n      Features\n\n      * Markdown-optimized editor with syntax highlighting\n      * Supports Github Flavored Markdown, KaTeX and mermaidjs for diagrams\n      * Tags for organizing your notes\n      * Pin, Star and sort your notes by title or different dates\n      * Very themable - dark/light mode and accent color\n      * Full-text search\n      * File Attachments that can be embedded into a note\n      * Multi-Note Editing\n      * Slide actions for easier editing\n      * Tutorial notes which explain how to use the app\n    summary: A markdown note-taking app for mobile devices.\n    whatsNew: \"First release on SkyDroid, yay!\"\n    phoneScreenshotsBaseUrl: https://github.com/redsolver/noteless/raw/master/screenshots/\n    phoneScreenshots:\n      - screen1.png\n      - screen2.png\n      - screen3.png\n      - screen4.png\n      - screen5.png\n      - screen6.png\n      - screen7.png\n      - screen8.png\n      - screen9.png\n      - screen10.png\n      - screen11.png\n      - screen12.png\n\nbuilds:\n  - versionName: 0.3.2\n    versionCode: 32\n    sha256: 0a5d15f00554e982e37ed9bdda41d17304e8f056913a8d0921a11d81844578e9\n    apkLink: sia://AADTpnQ7qv4aFsJYTJECT8e8428kGgLmwLUWgqdycvquFg\n  - versionName: 1.0.0\n    versionCode: 100\n    sha256: d56dccb20c45e84089560a8d7611eeb9a55a15647fa06aee822364f39c753a69\n    apkLink: sia://AABBdXkn8Ogia55qK2vvYLRecYY2U-sKyTx0SoD8c6DOKQ\n\ncurrentVersionName: 1.0.0\ncurrentVersionCode: 100\n\nadded: 1596499200000\nlastUpdated: 1596737665000\n```\n\nThe screenshots and app icon can also be hosted on the Sia Skynet. (Just use `sia://` instead of `https://`, it gets automatically replaced with the selected Skynet Portal)\n\n## How to publish your own app (manual method)\n\n- Copy the contents of `minimal-app-template.yaml` to a new YAML file on your computer\n- Edit all values to match your app\n  - You can upload your APK file and media files to https://siasky.net or just use a normal https link if they are already hosted on GitHub for example\n- Get the hash of the metadata file by running `sha256sum your-app-file.yaml` in your terminal or using a sha256 website like [this one](https://emn178.github.io/online-tools/sha256.html)\n- Upload your YAML file to https://siasky.net\n\nBuild a TXT Record like this:\n\n`skydroid-app=1+YOUR_SKYLINK_FROM_SKYNET+YOUR_SHA256_HASH`\n\nExample: `skydroid-app=1+AADbpx41U1UCRcIhSHvzRAgt8LJYaDlxiLyqHnPj8ckXAA+0a2e07bb2666409ceb6f49072e296d6ca4f2050af098da1cf6d17fd09b49e6cc`\n\n- Add this TXT Record to a domain/name of your choice. (You can use a normal or a Handshake domain)\n- Add you domain/name in the SkyDroid app with the \"Plus\"-button in the bottom right\n\n## About\n\nThis app was initially developed as a submission to the [‘Own The Internet’ Hackathon](https://gitcoin.co/hackathon/own-the-internet).\n\n## Planned features\n\n- QR-Code Sharing of Apps\n- Some sort of decentralized Rating System (maybe via Mastodon)\n- Maybe use [Shizuku service](https://github.com/RikkaApps/Shizuku) like https://github.com/Aefyr/SAI to enable automatic background updates (if verified).\n \nOh, and the app is written in Flutter - making the SkyDroid App Store available on Windows, macOS or Linux is possible.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredsolver%2Fskydroid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredsolver%2Fskydroid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredsolver%2Fskydroid/lists"}