No accounts exist yet. To create the master admin, paste the setup token printed in your server console below — this proves you have access to the server so a stranger can't claim your instance.
Welcome back. Enter your credentials to continue.
Forgot your password?
Don't have an account? Create one.
Enter the email on your account. If it matches, we'll send a one-hour reset link. If SMTP isn't configured, the link is printed to the server console — ask your administrator to forward it.
Back to sign in
You requested a password reset. Pick a new password to sign in.
Sign up to wrap your websites into native Android and iOS apps. You'll see only your own apps; administrators see everything.
Already have an account? Sign in.
Create an app or select one from the app switcher to start configuring a native wrapper.
Add your existing keystore for app migration. If you do not provide one, we will generate a new keystore exclusively for your app.
iOS builds require macOS/Xcode to archive and TestFlight or App Store Connect to distribute. This dashboard stores the configuration and sends it through the iOS build endpoint.
Make the launch screen fill the entire screen with your chosen image, logo, animation, or video treatment. Every option is included for every app.
2732×2732 PNG in apps/<slug>/assets/splash.png.
apps/<slug>/assets/splash.png
Choose which native capabilities the wrapped website can use.
Enable only the permissions your app actually needs. Each toggle adds the required iOS Info.plist usage description and the matching Android <uses-permission> entry. The text below is used for iOS prompts and App Review; Android uses the standard system permission dialog. Turning a permission off removes it from both platforms.
Info.plist
<uses-permission>
navigator.geolocation
NSLocationAlwaysAndWhenInUseUsageDescription
getUserMedia({audio:true})
NSUserTrackingUsageDescription
Manage wrapper identity, appearance, WebView behavior, and device-specific runtime controls from one place.
Control orientation, immersive mode, system bars, zoom behavior, resume callbacks, and other native device/runtime settings here. Camera and biometric permission prompts still live under App Permissions.
wrapperAppResumed
window
LOAD_NO_CACHE
UISupportedInterfaceOrientations
supportedInterfaceOrientations
prefersStatusBarHidden
prefersHomeIndicatorAutoHidden
applicationDidBecomeActive
WKWebsiteDataStore
webView.scrollView.bounces = false
These settings are written to App/wrapper-ios-settings.json and read by ViewController.swift at startup. Use macOS or CI to archive.
App/wrapper-ios-settings.json
ViewController.swift
Control which URLs stay in the app, open in an in-app browser, or behave as deep links.
Future controls for injected CSS, allowed pages, app-only banners, and remote website overrides.
Configure native push notification provider settings.
Configure the native-feeling navigation layer your wrapped app should use. These settings are saved into the app config and generated environment for the wrapper shell.
Configure how the wrapped website signs users in with biometrics. When enabled, the wrapper detects the website's login form, offers to remember the password after the first manual sign-in, then offers one-tap Face ID / fingerprint sign-in on every future visit.
[autofill]
Enable the biometric permission first under App Permissions for these settings to take effect.
Future reusable icon sets and generated asset history.
Manage your AppWrap account details, billing preferences, and future payment settings from one place.
We can place subscription controls, invoice defaults, payout details, and checkout helpers here once the account billing flow is implemented.
Manage site-wide AppWrap controls from one place. User management has moved here; subscription controls will be added as the billing system is built.
Super Admins can invite teammates, change roles, or remove accounts. Users only see the apps they own; Super Admins see everything.
Save the site-wide Stripe keys and plan price IDs first. Checkout, billing portal, webhooks, and subscription enforcement are intentionally not active yet.
AppWrap should use Stripe Checkout and the Customer Portal later. Do not collect or store card numbers here. Secret keys are write-only: the dashboard only shows whether they are configured.
This records settings only. It does not turn on checkout yet.
Live mode requires live keys and an HTTPS webhook base URL.
Stripe webhook endpoint: Set a public app URL to generate this.
Set a public app URL to generate this.
Subscription plans, billing status, entitlements, and customer-level access controls will live here next.