The Decentralized Repository format is a JSON-based specification for defining app repositories. It allows developers to create collections of applications that can be distributed through the Decentralized App Store ecosystem.
To set up a repository:
repo.json file in your repository rootThe repository JSON must contain the following root-level properties:
Unique identifier for the repository. Should follow reverse domain notation (e.g., "com.company.repo-name").
Human-readable name of the repository displayed to users.
Brief description of the repository and its purpose.
URL to the repository's official website or homepage.
URL to the repository's icon image. Recommended size: 512x512px.
Array of app objects contained in this repository.
Each app object in the apps array must contain the following properties:
| Property | Type | Required | Description |
|---|---|---|---|
id |
string | ✓ | Unique app identifier (reverse domain notation) |
title |
string | ✓ | App display name |
description |
string | ✓ | Detailed app description (supports \n for line breaks) |
shortDescription |
string | ✓ | Brief one-line description for listings |
iconUrl |
string | ✓ | URL to app icon (recommended: 512x512px) |
packageUrl |
string | ✓ | URL to download the app package |
bannerUrl |
string | ○ | URL to app banner image |
version |
string | ✓ | Semantic version string (e.g., "1.0.0") |
versionCode |
number | ✓ | Numeric version code for updates |
keywords |
array | ○ | Array of search keywords |
website |
string | ○ | App's official website |
privacyPolicy |
string | ○ | URL to privacy policy |
permissions |
array | ○ | Array of required permissions |
screenshots |
array | ○ | Array of screenshot URLs |
author |
object/null | ○ | Author information object (can be null) |
type |
number | ✓ | App type identifier (see App Types section) |
The type property defines the application type and determines how it will be handled by the
store:
A packaged web app, which can be downloaded and decompressed on device, with an index to open locally.
Native Android applications packaged as APK files. These apps require Android runtime and have full system access based on declared permissions.
Standard web applications that run in a browser. These apps are accessed through a web URL and don't require installation.
The author object (when not null) should contain:
Author's full name or organization name.
Author's website or portfolio URL.
Author's contact email address.
{
"id": "com.example.myrepo",
"name": "My App Repository",
"description": "A collection of useful applications",
"website": "https://example.com",
"iconUrl": "https://example.com/repo-icon.png",
"apps": [
{
"id": "com.example.myapp",
"title": "My Awesome App",
"description": "This is an amazing application that does great things.\nIt has multiple features and capabilities.",
"shortDescription": "An amazing application",
"iconUrl": "https://example.com/app-icon.png",
"packageUrl": "https://example.com/app.apk",
"bannerUrl": "https://example.com/app-banner.png",
"version": "1.2.3",
"versionCode": 5,
"keywords": ["productivity", "utility", "awesome"],
"website": "https://example.com/myapp",
"privacyPolicy": "https://example.com/privacy",
"permissions": [
"Access to network",
"Access to storage"
],
"screenshots": [
"https://example.com/screenshot1.png",
"https://example.com/screenshot2.png"
],
"author": {
"name": "John Developer",
"website": "https://johndeveloper.com",
"email": "john@example.com"
},
"type": 1
}
]
}
Note: Always validate your repository JSON before publishing to ensure compatibility with the Decentralized App Store.