This repository hosts a collection of Framework7 (Svelte) starter templates optimized for building high-performance hybrid mobile applications.
These templates are Production Ready. They come pre-configured with the necessary structure to be built instantly using SwapLab Build Services, supporting both Android (APK/AAB) and iOS (Xcode Export) workflows.
This engine is designed to be intelligent. It automatically detects your project structure and applies the correct build strategy.
| Project Source | Support Level | How it works |
|---|---|---|
| Framework7 (CLI) | āļø Native | Detects framework7.json or F7 directory structure. builds UI assets, then compiles Native. |
| Standard Cordova | ā Full Support | Detects config.xml at the root. Builds exactly like the classic Cordova CLI. |
| Construct 3 (Games) | ā Full Support | Seamlessly builds C3 mobile exports. Just export your game as "Cordova" and upload. |
| Pure Web Apps | ā” Auto-Wrap | If you upload a plain HTML/JS/CSS project (Svelte/Vue/React) without Cordova config, the engine will auto-initialize a native wrapper for you. |
Want to test if this works immediately? You don't need an account or a GitHub repository to start. Use our Public Builder for a secure, anonymous test drive.
How to test these templates in 30 seconds:
/framework7-svelte).While the Public Builder is perfect for quick testing, the Authenticated Dashboard unlocks professional features required for app store publishing and advanced development.
Why Sign In?
Before using these templates, please read these rules to ensure your code is safe and your billing is managed correctly.
When you fork this repository to your account, you must change the visibility to PRIVATE immediately to protect your source code.
It is important to distinguish between GitHub Costs and SwapLab Service Costs.
A. GitHub Actions Quota (Compute) The build process runs inside your GitHub account.
B. SwapLab Subscription (Orchestration) We offer a Free Tier (Unlimited Debug builds) and Paid Tiers (Release builds).
| Build Type | Availability |
|---|---|
| Debug APK | ā Free Forever (Unlimited, No Subscription) |
| Release APK / AAB | š Free PROMO (Ends Jan 1, 2026) |
| Export Xcode (iOS) | š Free PROMO (Ends Jan 1, 2026) |
[!TIP] š”ļø Security & Trial Options (Zero-Trust)
If you are hesitant about uploading your Keystore/Signing Keys to a cloud service, you have a safe alternative:
- Local Signing: Choose
Export Android StudioorExport Xcodeas your build type. We will compile the native project structure for you, and you can sign the final app locally on your own machine.- Plugin Devs & Testing: Use
Debug APK(Unlimited/Free). It requires no keys and is perfect for testing native functionality or evaluating the service without a subscription.
Choose your preferred project type below. Each folder represents a complete, isolated application.
| Folder Name | Description | Framework |
|---|---|---|
/framework7-svelte |
HackerNews7 Clone (Real-world App) | F7 + Svelte |
Note: The
framework7-sveltetemplate is a fully functional Hacker News reader. It demonstrates advanced F7 concepts like Virtual Lists, API data fetching, and native-like navigation transitions.
[!WARNING] āļø CRITICAL: DO NOT DELETE THE
.github/workflowsDIRECTORYThis directory is the digital bridge connecting your repository to the SwapLab Service.
- How it works: SwapLab acts as the Trigger, but the build runs on YOUR GitHub Account using your Action Minutes.
- Consequence: Removing these files will sever the connection, and the Service will be unable to trigger the build process.
These templates are unique because they can be built on ANY of our platforms. Choose the engine that fits your needs:
| Builder Service | Engine Used | Best For |
|---|---|---|
| framework7.swaplab.net | Framework7 Engine | Optimized specifically for F7 projects. Auto-detects Cordova config or injects it for pure web projects. |
| cordova.swaplab.net | Cordova Engine | Standard builder. Requires a valid config.xml in the root. |
| repository.swaplab.net | CI/CD Pipeline | Automated builds triggered by git commits. |
At SwapLab, we believe developers should have the freedom to build without restrictions. We do not rely on a manually managed "whitelist" of allowed plugins. You are free to use any npm package or Cordova plugin required for your project.
To make this "Unlimited Ecosystem" safe, we employ a rigorous Automated Security Gate instead of manual reviews.
SwapLab offers advanced build settings to customize your security and performance.
Select the CI/CD infrastructure to run your build process.
Status: MANDATORY Checks your project's dependencies against the CVE database. Legacy dependencies are common sources of security leaks.
Status: MANDATORY Static Application Security Testing. Scans your Svelte/JS source code for insecure patterns (XSS, Injection, etc.).
Status: MANDATORY Scans third-party libraries for deep supply chain vulnerabilities.
Status: Optional (Default: Off)
--ignore-scripts.Status: Optional (Default: Off)
npm audit fix automatically.package.json automatically.Status: Optional (Default: Off)
clamscan (Anti-virus) on the final APK/AAB file.Choose the method that suits your workflow. Both options utilize your GitHub Action minutes for the build execution.
Best for automated builds directly from your GitHub repository.
Requirement: Since this repository is a Monorepo, you must specify the project folder (e.g.,
framework7-svelte).
Best for quick builds without setting up a git repo.
framework7-svelte folder on your computer.my-app.zip).Important: This section applies ONLY to users using Option A (Repository Builder). If you are using Option B (Manual Upload), you do not need to configure these secrets.
To generate signed Release APKs or AAB (Android App Bundle) automatically via GitHub Actions, you MUST configure the following Secrets in your GitHub Repository settings.
Go to Settings > Secrets and variables > Actions > New repository secret.
| Secret Name | Description |
|---|---|
KEYSTORE_BASE64 |
Your .jks or .keystore file converted to a Base64 string. |
KEYSTORE_PASSWORD |
The password for your Keystore. |
KEY_ALIAS |
The alias name of your key. |
KEY_PASSWORD |
The password for your specific key alias. |
You cannot upload the binary keystore file directly to GitHub Secrets. You must convert it to a text string first.
Mac/Linux:
base64 -i your-keystore.jks > base64-keystore.txt
# Open base64-keystore.txt, copy the content, and paste it into the Secret value.
Windows (PowerShell):
[Convert]::ToBase64String([IO.File]::ReadAllBytes("your-keystore.jks")) | Out-File base64-keystore.txt
We prioritize security by using Just-In-Time (JIT) Processing.
Your signing keys and passwords are handled with strict isolation rules to ensure they cannot be leaked or retrieved:
# From the .yml workflow (Inputs):
-e INPUT_KEYSTORE_BASE64=${{ secrets.KEYSTORE_BASE64 }} \
-e INPUT_KEYSTORE_PASSWORD=${{ secrets.KEYSTORE_PASSWORD }} \
-e INPUT_KEY_ALIAS=${{ secrets.KEY_ALIAS }} \
-e INPUT_KEY_PASSWORD=${{ secrets.KEY_PASSWORD }} \
The build engine used to process these templates is part of the SwapLab Open Ecosystem. Our architecture prioritizes Zero-Knowledge Storage and Just-In-Time (JIT) Security.
You can audit our infrastructure components here:
In this workflow, SwapLab acts as a Digital Bridge (Trigger). It connects your SwapLab dashboard to your private GitHub Workspace, allowing you to trigger builds that run inside your own repository using standard GitHub Actions.
We believe in radical transparency. Here is the exact technical breakdown of why we request specific permissions and which GitHub APIs are triggered:
We use Firebase Authentication (GitHub OAuth) to verify your identity. We never see, store, or access your GitHub password.
Why it's required: To act as a "Remote Control" for your build button. This allows the SwapLab Dashboard to start a build or cancel a hanging process.
API Endpoints Used:
POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatchesPOST /repos/{owner}/{repo}/actions/runs/{run_id}/cancelWhy it's required: repository.swaplab.net
checkout your source code into the temporary, isolated build environment so it can be compiled..apk or .aab) as an asset to that release.ā ļø Note: We only use this permission to Create releases. We do not automate the deletion of your files. Full control to delete old releases or assets remains manually in your hands via:
https://github.com/{owner}/{repo}/releases
Why it's required: This is a default permission. We use it to read basic information about your repository (like its name and visibility) to display it correctly in your Dashboard list.
By using this service, you agree to our policies regarding repository access and data handling.
The templates in this repository are adapted from the official Framework7 examples and community contributions.
| Project | Original Source / Inspiration |
|---|---|
| Framework7 Svelte (HackerNews) | GuillaumeBiton/hackernews7-svelte |
SwapLab is built and maintained by EMI (EMI-INDO), a dedicated developer in the Hybrid Mobile App ecosystem.
This service was built to solve the real-world build problems I faced while developing plugins and games.
Maintained by SwapLab Engineering Team