This guide will walk you through the process of publishing your app or theme to the Bruce App Store repository.
Before you can publish an app or theme, you'll need:
- A GitHub repository containing your app's source code
- Your app/theme files ready and tested
- A logo for your app/theme (PNG format - square - between 64px and 512px)
- Basic knowledge of Git and GitHub
- App/Theme file layout
- Apps (and files) will be created on the device in the
/BruceJS/<category>/directory - use__dirpathto reference the folder the script is being ran from if your app needs access to other files - Themes these will be created on the device in the
/BruceThemes/<theme name>folder
- Apps (and files) will be created on the device in the
Apps/themes in the Bruce App Store are organized as follows:
repositories/
βββ [your-github-username]/
βββ [your-repository-name]/
βββ [Your App/Theme Name]/
βββ metadata.json
βββ logo.png- Fork the App-Store-Data repository
- Clone your forked repository to your local machine
- Create a new branch for your app submission
Navigate to the repositories folder and create the following structure:
repositories/[your-github-username]/[your-repository-name]/[Your App/Theme Name]/For example:
repositories/johndoe/my-awesome-apps/WiFi Scanner/The metadata.json file contains all the essential information about your app/theme. Create this file in your app/theme directory with the following structure:
{
"name": "Your App/Theme Name",
"description": "A brief description of what your app/theme does",
"category": "Tools",
"version": "1.0.0",
"commit": "40-character-sha-hash-from-your-repository",
"owner": "your-github-username",
"repo": "your-repository-name",
"path": "/path/to/files/in/your/repo/",
"files": [
"file1.js",
{
"source": "file2.js",
"destination": "file-two.js"
}
]
}| Field | Type | Description | Example |
|---|---|---|---|
name |
String | Display name of your app/theme | "WiFi Scanner" |
description |
String | Brief description of functionality | "Scans for available WiFi networks" |
category |
String | App/theme category (see valid categories below) | "WiFi" |
version |
String | Semantic version (X.Y.Z format) | "1.0.0" |
commit |
String | Exact 40-character SHA hash from your repo | "a1b2c3d4e5f6..." |
owner |
String | Your GitHub username | "johndoe" |
repo |
String | Your repository name | "my-awesome-apps" |
path |
String | Path to files in your repository | "/" or "/apps/" |
files |
Array | List of files to include | See Files Array section below for details |
Your app must use one of these categories, if submitting a theme please use the Theme category:
AudioBluetoothGamesGPIOInfraredMediaRFIDRFThemes- Only for themesToolsUSBUtilitiesWiFi
The files array can contain:
-
Simple file paths (strings):
"files": [ "my-app.js", "config.txt" ]
-
File mapping objects (for renaming during installation):
"files": [ { "source": "my_long_filename.js", "destination": "app.js" } ]
-
Mixed array of both types:
"files": [ "readme.txt", { "source": "main_application.js", "destination": "app.js" } ]
Your app/theme needs a logo file named exactly logo.png:
- Format: PNG only
- Dimensions: Between 64x64 and 512x512 pixels (must be square)
- Transparency: Supported
- Filename: Must be exactly
logo.png(lowercase)
Before your app/theme is approved, it will be automatically validated for:
- β
metadata.jsonexists and is valid JSON - β
logo.pngexists and is a valid PNG file (64x64 to 512x512, square) - β All required metadata fields are present and non-empty
- β Version follows semantic versioning (X.Y.Z)
- β Version is higher than any existing version (for updates)
- β Commit hash is updated when version changes
- β
Folder structure matches
repositories/owner/repo/format - β Commit hash exists in the specified repository
- β
All files in the
filesarray exist at the specified commit - β Category is from the valid categories list
- Ensure your app/theme is pushed to your GitHub repository
- Note the exact commit hash of the version you want to publish
- Create your app/theme directory in the App Store repository
- Add your
metadata.jsonandlogo.pngfiles
- Commit your changes to your branch
- Push the branch to your forked repository
- Create a Pull Request against the main App Store repository
- Fill out the PR description with details about your app/theme
Once you submit your PR:
- Automated checks will run to validate your submission
- Validation results will be posted as a comment on your PR
- Labels will be applied based on validation status:
- π’
review required- Ready for manual review - π΄
missing metadata.json- metadata.json file missing - π΄
invalid metadata.json- metadata.json has errors - π΄
missing logo.png- logo.png file missing - π΅
external contribution- Submitted by external contributor
- π’
If validation passes:
- A maintainer will review your app/theme for quality and security
- They may request changes or ask questions
- Once approved, your app/theme will be merged and available in the store
To update an existing app/theme:
- Update your source code in your GitHub repository
- Get the new commit hash from the relevant commit
- Increment the version number in metadata.json (must be higher)
- Update the commit hash in metadata.json
- Submit a new Pull Request with the changes
Here's a complete example for a WiFi scanner app:
Folder structure:
repositories/johndoe/bruce-tools/WiFi Scanner/
βββ metadata.json
βββ logo.pngmetadata.json:
{
"name": "WiFi Scanner",
"description": "Comprehensive WiFi network scanner with signal strength display",
"category": "WiFi",
"version": "1.2.0",
"commit": "a1b2c3d4e5f6789012345678901234567890abcd",
"owner": "johndoe",
"repo": "bruce-tools",
"path": "/wifi-apps/",
"files": [
{
"source": "wifi_scanner_main.js",
"destination": "scanner.js"
},
"config.json"
]
}| Error | Cause | Solution |
|---|---|---|
| "Missing required field" | Required field is empty or missing | Add all required fields to metadata.json |
| "Version must be in format X.Y.Z" | Invalid version format | Use semantic versioning (e.g., "1.0.0") |
| "Commit must be a valid 40-character SHA hash" | Wrong commit format | Use full 40-character commit hash |
| "Category is not in valid list" | Invalid category | Use one of the valid categories listed above |
| "Folder structure invalid" | Wrong directory structure | Place app/theme in repositories/owner/repo/AppName/ |
| "File not found at commit" | File doesn't exist in repository | Ensure all files in files array exist at the commit |
| "Version must be incremented" | Version not updated for existing app/theme | Increase version number for updates |
- Test thoroughly - Make sure your app/theme works before submitting
- Clear descriptions - Write helpful descriptions for users
- Follow naming conventions - Use clear, descriptive names
- Update documentation - Include any necessary setup instructions in your repository
- Respond promptly - Address review feedback quickly
- Version consistently - Always increment version numbers for changes
If you encounter issues:
- Check validation output - The automated validation provides detailed error messages
- Review this guide - Ensure you've followed all requirements
- Check existing apps - Look at successful submissions for examples
- Open an issue - For questions about the process or technical issues
Ready to publish? Follow the steps above and submit your Pull Request! π