Skip to content

Repository files navigation

        ██████╗ ██████╗ ██████╗ ██████╗
        ╚════██╗╚════██╗╚════██╗╚════██╗
██    ██ █████╔╝ █████╝ █████╔╝ █████╔╝
 ██  ██  ╚═══██╗ ██═══╝ ██╔═══╝ ██╔═══╝
   ████  ██████╔╝███████╗███████╗███████╗
        ╚═════╝ ╚══════╝══════╝╚══════╝

Experimental Android-first Lynx app generator powered by Sparkling.

The first MVP deliberately covers Android only. It creates one project that supports live Lynx development, a native Android debug app, release APKs, and Android App Bundles.

Create a project

Requires Node.js 22.18+ or Node.js 24. Node.js 25 is not supported by the Sparkling template. Bun, npm, pnpm, and Yarn are detected automatically.

bunx v3222@latest my-app

Or with npm:

npx v3222@latest my-app

Running npm i v3222 only installs the package; npm does not execute generators during installation. Run an installed copy with npx v3222, or use npx v3222@latest without installing it first.

When no project name is passed, the interactive flow asks for it. It also lets you confirm or edit the Android application ID. The generator never initializes Git or creates a commit.

For automation:

npx v3222 my-app --package-id com.example.myapp

Project generation only creates the files and installs JavaScript dependencies. It does not invoke Gradle, install an Android app, or generate an APK/AAB.

Generated projects include editable artwork under assets/ for the Android icon, native splash screen, and the first Lynx screen. Android commands synchronize the branding artwork into native resources before building. These assets belong to v3222; they are not copied from Sparkling's default icon.

Generated commands

bun run doctor
bun run dev
bun run run:android
bun run build:android
  • dev starts the Rspeedy/Lynx preview with HMR and reports TypeScript errors during compilation.
  • run:android requires one authorized ADB device, builds and installs the debug app, configures and verifies USB port forwarding after installation, then force-relaunches the app against the development bundle. If the server or tunnel disappears, it safely falls back to the packaged bundle instead of leaving the app on Lynx error 10203.
  • build:android explicitly generates a release APK and AAB.
  • doctor checks Android tooling only.

Release signing is optional during development. The generated project includes a safe, gitignored android/keystore.properties workflow for Play Store uploads.

Current foundation

This experiment pins Sparkling 2.1.0-rc.33 because the stable 2.0.1 CLI does not include the required dev command. The generated Android project targets API 35 and upgrades the official native shell to Android Gradle Plugin 8.10.1 with Kotlin 2.2. It intentionally preserves Fresco 2.3.0 because Lynx 3.7's image service is binary-incompatible with Fresco 3.x. Release artifacts target ARM devices, while debug builds retain emulator ABI support.

The package does not need a create-<name> name while it is invoked with npx or bunx.

Package development

bun install
bun run check

📄 License

MIT © Gohit X — see LICENSE. Generated projects preserve Sparkling's Apache-2.0 license notice separately.



Built with Bun, TypeScript, and Lynx.

Website · GitHub · npm

Releases

Packages

Contributors

Languages