Package Format

Learn how to structure and package your BooApp for submission.

Zip Structure

A BooApp package is a zip file containing all your app files. The structure must follow this layout:

my-booapp.zip
text
my-booapp.zip
├── booapp.json          # Manifest (required)
├── index.html           # Entry point (required)
├── assets/
│   ├── icon.png         # 512×512 app icon (required)
│   ├── screenshot-1.png # At least 1 screenshot (required)
│   ├── styles.css
│   └── app.js
└── vendor/
    └── booapp-sdk.min.js  # Optional, can use CDN

Requirements

  • Maximum zip size: 10MB
  • booapp.json must be at the root of the zip
  • Entry point HTML file must exist at the path specified in main
  • Icon must be at least 512×512 pixels
  • No executable files (.exe, .bat, .sh, etc.)

Manifest (booapp.json)

The manifest file describes your BooApp and its configuration. All paths are relative to the zip root.

booapp.json Example

booapp.json
json
{
  "name": "My Pet Tracker",
  "slug": "my-pet-tracker",
  "version": "1.0.0",
  "description": "Track your pet's daily activities",
  "author": {
    "name": "Developer Name",
    "email": "dev@example.com"
  },
  "main": "index.html",
  "icon": "assets/icon.png",
  "category": "health",
  "permissions": ["auth", "pet_info", "camera", "location"],
  "minBridgeVersion": 1,
  "display": {
    "orientation": "portrait",
    "backgroundColor": "#FFFFFF",
    "fullscreen": false
  },
  "navigation": {
    "showBackButton": true,
    "title": "My Pet Tracker"
  },
  "privacy": {
    "dataCollection": ["user_profile", "pet_data"],
    "privacyPolicyUrl": "https://example.com/privacy"
  }
}

Required Fields

ParameterTypeRequiredDescription
namestringYesDisplay name of your BooApp (2-30 characters)
slugstringYesURL-safe unique identifier (lowercase, hyphens only)
versionstringYesSemantic version (e.g. "1.0.0")
descriptionstringYesShort description (max 120 characters)
mainstringYesPath to the entry HTML file (default: "index.html")
iconstringYesPath to the app icon (512×512 PNG)
categorystringYesApp category (health, social, tools, etc.)
permissionsstring[]YesRequired permission groups
minBridgeVersionnumberYesMinimum bridge protocol version (current: 1)

Optional Fields

ParameterTypeRequiredDescription
author{ name, email }NoDeveloper contact info
displayDisplayConfigNoDisplay settings (orientation, background, fullscreen)
navigationNavConfigNoNavigation bar settings (title, back button, colors)
privacyPrivacyConfigNoPrivacy declarations (data collection, policy URL)

Display Configuration

json
{
  "display": {
    "orientation": "portrait",     // "portrait" | "landscape" | "any"
    "backgroundColor": "#FFFFFF",  // Background color while loading
    "fullscreen": false,           // Hide status bar
    "statusBarStyle": "dark"       // "light" | "dark" | "auto"
  }
}

Navigation Configuration

json
{
  "navigation": {
    "showBackButton": true,        // Show back arrow
    "showTitle": true,             // Show title in nav bar
    "title": "My Pet Tracker",    // Title text
    "titleColor": "#000000",       // Title text color
    "backgroundColor": "#FFFFFF"   // Nav bar background
  }
}

Privacy Declaration

json
{
  "privacy": {
    "dataCollection": ["user_profile", "pet_data", "location"],
    "dataSharing": [],
    "dataRetention": "30 days",
    "privacyPolicyUrl": "https://example.com/privacy",
    "termsOfServiceUrl": "https://example.com/terms"
  }
}

Validation Checklist

  • booapp.json at zip root
  • name: 2-30 characters
  • slug: lowercase, hyphens only
  • version: semantic (x.y.z)
  • description: max 120 characters
  • icon: 512×512 PNG minimum
  • category: valid category ID
  • permissions: all valid IDs
  • Entry HTML file exists at "main" path
  • Max zip size: 10MB
  • No executable files (.exe, .bat, .sh)
  • At least 1 screenshot included

Best Practice

Always declare what data your BooApp collects, even if it's minimal. Transparency builds trust with users and speeds up the review process.