DEV Community

Cover image for PhilBuilder vs voltbuilder
Henock Agbo
Henock Agbo

Posted on

PhilBuilder vs voltbuilder

The problem

Every time I needed to hand someone a quick installable build — a client, a tester, myself on a different machine — I had to either keep a full local toolchain ready (Android Studio, Flutter SDK, Visual Studio...) or spend 20 minutes reinstalling one just for a single build.

So I built PhilBuilder: upload a zipped source project, pick a platform, get back an installable app. No local setup required.

🔗 Try it: https://philbuilder.netlify.app

What it does

You upload a .zip of your project. The tool:

  1. Auto-detects the project type (React, Vue, Flutter, React Native, Kotlin, .NET MAUI, Python, Go, Godot, and 14 others — 22 combinations total)
  2. Builds it on remote CI
  3. Gives you a download link for an APK, AAB, or Windows .exe

No account needed for occasional use (3 builds/day). A free account bumps that to 10/day.

How it's built

The stack is intentionally simple:

  • Frontend: a single static HTML file, no framework, no build step
  • Backend: a Cloudflare Worker handling auth, rate limiting, and dispatching builds
  • Build execution: GitHub Actions — one big workflow with per-language jobs (Cordova for web frameworks, Capacitor for modern web, native Gradle for Kotlin/Java, dotnet publish for MAUI, flutter build for Flutter, briefcase for Python, gomobile for Go, etc.)
  • Storage: Cloudflare R2 for source zips and build artifacts

The auto-detection logic walks the extracted zip looking for telltale files — pubspec.yaml → Flutter, *.csproj → .NET MAUI, capacitor.config.* or a @capacitor/core dependency → Capacitor, build.gradle without package.json → native Kotlin/Java, and so on — with fallbacks down to plain HTML.

Some technical details

Signing: for Android release builds, it can auto-generate a keystore (and let you download it afterward — losing it means you can never update your app on Play Store again, so this is clearly flagged) or accept an uploaded one.

Windows builds: this is the newest addition. Flutter and .NET MAUI need windows-latest runners; Go cross-compiles from Linux with GOOS=windows. Still beta and unsigned, so SmartScreen shows a warning on install — that part is expected, not a bug.

Rate limiting: layered — global cap, per-IP hourly limit, burst limit, per-email limit — plus a honeypot field and a timestamp check against instant bot submissions. Cloudflare Turnstile handles the rest.

What's next

Thinking about adding Next.js/Nuxt support, and eventually an Electron export for Linux desktop builds.

This is a solo project, still rough around the edges in places. If you try it and hit a wall — wrong project detection, a build failing for a framework I haven't tested enough — I'd genuinely like to know. Happy to dig into logs together in the comments.

Top comments (0)