mirror of
https://github.com/niels-emmer/pwa-maker-android.git
synced 2026-09-13 23:53:33 +02:00
-
v0.0.1-alpha — Initial release Pre-release
released this
2026-02-26 14:15:33 +01:00 | 34 commits to main since this release📅 Originally published on GitHub: Thu, 26 Feb 2026 13:16:27 GMT
🏷️ Git tag created: Thu, 26 Feb 2026 13:15:33 GMTPWA Maker Android — v0.0.1-alpha
First public release. Self-hosted, Dockerised web app that turns any HTTPS Progressive Web App into a signed Android APK ready to sideload — no Android Studio, no Play Store.
What's included
Core build pipeline
- Accepts any HTTPS PWA URL and fetches the web manifest automatically
- Generates a Trusted Web Activity (TWA) Android project via
@bubblewrap/core - Builds with Gradle + Android SDK 34 (target API 34, min API 21 / Android 5.0)
- Auto-generates a per-build signing keystore (RSA-2048); sideload-only
UI
- Dark-themed, mobile-first React + Tailwind frontend
- Manifest fields auto-filled from URL; all fields remain editable
- Real-time build log streamed via Server-Sent Events
- Download signed APK directly from the browser when the build completes
Deployment
- Single
docker-compose up -d --buildto deploy - Backend image: Node 20 + JDK 17 + Android SDK 34 (~1.5 GB, built on-demand)
- Gradle dependency cache as Docker named volume (fast subsequent builds: ~30s)
- Designed for a VPS behind an SSL-terminating reverse proxy
Security
- Non-root container (
appuserUID 1001) - Zod input validation; all subprocess calls use array args (no shell injection)
- Rate limiting: 3 concurrent builds, 10 builds/hr/IP
- No built-in auth — protect at reverse proxy level (see SECURITY.md)
Tests
- 83 passing: 46 backend (Vitest) + 37 frontend (Vitest + React Testing Library)
Known limitations / alpha caveats
- Each build generates a new signing key. Re-installing a new build requires uninstalling the old APK first (Android enforces signing consistency for upgrades). This is by design for sideload-only use.
- First APK build after a fresh container start takes 2–5 minutes while Gradle downloads dependencies. Subsequent builds use the cached volume (~30s).
- The backend Docker image is ~1.5 GB. Ensure your VPS has sufficient disk space (recommend ≥ 5 GB free).
- No built-in authentication — do not expose to the public internet without a reverse proxy auth layer.
- macOS app generation is not included (simplest functional route was chosen).
Quick start
git clone https://github.com/niels-emmer/pwa-maker-android.git cd pwa-maker-android cp .env.example .env docker-compose up -d --buildThen point your SSL reverse proxy at port 80.
Feedback
This is an alpha release. Open an issue for bugs, unexpected behaviour, or feature requests.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads