๐ฏ Why Build for BerryPy?
Active Community
Reach passionate BlackBerry 10 users who are actively using their devices in 2025
Python Powered
Build with Flask, FastAPI, or any Python web framework - it just works
Easy Distribution
Package once, distribute via BerryStore, automatic updates and management
๐ซ What is BerryPy?
BerryPy is a modern web-based application platform for BlackBerry BB10/QNX devices. It provides:
- App Store Interface: Beautiful purple-themed UI for browsing and installing apps
- Process Management: Start, stop, and monitor running applications
- Auto-Start Configuration: Apps can launch automatically on device boot
- Catalog System: Metadata, icons, and descriptions for all apps
- Web-Based: Access at
http://127.0.0.1:8001
๐จ Current Apps on BerryStore
- ๐ค AI-Chat - AI chatbot interface
- ๐ RocketChat - Team communication
- โ๏ธ Telegram - Messaging client
- ๐ฅ๏ธ Webshell - Web-based terminal
- ๐บ YouTube - Video streaming
- ๐ BB10Git - GitHub manager
- ๐ copyclip - Clipboard sync
- โ๏ธ Term49-Settings - Terminal config
โ๏ธ How It Works
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ BlackBerry Browser โ
โ http://127.0.0.1:8001 โ
โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ BerryPy Flask Server โ
โ โข Manage apps โ
โ โข Process control โ
โ โข Download/Install โ
โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ BerryStore (berrystore.sw7ft.com) โ
โ โข Web apps โ ~/apps/ โ
โ โข CLI tools โ ~/usr/local/bin/ โ
โ โข Metadata โ catalog.json โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฆ Web Apps
Python web applications (Flask, FastAPI, etc.)
- Installed to
/accounts/1000/shared/misc/apps/ - Run on their own port
- Managed by BerryPy
- Listed in catalog.json
๐ง CLI Tools
Command-line utilities and binaries
- Installed to
/accounts/1000/shared/misc/bin/ - Available in PATH
- QNX/BB10 compatible
- Listed in bins/catalog.json
๐ Creating Your First App
1Create Your Python App
Build a simple Flask/FastAPI web application:
# app.py
from flask import Flask, render_template
app = Flask(__name__)
PORT = 8100 # Choose a unique port
@app.route('/')
def home():
return render_template('index.html')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=PORT)
๐ก Tip: Make sure to define a PORT variable or use app.run(port=XXXX) so BerryPy can detect it!
2Add Home Screen Icon Support
Make your app look great when added to the BB10 home screen:
<!-- Add to your HTML <head> -->
<link rel="icon" href="https://berrystore.sw7ft.com/apps/app-icons/yourapp.png">
<link rel="apple-touch-icon" href="https://berrystore.sw7ft.com/apps/app-icons/yourapp.png">
<link rel="apple-touch-icon-precomposed" href="https://berrystore.sw7ft.com/apps/app-icons/yourapp.png">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-title" content="Your App">
<meta name="theme-color" content="#9b59b6">
3Create App Icon (48x48px)
Design a 48x48 pixel PNG icon for your app:
- Size: Exactly 48x48 pixels
- Format: PNG with transparency
- Style: Clear, simple design that works at small size
- Naming:
yourapp.png(lowercase, no spaces)
4Package Your App
Create a .zip file with this structure:
YourApp.zip
โโโ app.py # Main Python file
โโโ templates/
โ โโโ index.html # HTML templates
โโโ static/
โ โโโ style.css # Stylesheets
โ โโโ script.js # JavaScript
โโโ requirements.txt # Python dependencies
Command to create:
zip -r YourApp.zip app.py templates/ static/ requirements.txt
5Add to Catalog
Create an entry in catalog.json:
{
"YourApp": {
"name": "Your App Name",
"description": "A brief description of what your app does",
"category": "Productivity", // or Tools, Social, Entertainment, etc.
"version": "1.0.0",
"author": "Your Name",
"icon": "yourapp.png", // Your 48x48 icon filename
"requirements": [ // Optional: Python packages needed
"flask",
"requests"
]
}
}
โ ๏ธ BB10/QNX Compatibility Rules
๐จ CRITICAL: BB10 uses QNX, not Linux!
BlackBerry 10 doesn't have bash or GNU utilities. Using Linux-specific commands will cause your app to fail.
| Rule | โ Wrong (Linux) | โ Correct (QNX) |
|---|---|---|
| Shebang | #!/bin/bash | #!/bin/sh |
| Process Check | ps -p $PID | pidin -p $PID |
| Shell Test | [[ condition ]] | [ condition ] |
| String Compare | == | = |
๐ Full compatibility guide: docs/QNX-COMPATIBILITY.md
โ Testing & Submission
๐งช Testing on BB10
Before submitting, you MUST test on an actual BlackBerry 10 device:
# Copy your app to BB10 device
scp YourApp.zip bb10:/accounts/1000/shared/misc/apps/
# SSH to device
ssh bb10
# Extract and test
cd /accounts/1000/shared/misc/apps/
unzip YourApp.zip -d YourApp
cd YourApp
python3 app.py
# Open browser to http://127.0.0.1:XXXX
Test Checklist:
- App starts without errors
- UI renders correctly in BB10 browser
- Touch interactions work properly
- Port is detected correctly
- No Linux-specific commands used
- Icon displays properly
๐ค Submitting Your App
Ready to publish? Here's how:
-
Fork the BerryPy repository:
github.com/sw7ft/berrypy -
Add your files:
- Place YourApp.zip in
/apps/ - Place yourapp.png in
/apps/app-icons/ - Update
/apps/catalog.json
- Place YourApp.zip in
-
Create a Pull Request with:
- Clear description of your app
- Screenshots (if possible)
- Test results on BB10
- Wait for review - We'll test and merge!
๐ Resources & Documentation
๐ Essential Reading
- ๐ BerryPy GitHub Repository
- ๐ README - Overview
- ๐ Quick Start Guide
- ๐ Architecture Documentation
- ๐ QNX Compatibility Rules
- ๐ Icon System Guide
๐ฌ Community & Support
- ๐ Report Issues
- ๐ Join Discussions
- ๐ BerryCore Platform
- ๐ BerryPy Product Page
๐ Ready to Build?
Join the BlackBerry 10 developer community and help keep BB10 alive!