WebSpace is a mobile app that brings all your favorite websites and web apps together in one organized, streamlined interface.
Features
git clone https://github.com/theoden8/webspace_app
cd webspace_app
# Install Flutter version via FVM
fvm install
# Get dependencies
fvm flutter pub get
The content blocker's adblock-rust crate (rust/webspace_adblock) auto-builds and bundles as part of each platform build, so a normal fvm flutter build needs nothing extra:
buildRustAdblock task runs before mergeJniLibFolders. Requires cargo on PATH and ANDROID_NDK_HOME (or NDK installed under the SDK). Skip with -PskipRustAdblock=true.webspace_adblock_so target runs before linking the runner.To rebuild the crate alone (e.g. iterating on rust/webspace_adblock/) without a full Flutter build:
./scripts/build_rust.sh linux # or: android <abi> | android-all | ios | macos
Without cargo on PATH the Flutter build still succeeds — the Rust step prints a "skipping" notice and content blocking no-ops at runtime (there is no Dart fallback; Windows ships without the library).
| Platform | Status | Purpose |
|---|---|---|
| iOS | ✅ Supported | Target |
| Android | ✅ Supported | Target |
| macOS | ✅ Supported | Development |
| Linux | ✅ Supported | Development |
WebSpace's own source code is licensed under the MIT License - Copyright (c) 2023 Kirill Rodriguez.
Assets: Icons and images in the assets/ directory are licensed under CC BY-NC-SA 4.0 - Copyright (c) Polina Levchenko. See assets/LICENSE for details.
The MIT license covers WebSpace's original code. Third-party material falls into two distinct categories, neither of which conflicts with MIT:
1. Linked/compiled dependencies (part of the shipped binary) are all under permissive, MIT-compatible licenses:
| Component | License | Linkage |
|---|---|---|
| flutter_inappwebview (fork) | Apache-2.0 | Dart/native plugin |
| WPE WebKit (Linux only) | LGPL-2.1 | Dynamically linked system library (LGPL permits this from non-LGPL code) |
adblock-rust + rust/webspace_adblock wrapper | MPL-2.0 | Optional native .so (file-level copyleft; source is in-repo and public) |
uBlock Origin web-accessible resources ($redirect bodies) | MPL-2.0 | Embedded into the MPL-2.0 .so at build time |
lib/third_party/favicon, cdnjs helpers | MIT | Vendored source |
| Other pub.dev packages (flutter_map, flutter_zxing/zxing-cpp, encrypt, …) | BSD-3 / MIT / Apache-2.0 | Standard pub dependencies |
MPL-2.0 and Apache-2.0 are file-/component-level copyleft and combine cleanly into an MIT-licensed larger work; the covered files keep their own license and their source stays available (it is all in this repo or upstream). LGPL applies only to the Linux WebKit system library, which is dynamically linked.
2. Filter-list and blocklist data is not compiled or bundled into the app. The (L)GPL / CC BY-SA lists below are downloaded at runtime from upstream by the user, cached on-device, and never committed to this repo or shipped in the APK/IPA:
| Data source | License | How it is used |
|---|---|---|
| ClearURLs Rules | LGPL-3.0 | Tracking-param rules fetched at runtime |
| Hagezi DNS blocklists | GPL-3.0 | Domain lists fetched at runtime |
| EasyList / EasyPrivacy / Fanboy | GPL-3.0 or CC BY-SA 3.0 (used under CC BY-SA 3.0) | Filter lists fetched at runtime |
| OpenStreetMap tiles/data | ODbL / CC BY-SA 2.0 | Map tiles fetched at runtime |
A program reading GPL-licensed data at runtime does not become a derivative work of that data, just as a browser loading a GPL filter list, or grep processing a GPL text file, is not itself GPL. These lists are listed here and in the in-app license page (Settings → Licenses, labelled "rules data" / "domain data" / "filter data") purely for attribution. Per-source license texts are bundled under assets/licenses/.
Hacker News (1)
Dart
69.6%
JavaScript
21.1%
Kotlin
3.1%
Swift
1.5%
TLA
1.4%
Shell
1.1%
WebSpace is a mobile app that brings all your favorite websites and web apps together in one organized, streamlined interface.
Features
git clone https://github.com/theoden8/webspace_app
cd webspace_app
# Install Flutter version via FVM
fvm install
# Get dependencies
fvm flutter pub get
The content blocker's adblock-rust crate (rust/webspace_adblock) auto-builds and bundles as part of each platform build, so a normal fvm flutter build needs nothing extra:
buildRustAdblock task runs before mergeJniLibFolders. Requires cargo on PATH and ANDROID_NDK_HOME (or NDK installed under the SDK). Skip with -PskipRustAdblock=true.webspace_adblock_so target runs before linking the runner.To rebuild the crate alone (e.g. iterating on rust/webspace_adblock/) without a full Flutter build:
./scripts/build_rust.sh linux # or: android <abi> | android-all | ios | macos
Without cargo on PATH the Flutter build still succeeds — the Rust step prints a "skipping" notice and content blocking no-ops at runtime (there is no Dart fallback; Windows ships without the library).
| Platform | Status | Purpose |
|---|---|---|
| iOS | ✅ Supported | Target |
| Android | ✅ Supported | Target |
| macOS | ✅ Supported | Development |
| Linux | ✅ Supported | Development |
WebSpace's own source code is licensed under the MIT License - Copyright (c) 2023 Kirill Rodriguez.
Assets: Icons and images in the assets/ directory are licensed under CC BY-NC-SA 4.0 - Copyright (c) Polina Levchenko. See assets/LICENSE for details.
The MIT license covers WebSpace's original code. Third-party material falls into two distinct categories, neither of which conflicts with MIT:
1. Linked/compiled dependencies (part of the shipped binary) are all under permissive, MIT-compatible licenses:
| Component | License | Linkage |
|---|---|---|
| flutter_inappwebview (fork) | Apache-2.0 | Dart/native plugin |
| WPE WebKit (Linux only) | LGPL-2.1 | Dynamically linked system library (LGPL permits this from non-LGPL code) |
adblock-rust + rust/webspace_adblock wrapper | MPL-2.0 | Optional native .so (file-level copyleft; source is in-repo and public) |
uBlock Origin web-accessible resources ($redirect bodies) | MPL-2.0 | Embedded into the MPL-2.0 .so at build time |
lib/third_party/favicon, cdnjs helpers | MIT | Vendored source |
| Other pub.dev packages (flutter_map, flutter_zxing/zxing-cpp, encrypt, …) | BSD-3 / MIT / Apache-2.0 | Standard pub dependencies |
MPL-2.0 and Apache-2.0 are file-/component-level copyleft and combine cleanly into an MIT-licensed larger work; the covered files keep their own license and their source stays available (it is all in this repo or upstream). LGPL applies only to the Linux WebKit system library, which is dynamically linked.
2. Filter-list and blocklist data is not compiled or bundled into the app. The (L)GPL / CC BY-SA lists below are downloaded at runtime from upstream by the user, cached on-device, and never committed to this repo or shipped in the APK/IPA:
| Data source | License | How it is used |
|---|---|---|
| ClearURLs Rules | LGPL-3.0 | Tracking-param rules fetched at runtime |
| Hagezi DNS blocklists | GPL-3.0 | Domain lists fetched at runtime |
| EasyList / EasyPrivacy / Fanboy | GPL-3.0 or CC BY-SA 3.0 (used under CC BY-SA 3.0) | Filter lists fetched at runtime |
| OpenStreetMap tiles/data | ODbL / CC BY-SA 2.0 | Map tiles fetched at runtime |
A program reading GPL-licensed data at runtime does not become a derivative work of that data, just as a browser loading a GPL filter list, or grep processing a GPL text file, is not itself GPL. These lists are listed here and in the in-app license page (Settings → Licenses, labelled "rules data" / "domain data" / "filter data") purely for attribution. Per-source license texts are bundled under assets/licenses/.
Hacker News (1)
Dart
69.6%
JavaScript
21.1%
Kotlin
3.1%
Swift
1.5%
TLA
1.4%
Shell
1.1%