Reading the repo
Opening the box…
Reading the repo
Opening the box…
Assembly instructions
A native Android application that converts any website URL into a standalone Android App.
Saved setup from 2 h ago
Will it work on macOS?
CONTRIBUTING.mdThanks for taking the time to help. WebToApp grows fastest when contributors focus on small, well-scoped changes — pick one of the lanes below and ignore the rest.
English · 简体中文
| You want to… | Go to | Effort |
| --- | --- | --- |
| Publish a JS/CSS module to the in-app Module Market | modules/README.md | hours |
| File a bug, request a feature, or ask a question | GitHub Issues | minutes |
| Fix a bug or build a feature in the Android client | This guide ↓ | days |
If you're not sure which lane fits, open a discussion or an issue first — no need to write code before there's agreement on the shape of the change.
The fastest way to ship something useful to every WebToApp user is to publish
a module. The full schema, reviewer checklist, and an example PR template live
at modules/README.md. The short version:
modules/<your-module>/module.json and main.js (plus style.css if
you need CSS).modules/registry.json.Once merged, every client picks up the new module on its next market refresh (default cache is one hour).
app/build.gradle.kts is intentionally restrained.You'll need:
git clone https://github.com/shiahonb777/web-to-app.git
cd web-to-app
./gradlew assembleDebug
Run the project's checks before submitting:
./gradlew :app:compileDebugKotlin
./gradlew :app:test
WebToApp leans on Kotlin idioms and Jetpack Compose patterns already in the codebase. A few rules worth calling out:
Premium*, Wta*). When you touch a screen, use whatever's
already used there rather than reaching for something else.ui/design/WtaTokens.kt for spacing, radius,
alpha, and elevation. Don't hard-code numbers.core/i18n/Strings.kt. Add the new string to all three
language branches (Chinese, English, Arabic). If you can't translate, add
the English text to all three and flag it in the PR.di/AppModule.kt is the source of truth.Exception to silence errors. If recovery is impossible,
log via AppLogger and re-throw or return a failed Result.We don't enforce Conventional Commits, but a clear subject line and a wrapped body that explains why the change exists make reviews much faster. Example:
ModuleMarket: cache registry.json for an hour
Repeatedly hitting raw.githubusercontent.com on every screen open is wasteful
and triggers GitHub's anonymous rate limit on slow connections. Cache the
parsed registry under cache/module_market/ and treat anything fresher than
an hour as authoritative; refresh button always bypasses the cache.
main. Keep PRs focused — one logical change per PR../gradlew :app:assembleDebug (or note the failure if
it fails on your machine).Maintainer reviews look for:
Be respectful. Disagree about code, not about people. If a discussion stops being productive, take a break and come back later.
<a id="贡献-webtoapp"></a>
非常感谢你愿意花时间。WebToApp 的迭代速度取决于"小而聚焦"的贡献——下面三条路 里挑一条走,其他的可以先忽略。
| 你想…… | 路径 | 投入 |
| --- | --- | --- |
| 给应用内的 模块市场 提交一个 JS/CSS 模块 | modules/README.md | 几小时 |
| 报 Bug、提 Feature、问问题 | GitHub Issues | 几分钟 |
| 修 Bug 或在 Android 客户端里做新功能 | 见下方代码贡献小节 | 几天 |
如果不确定走哪条,先开个 issue 或 discussion——在还没动手前对齐方向比写完再 返工便宜得多。
让你的工作触达每一个 WebToApp 用户最快的方式就是给市场提一个模块。Schema、
审核 Checklist 和 PR 模板都在 modules/README.md。简化
版流程:
modules/<你的模块>/module.json 和 main.js(需要 CSS 时再加
style.css)modules/registry.json 里加一行索引合并后所有客户端在下次刷新(默认 1 小时缓存)就能看到。
动手前
app/build.gradle.kts 的依赖列表是刻意保持精简的本地环境
git clone https://github.com/shiahonb777/web-to-app.git
cd web-to-app
./gradlew assembleDebug
提交前请跑通:
./gradlew :app:compileDebugKotlin
./gradlew :app:test
代码风格
Premium* 和 Wta* 两套组件并存,
在哪个屏幕里就用哪一套ui/design/WtaTokens.kt 里的设计 token,别硬编码数字core/i18n/Strings.kt,三种语言(中、英、阿拉伯)都要补AppLogger 记录后重新抛出或返回失败的 ResultCommit 消息
不强制 Conventional Commits,但请把"为什么"写在正文里。示例见英文段。
Pull Request
main 分出分支,每个 PR 只解决一件事./gradlew :app:assembleDebug 的结果Review 标准
审核会重点看:
请保持尊重。可以批评代码,不要批评人。讨论失控时先停一下再回来。
Then run bash setup.sh. It stops at the first error and is safe to run again. Servers and tests aren't started; it lists them at the end. Read it first.
Needs Git: xcode-select --install
git clone https://github.com/Cryptomasterb/CMB-web-to-app.git cd CMB-web-to-app
JDK
brew install openjdk@21
./gradlew build -x test
./gradlew run
Requirements: Android Studio Hedgehog or newer, JDK 17, Gradle 8.14+.
git clone https://github.com/shiahonb777/web-to-app.git
cd web-to-app
./gradlew assembleDebug
For release builds, configure signing in app/build.gradle.kts. The first
release build will download the PHP binary; you can pre-fetch it with
./gradlew :app:downloadPhpBinary.
No reports for macOS yet.
GitManual AI Agent reads the 5 key files and writes a step-by-step guide for macOS. Once written, it's saved for everyone.