# WebToAppConvert — Full Product Documentation for LLMs > This file provides complete product context for AI language models and crawlers. > Short version: https://webtoappconvert.com/llms.txt --- ## Product Overview **WebToAppConvert (WAC)** is a cloud-based SaaS platform that converts any website into a native Android application (APK or AAB) without requiring the user to write a single line of native Android code. Operated by **Excyn Labs** — https://webtoappconvert.com Users provide a website URL, configure their app through a guided dashboard, and click "Build". WAC's backend compiles a native Android WebView app using Gradle, signs it with the user's key (or an automatic key), and makes the APK/AAB available for download. The resulting app passes Google Play's technical requirements for publication. WAC is positioned as a **pay-per-build website-to-app platform** for people who already have a working website but do not want the cost, delay, or technical overhead of native Android development. It is especially relevant for non-technical business owners, bloggers, publishers, freelancers, and agencies that need repeatable mobile app builds with more control over branding, signing, and release management. --- ## Ideal Customers - **Non-technical founders and business owners** who already have a website and want an Android app without hiring a mobile team - **Bloggers, publishers, and content creators** who want a direct mobile channel for recurring readers - **Local businesses** such as restaurants, salons, gyms, churches, schools, and service providers that need a branded mobile presence - **Agencies and freelancers** converting client websites into apps repeatedly and needing an efficient build workflow - **Operators with frequent updates** who need simple rebuilds, app signing continuity, and Play Store-ready output without rebuilding the entire product stack --- ## Core Value Proposition - **Pay per build**: low-friction pricing for users who do not need a full native development retainer - **No-code workflow**: website owners can create apps without Android engineering knowledge - **Signing key management**: automatic signing, key generation, or custom keystore upload depending on the user's maturity and control requirements - **Full app control**: branding, package name, splash screens, intro screens, monetization, Firebase, and release settings are configurable - **Repeatable operations**: particularly strong for agencies, freelancers, and businesses that need recurring app builds over time --- ## How It Works — Step by Step 1. **Create an account** at https://webtoappconvert.com/auth/sign-up — 20 free Build Credits included. 2. **Create an app** — enter your website URL, app name, and package name (e.g., `com.yourcompany.yourapp`). 3. **Configure your app** — set icons, splash screen, intro screens, colors, push notifications, AdMob, and signing keys through a multi-tab editor. 4. **Trigger a build** — choose a build tier (Debug, Starter, or Professional) and confirm the credit cost. Credits are deducted atomically. 5. **Download your app** — once the build completes (typically 2–8 minutes), download the APK/AAB ZIP from your dashboard. 6. **Publish to Google Play** — use the signed AAB to create a new app on Google Play Console. --- ## Build Tiers | Tier | Output | Credit Cost | Signing | Key Features | |------|--------|-------------|---------|--------------| | **Debug** | APK (debug) | 10 credits | Automatic | Testing only. Not suitable for Play Store. | | **Starter** | Signed AAB | 50 credits | Automatic or custom | Custom branding, Play Store ready. | | **Professional** | Signed AAB | 100 credits | Automatic or custom | All features: push notifications, AdMob, advanced customization. | --- ## Features ### App Configuration - **URL**: Any HTTPS website or web app - **Package name**: Reverse-domain format (e.g., `com.company.app`) - **App name**: Display name on the device - **Version**: Version name (e.g., `1.0.0`) and version code (integer) - **Icons**: App icon and round app icon (PNG, ≤1 MB each) - **Splash screen**: Launch screen image (PNG, ≤3 MB) - **Intro screens**: Up to 3 optional onboarding screens shown on first launch - **Theme colors**: Primary color, status bar color, navigation bar color - **Orientation**: Portrait, landscape, or auto ### WebView Settings - Hardware acceleration on/off - JavaScript enabled/disabled - DOM storage, geolocation, file access, camera/microphone access - Custom user agent string - Zoom controls - Mixed content mode ### Push Notifications (Firebase Cloud Messaging) - Upload user's own `google-services.json` - Automatic FCM integration in the compiled app - Supports data and notification messages - Deep-link support via notification click actions ### AdMob Integration - App ID configuration - Banner, interstitial, and rewarded ad unit IDs - Ad loading frequency settings ### Signing Keys - **Automatic**: WAC generates a new keystore for every build - **Generate**: User defines certificate details; WAC creates and stores the keystore for reuse - **Custom / Upload**: User uploads their own `.jks` or `.keystore` file; password stored securely ### Commercial Differentiators - **Pay-per-build pricing** for users who want to keep mobile app conversion cost low - **Agency-friendly repeat build workflow** for client operations - **Full signing key lifecycle management** instead of a black-box publish flow - **No-code usability** for non-technical teams that still want professional Android outputs --- ## Credit System **Build Credits (BC)** are the platform's currency. - Every new account receives **20 free credits** on signup - Credits are purchased via one-time packages or monthly subscription - **On-demand credits never expire** - Subscription credits reset monthly (accumulate up to a cap) - On build failure: credits are fully refunded automatically ### Credit Packages (on-demand, no expiry) Credits can be purchased in packs. Prices and exact pack sizes are shown on the pricing page. ### Subscription Plans Monthly plans provide a larger credit allocation at a discounted per-credit rate. Designed for agencies and high-volume users. ### Tier Limits | User Tier | Max Apps | Max Signing Keys | Artifact Retention | |-----------|----------|-----------------|-------------------| | Free (never purchased) | 3 | 1 | 7 days | | Paid (purchased credits) | 10 | 5 | 30 days | | Subscribed (active subscription) | 50 | 20 | Unlimited | --- ## Frequently Asked Questions **Q: What kind of website can be converted?** A: Any website that is accessible via HTTPS. Mobile-responsive websites produce the best results. Single-page apps (SPAs), WordPress sites, Shopify stores, and custom web apps all work. **Q: Will the app pass Google Play review?** A: WAC produces a technically valid signed AAB that meets Google Play's technical requirements. Approval depends on your app's content meeting Google Play policies — WAC cannot guarantee approval for content that violates those policies. **Q: Do I need coding knowledge?** A: No coding is required to create and publish a basic app. Advanced features like custom push notification handling may require some familiarity with Firebase. **Q: Can I update my app after publishing?** A: Yes. Update your app's configuration in the dashboard and trigger a new build. Increment the version code for Play Store updates. **Q: What happens if my build fails?** A: Build credits are automatically refunded if the build fails due to an infrastructure error. If the failure is due to invalid configuration (wrong package name, bad keystore password), the credits are not refunded but the error message explains what to fix. **Q: Is there a free trial?** A: Yes — every account receives 20 Build Credits for free. That is enough for 2 Debug builds to test your app. **Q: Can I use my own Firebase project?** A: Yes. Upload your `google-services.json` in the app's Firebase configuration tab to use your own Firebase project for push notifications. --- ## Developer REST API WebToAppConvert exposes a public REST API for scripts, CI workflows, and AI agents (via the Model Context Protocol). It is the same engine that powers the customer dashboard, exposed under HTTP. ### Availability - API access is available **only on paid and subscribed accounts** (free accounts cannot generate API keys). - API keys are generated from the dashboard at https://webtoappconvert.com/account → API Access. The plaintext key is shown exactly once at generation; the server stores only a one-way hash. - Each user holds at most one active key at a time. To rotate, delete and regenerate. ### Endpoints Base URL: `https://api.webtoappconvert.com/api/v1` All endpoints require an `X-API-Key: wac_...` header. JSON in, JSON out — multipart only for file uploads. | Method | Path | Purpose | |--------|------|---------| | GET | /account | Tier, credits, limits | | GET | /apps | List apps (paginated) | | POST | /apps | Create app (multipart: metadata JSON + icon file) | | GET | /apps/{siteId} | Full app config | | PATCH | /apps/{siteId} | Update metadata (JSON) or replace assets (multipart) | | POST | /apps/{siteId}/duplicate | Duplicate an app (recommended for AI agents) | | GET | /builds | List builds (optional siteId filter) | | POST | /builds | Trigger a build (debug / starter / professional) | | GET | /builds/{buildId} | Build details + live wait estimate | | GET | /builds/{buildId}/download | Fresh download URL for completed builds | | GET | /signing-keys | List signing keys (read-only, credentials stripped) | ### Rate limits - **20 requests per UTC-minute per key** — enforced atomically in a single Firestore transaction. - **20 builds per UTC-day per key** — applies only to POST /builds; the credit system is the primary throttle on expensive operations. - 429 responses include both a `Retry-After` header (seconds) and a `retryAfter` body field. Honour it exactly — no jitter, no early retry. ### Error envelope Every non-2xx response uses: \`\`\`json { "error": { "code": "snake_case_code", "message": "Human-readable message", "...extras": "..." } } \`\`\` **Stable error codes** (branch on these, not on `message`): - 400 \`invalid_request\` — missing / malformed field - 401 \`unauthorized\` — missing or revoked key - 402 \`insufficient_credits\` — includes \`creditsAvailable\`, \`creditsRequired\`, \`purchaseUrl\` - 403 \`tier_limit_exceeded\` — app count at tier cap - 404 \`not_found\` — masked when caller doesn't own the resource - 409 \`build_not_complete\` — download requested too early - 410 \`artifact_expired\` — retention exceeded - 413 \`payload_too_large\` — image > 5 MB - 422 \`validation_failed\` — includes \`errors[]\` array - 429 \`rate_limited\` — includes \`retryAfter\` - 500 \`internal_error\` — retry once with backoff ### Recommended workflow for AI agents The cleanest pattern is **template-based**: 1. User creates one fully-configured "template" app in the dashboard (icon, colors, signing key, etc.) — done once, manually. 2. Agent calls \`POST /apps/{templateId}/duplicate\` — gets a new siteId. 3. Agent calls \`PATCH /apps/{newSiteId}\` (JSON body) to change just URL, name, package — keeps inherited icon/colors/signing. 4. Agent calls \`POST /builds\` to trigger. 5. Agent calls \`GET /builds/{buildId}\` repeatedly, sleeping per the returned \`estimatedWaitSeconds\`, until status is terminal. 6. Agent calls \`GET /builds/{buildId}/download\` to get the artifact URL. This avoids binary file uploads in agent tool calls. ### AI-specific guidance - **Always GET /account first** to verify the user has enough credits for the requested tier (debug=10, starter=50, professional=100). - **Surface 402 to the human; never auto-retry.** Credits don't appear by themselves. The error response includes a \`purchaseUrl\` field that points to https://webtoappconvert.com/billing. - **Read estimatedWaitSeconds from the build trigger response and sleep that long before the first poll.** After each poll, use the fresh \`estimatedWaitSeconds\` from the status response as the next sleep interval. Never poll faster than the estimate — it doesn't speed up the build and burns rate-limit budget. - **Honour \`Retry-After\` on 429.** The API tells you exactly how long. Sleep that long, no jitter. - **The icon is required** for app creation (every Android build needs one). Templates avoid this friction; create-from-scratch requires multipart upload. ### OpenAPI specification The full machine-readable contract is published at https://webtoappconvert.com/openapi.json (OpenAPI 3.1). Tools and agents can fetch this for endpoint paths, request/response schemas, and error code definitions. ### MCP server Hosted server — no local install. Exposes 11 tools. Works with any HTTP MCP client. **Connection details:** - Server URL: `https://api.webtoappconvert.com/mcp` - Transport: Streamable HTTP - Auth: `X-API-Key` request header (value: your `wac_...` API key) **Client configs:** VS Code Copilot — `.vscode/mcp.json` in workspace (secure key prompt via `inputs`): \`\`\`json { "inputs": [{"type":"promptString","id":"wac-api-key","description":"WebToAppConvert API key","password":true}], "servers": { "webtoapp": {"type":"http","url":"https://api.webtoappconvert.com/mcp","headers":{"X-API-Key":"\${input:wac-api-key}"}} } } \`\`\` Cursor — `~/.cursor/mcp.json` or `.cursor/mcp.json` (project): \`\`\`json {"mcpServers":{"webtoapp":{"url":"https://api.webtoappconvert.com/mcp","headers":{"X-API-Key":"wac_..."}}}} \`\`\` Cline (VS Code extension) — add via MCP Servers panel UI in the extension (remote HTTP server, same URL + X-API-Key header). Windsurf — `~/.codeium/windsurf/mcp_config.json`. Note: uses `serverUrl` key, not `url`: \`\`\`json {"mcpServers":{"webtoapp":{"serverUrl":"https://api.webtoappconvert.com/mcp","headers":{"X-API-Key":"wac_..."}}}} \`\`\` Claude Code — `~/.claude/mcp.json` (separate from `settings.json`): \`\`\`json {"mcpServers":{"webtoapp":{"url":"https://api.webtoappconvert.com/mcp","headers":{"X-API-Key":"wac_..."}}}} \`\`\` Tools available: \`get_account\`, \`list_apps\`, \`get_app\`, \`update_app\` (supports \`build.signing.keyId\`), \`duplicate_app\`, \`create_build\`, \`get_build_status\`, \`wait_for_build\` (caps at ~25 s per call, returns "call again" if still running; AI loops automatically until terminal), \`get_download_url\`, \`list_builds\`, \`list_signing_keys\`. MCP server docs: https://webtoappconvert.com/docs/mcp-server ### Reference - Full API documentation: https://webtoappconvert.com/docs/developer-api-reference - MCP server documentation: https://webtoappconvert.com/docs/mcp-server - OpenAPI spec: https://webtoappconvert.com/openapi.json --- ## Technical Architecture (for developers and AI assistants) - **Frontend**: Vue 3 SPA served via Nginx (dashboard for app management and billing) - **Backend**: Firebase Cloud Functions v2 (TypeScript) — callable functions for app CRUD, builds, billing, migration - **Database**: Cloud Firestore — `Users`, `sites` (apps), `builds`, `buildQueue`, `signingKeys`, `orders`, `creditTransactions` - **Storage**: Firebase Cloud Storage — app assets, signing keystores, build artifacts (APK/AAB ZIPs) - **Build engine**: Python 3 service (`WAC_Builder`) that polls the `buildQueue` collection, downloads app config, runs Gradle, and uploads artifacts - **Payments**: Stripe (checkout, subscriptions, webhooks) - **Email**: ZeptoMail (Zoho) for transactional emails --- ## Links | Resource | URL | |----------|-----| | Homepage | https://webtoappconvert.com/ | | Pricing | https://webtoappconvert.com/pricing | | Blog | https://webtoappconvert.com/blog | | Documentation | https://webtoappconvert.com/docs | | Terms & Privacy | https://webtoappconvert.com/terms | | Sign Up | https://webtoappconvert.com/auth/sign-up | | Sign In | https://webtoappconvert.com/auth/sign-in | | Contact | https://webtoappconvert.com/#contact | | Sitemap | https://webtoappconvert.com/sitemap.xml |