Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Turn your Vibe Coding ideas into runnable Android Apps instantly

Notifications You must be signed in to change notification settings

DeadWaveWave/demo2apk

Repository files navigation

Demo2APK

Demo2APK πŸš€

License Stars Version

δΈ­ζ–‡ζ–‡ζ‘£

Turn your Vibe Coding ideas into runnable Android Apps instantly.

Demo2APK is a one-click packaging tool built for Vibe Coding users. Whether you have a brilliant demo or a complete project generated by AI (Gemini, ChatGPT, DeepSeek, etc.), just upload your files, and we'll generate an installable APK for you immediately. No complex Android development environment setup requiredβ€”keep your creativity at your fingertips.

Please don't accept APK files from others, as they may contain security risks!

🌐 Free Public Service

We provide a free public instance for everyone:

πŸ‘‰ https://demo2apk.lasuo.ai

  • 5 builds per IP per hour
  • No registration required
  • Fully functional, same as self-hosted

Hope this helps! If you find it useful, please ⭐ star this repo!

✨ Core Features

  • 🎨 Web Interface: Immersive "Dark Engineering Blueprint" style UI for managing builds.
  • ✏️ Customization: Support setting custom App Name, App Version (e.g., 1.0.0), and App Icon during upload.
  • πŸ” Android Permissions: Customize Android permissions via UI - select exactly which permissions your app needs (defaults to INTERNET only).
  • πŸ“± PWA Support: Optionally generate an installable Progressive Web App alongside your APK for web deployment.
  • πŸ“‹ Build History: Automatically saves recent builds and supports session restoration after page refresh.
  • 🧠 Intelligent Detection: Automatically detects file types (HTML/React/ZIP) and chooses the optimal build strategy.
  • ⏳ Smart Queuing: Handles concurrent builds with a real-time queue system and progress feedback.
  • πŸ”— Easy Sharing: Generate shareable download links instantly after build completion.
  • ⚑️ Blazing Fast: Optimized cloud pipeline delivering APKs in minutes.
  • 🌐 Flexible Modes:
    • Single File Mode: Supports .html, .js, .jsx, .ts, .tsx (auto-detects React components).
    • Paste Code Mode: Paste code directly, intelligent recognition of HTML/React/JS content.
    • ZIP Archive Mode: Supports standard React/Vite projects (npm build) and Multi-file HTML projects (no build required).
  • 🧠 Smart Offline: Automatically handles CDN resources and JSX compilation to ensure your App runs smoothly offline.
  • πŸ›‘οΈ Rate Limiting: Smart resource allocation (configurable for dev mode).
  • 🧹 Auto Cleanup: Build artifacts are automatically deleted after 2 hours to protect privacy and save space.

⚠️ React Projects: Avoiding Blank Screens

Important: If your React/Vite APK shows a white/blank screen, you need to add the legacy plugin for Android WebView compatibility.

npm install -D @vitejs/plugin-legacy terser
// vite.config.js
import legacy from '@vitejs/plugin-legacy'

export default defineConfig({
  plugins: [
    react(),
    legacy({ targets: ['chrome >= 52', 'android >= 5'] })
  ],
  base: './'  // Required for APK!
})

πŸ“– Full Guide: React Project Requirements - Detailed troubleshooting for blank screen issues.

πŸš€ Quick Start

Option 1: Docker Deployment (Linux Server)

Deploy to your Linux server in 3 minutes using pre-built Docker images.

⚠️ Docker images only support linux/amd64. For macOS, use Local Development.

# 1. Create deployment directory
mkdir -p ~/demo2apk && cd ~/demo2apk

# 2. Download deployment config
curl -O https://raw.githubusercontent.com/DeadWaveWave/demo2apk/main/docker-compose.deploy.yml

# 3. (Optional) Configure environment variables
curl -O https://raw.githubusercontent.com/DeadWaveWave/demo2apk/main/.env.deploy.example
mv .env.deploy.example .env
# Edit .env to customize settings (rate limits, PWA, resource limits, etc.)

# 4. Start services
docker compose -f docker-compose.deploy.yml up -d

Visit http://127.0.0.1:5173 to use the Web UI.

Update to latest version:

docker compose -f docker-compose.deploy.yml pull && docker compose -f docker-compose.deploy.yml up -d

Option 2: Local Development (macOS / Linux)

For macOS users or local development:

# 1. Install dependencies
pnpm install

# 2. Start Redis
docker run -d -p 6379:6379 redis:alpine

# 3. Build project
pnpm build

# 4. Start all services (in separate terminals)
pnpm dev        # API Server (port 3000)
pnpm worker     # Build Worker
pnpm frontend   # Web UI (port 5173)

Visit http://localhost:5173 to use the Web UI.

Option 2: API Usage

If you prefer CLI or script integration, use our REST API.

Single HTML File:

curl -X POST http://localhost:3000/api/build/html \
  -F "[email protected]" \
  -F "appName=TestDemo"

React Project:

# Zip your project first
zip -r test-react-app.zip test-react-app/

# Upload and build (Auto-detects project type)
curl -X POST http://localhost:3000/api/build/zip \
  -F "[email protected]" \
  -F "appName=TestReactApp"

Paste Code:

# Upload raw code (HTML/JS/React)
curl -X POST http://localhost:3000/api/build/code \
  -F "code=<export default function App() { return <h1>Hello</h1> }" \
  -F "appName=MyReactApp"

See API Documentation for details.

βš™οΈ Configuration

Rate Limiting

To ensure fair usage, rate limiting is enabled by default:

  • Limit: Max 5 requests per hour per IP.
  • Dev Mode: Can be disabled via environment variables for local development.

Set in .env:

# Disable rate limiting (dev/test only)
RATE_LIMIT_ENABLED=false

# Custom limit (default 5)
RATE_LIMIT_MAX=10

File Retention

To save storage and protect user data:

  • Retention: Generated APKs and temp files are deleted after 2 hours.
  • Cleanup: Background worker scans for expired files every 30 minutes (configurable).

Configure via environment variable:

# Retention period (hours)
FILE_RETENTION_HOURS=2

# Whether to delete Cordova/Capacitor work dirs after each build
CLEANUP_BUILD_ARTIFACTS=true

# Whether to delete uploaded inputs after each job (default true)
CLEANUP_UPLOADS_ON_COMPLETE=true

# Worker-side cleanup of old APKs/builds/uploads
FILE_CLEANUP_ENABLED=true
FILE_CLEANUP_INTERVAL_MINUTES=30

Concurrency & Queuing

Control how many builds run simultaneously. Excess builds will be queued automatically.

# Number of concurrent builds (default 2)
WORKER_CONCURRENCY=2

πŸ“ Changelog

See CHANGELOG.md for release history.

πŸ“š Documentation

πŸ› οΈ Tech Stack

  • Frontend: React, Vite, Tailwind CSS (Blueprint Style)
  • Backend: Node.js, Fastify, TypeScript
  • Queue: BullMQ, Redis
  • Build: Cordova, Capacitor, Gradle
  • Deploy: Docker, Docker Compose

πŸ“ˆ Community

Star History Chart


Made with ❀️ for Vibe Coding

About

Turn your Vibe Coding ideas into runnable Android Apps instantly

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published