Skip to main content

Bundle HTML/CSS/JS into an Android WebView app

Project description

Construction-cat-with-helmet-close-up.png

🍬 Bomboneka (bomk)

Bundle your HTML, CSS, and JS into a native Android WebView app — with a single command.



Why?

Converting a website into an Android app is genuinely painful. Bonboneka makes it a one-liner. No Android Studio, no boilerplate — just your web files and one command.


Features

  • Automatic inlining — External CSS and JS are merged into a single self-contained HTML file
  • Asset encoding — Images are automatically converted to Base64 data URIs
  • Multi-bundle support — Define multiple entry points using either naming convention
  • PWA mode — Wrap any PWA URL into an installable Android APK via Capacitor
  • Web UI — A local web interface for building and managing your projects (its out, not soon, now :D )

Requirements

| Requirement | Notes | | Python 3.10+ | Well, for installing the tool and running it. | | Git | Required for template cloning | | Android SDK | Required for APK compilation | | Java JDK | Required for Gradle(building) | | Capacitor | Required for PWA mode |


Installation

Recommended — install from your platform's instalation script

chmod +x ./install.sh #For macOS and Linux
./install.bat #Windows

Alternative — install from source or from PiPy:(same on both platforms

pip install -e . (inside the directory)
pip install bonboneka

Usage

bomk create <path/to/folder> [options]
Option Description
-s, /s Silent mode — suppress all output
--verbose, /verbose Verbose mode — shows Gradle build logs
--ultra-verbose Ultra verbose mode, will be removed soon(its useless)
-o <dir> Output directory for the generated APK
--icon <path> Custom launcher icon (PNG / JPG / WebP)
--name <name> Override the app name shown on the launcher
--config <path> Path to a .bombundlefig file (Flow protocol)
--nobuild Skip APK build — output the prepared template instead

Naming Protocols

Bonboneka supports two protocols for declaring which files belong together.

StatiX

Statix build in terminal

The original protocol. Group membership is declared in the filename using a _$N tag.

my_app/
├── index_$1.html          ← Entry point (Group 1)
├── styles_$1.css
├── script_$1.js
├── start_$2.html          ← Secondary page (Group 2)
├── styleofstart_$2.css
└── backend_$2.js
bomk create ./my_app

Flow

Flow build in terminal

The modern protocol. Files have plain names. Group membership is declared in a .bombundlefig config file, and the entry-point HTML identifies itself with a <div class="id1"></div> marker.

my_app/
├── index.html             ← Entry point (Group 1) — contains <div class="id1">
├── styles.css
├── script.js
├── start.html             ← Secondary page (Group 2) — contains <div class="id2">
├── styleofstart.css
├── backend.js
└── .bombundlefig

.bombundlefig:

{
  "groups": {
    "1": ["index.html", "styles.css", "script.js"],
    "2": ["start.html", "styleofstart.css", "backend.js"]
  }
}
bomk create ./my_app
# or, if the config is stored elsewhere:
bomk create ./my_app --config ./path/to/.bombundlefig

Note: Group 1 is always treated as the app's primary entry point, regardless of protocol.


PWA Mode

Wrap any PWA URL into an installable Android APK using Capacitor.

⚠️ --encased mode has been removed as of version 2.0.

bomk create --pwa <url>
bomk create --pwa https://example.com --name "My App" --package com.example.app

PWA mode uses Capacitor, not B0MK Core. Requires Node.js 14+ and the Capacitor CLI.


NEW - WEBUI(3.0 revolution)

webui screnshod

Due to the command line being verry 👻spookey doopey gloopey👻 so I thought "Why don't make an UI". And since WinUI is not crossplatform, I thought "WHY NOT AN WEB UI??". It is cross-platform(excepting for my homies on MS-DOS and UNIX and like IBM OS/2). It looks....fine. Ig its good. The screenshot speaks for itself. I don't need to say anything. lmaoooo.

Start it with python webUI.py

bomk doctor

Validate a Bonboneka project and diagnose common issues. Note: Doctor has not been ported to the Flow protocol yet and only supports StatiX projects. I(not we,I am an single person working on this) am trying to port it asap.

bomk doctor <path/to/project>

Checks for:

  • Missing or misnamed files
  • Incorrect protocol usage
  • Missing entry-point markers (_$1 or <div class="id1">)

Gitlink (beta)

Link your template to a GitHub repository and configure auto-commit behaviour.

bomk gitlink <template> --set <url>                        # Set remote origin
bomk gitlink <template> --behaviour commit-per-build       # Auto-commit on every build
bomk gitlink <template> --behaviour manual-commit          # Commit manually
bomk gitlink <template> --commit                           # Commit pending changes
bomk gitlink <template> --push                             # Push to remote
bomk gitlink <template> --disengage                        # Reset to default origin

⚠️ Gitlink is in beta and has not undergone rigorous testing.


Configuration

Edit bomk/config.py to customise the build environment:

# Android project scaffold repository
TEMPLATE_REPO   = "https://github.com/YourUser/Example-Android-WV-App.git"

# Relative paths within the template
ASSETS_REL_PATH    = "app/src/main/assets"
MAIN_JAVA_REL_PATH = "app/src/main/java/exampleWV/app/Main.java"

Version

3.0 "Gloopy Oopy Cat Factory" — Flow protocol, PWA mode, --name, --config, Gitlink beta.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bomk-0.3.1-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file bomk-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: bomk-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 26.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for bomk-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a1efafc344281a6e2edcbea103a0550201c4394107ffdbce095eedc00c4fef9d
MD5 dae5c31678118bb0d38b083464b67361
BLAKE2b-256 86cbcefaef573302f3098f0ad5e621eae1b4ede26cd722fe127b099ec972e554

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page