Decentralized Repository Format Documentation

Table of Contents

Overview

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.

Repository Setup

To set up a repository:

  1. Create a repo.json file in your repository root
  2. Define the repository metadata and apps array
  3. Host the file on a publicly accessible web server
  4. Ensure proper CORS headers are set for cross-origin requests
  5. Validate your JSON structure before publishing

Root Properties

The repository JSON must contain the following root-level properties:

id string (required)

Unique identifier for the repository. Should follow reverse domain notation (e.g., "com.company.repo-name").

name string (required)

Human-readable name of the repository displayed to users.

description string (required)

Brief description of the repository and its purpose.

website string (optional)

URL to the repository's official website or homepage.

iconUrl string (optional)

URL to the repository's icon image. Recommended size: 512x512px.

apps array (required)

Array of app objects contained in this repository.

App Properties

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)

App Types Specification

The type property defines the application type and determines how it will be handled by the store:

0 - Installable Web Application

A packaged web app, which can be downloaded and decompressed on device, with an index to open locally.

1 - Android App (APK)

Native Android applications packaged as APK files. These apps require Android runtime and have full system access based on declared permissions.

2 - Web App

Standard web applications that run in a browser. These apps are accessed through a web URL and don't require installation.

Author Object

The author object (when not null) should contain:

name string (required if author object exists)

Author's full name or organization name.

website string (optional)

Author's website or portfolio URL.

email string (optional)

Author's contact email address.

Complete Example

{
    "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
        }
    ]
}
        

Validation Rules

Note: Always validate your repository JSON before publishing to ensure compatibility with the Decentralized App Store.