- Glance update() only recomposed the running session, so saved styles (opacity, colours) and new forecasts never reached placed widgets; a state version now triggers a reload - new minimal clock widget (live TextClock, date, current weather), transparent by default - static preview images for the widget picker, generated previews on Android 15+ - debug builds install next to the release app (app.wetter.debug) Co-Authored-By: Claude Opus 5.5 <[email protected]>
NoGooleApps
Everyday Android apps without Google. Privacy-friendly rebuilds of the standard Google apps, for people who want the polish of the originals without Play Services, tracking or an account. Made with GrapheneOS, CalyxOS, /e/OS and LineageOS in mind, and works the same on any stock Android phone.
Not affiliated with, endorsed by or connected to Google. These are independent, clean-room rebuilds: no Google code, assets, icons, fonts or text are used.
Apps
| App | Replaces | Status | Install |
|---|---|---|---|
Wetter (wetter/) |
Google Weather / Pixel Weather | alpha, in daily testing | Obtainium · F-Droid: not yet |
More apps will follow, one folder each. Each one goes through the same pipeline (see How these apps are made).
Wetter
A weather app with the look and feel of Pixel Weather: an animated sky that changes with the conditions, a large hero temperature, hourly and 10-day forecasts, and shaped Material 3 Expressive detail tiles (wind, sun, UV, air quality, visibility, humidity, pressure, pollen).
- No Google Play Services. Location uses the platform's own providers (including the AOSP fused provider), so it works on GrapheneOS without sandboxed Play.
- No account, no tracking, no analytics. Everything stays on the device. Coordinates are rounded to two decimals (about 1 km) before they reach the weather service.
- Open data sources only: Open-Meteo for forecasts, 15-minute precipitation, air quality, pollen and place search (CC BY 4.0), and Nominatim / OpenStreetMap for naming your current location.
- Features today: current location and saved cities (swipe between them), search with a full preview before saving, precipitation-in-the-next-hours card, a rule-based daily summary, day detail view, units and theme settings, light and dark mode.
- Six home-screen widgets: a minimal clock with date and current weather (transparent by default), a weather card that grows from 3×2 to 4×5 (hourly panel, then a daily list), a pill, a tilted pill, a one-line bar with a cookie badge, and a classic card. The widget picker shows real previews. Each one can be customised when added or later: location, system/light/dark, colours (wallpaper Material You, current weather, or five fixed palettes, all WCAG AA checked) and background opacity from 100 % down to fully transparent.
- Coming next: severe weather alerts (DWD / MeteoAlarm), precipitation radar map, card reordering, notifications.
Screenshots are rendered from a real Open-Meteo response (Berlin) by the app's screenshot tests; widgets are rendered on a Pixel with the wallpaper colours of that phone.
Requires Android 10 (API 29) or newer.
Install with Obtainium
Obtainium installs and updates apps straight from this repository's releases, with no store in between.
Wetter
Open the button on your phone with Obtainium installed and confirm the import. The link carries the complete configuration, so nothing has to be set by hand:
| setting | value | why |
|---|---|---|
| Source | https://git.mrblake.cc/MrBlake/NoGooleApps |
this repository (note the spelling: NoGooleApps) |
| Override source | Forgejo (Codeberg) | the repository runs on a self-hosted Gitea, which Obtainium does not detect on its own; Gitea speaks the same release API |
| Filter release titles | ^Wetter |
several apps share this repository; only weather releases count |
| Filter APKs | ^wetter-.*\.apk$ |
picks the weather APK from the release assets |
If the button does not open Obtainium (some browsers block links to apps; the page then shows a button to tap, or enable "open links in apps" in the browser), paste this link into the phone's browser address bar, or add the app by hand with the settings above:
obtainium://app/%7B%22id%22%3A%22app.wetter%22%2C%22url%22%3A%22https%3A%2F%2Fgit.mrblake.cc%2FMrBlake%2FNoGooleApps%22%2C%22author%22%3A%22MrBlake%22%2C%22name%22%3A%22Wetter%22%2C%22overrideSource%22%3A%22Codeberg%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22appId%5C%22%3A%5C%22app.wetter%5C%22%2C%5C%22includePrereleases%5C%22%3Atrue%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5EWetter%20%5C%22%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22%5Ewetter-.%2A%5C%5C%5C%5C.apk%24%5C%22%2C%5C%22autoApkFilterByArch%5C%22%3Afalse%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22releaseTitleAsVersion%5C%22%3Afalse%7D%22%7D
Releases. Every app is published as a release titled <App> <version> (for example Wetter 0.1.0, tag wetter-v0.1.0) with one asset named <app>-<version>.apk. Obtainium shows "no matching version" until the first release of an app exists.
F-Droid: not available yet. The apps contain no proprietary libraries, so an F-Droid build is planned (either the main repository or a self-hosted F-Droid repo).
How these apps are made
The Replica pipeline
Every app is rebuilt with Replica, an open set of eleven Claude Code skills by Jake Schincariol for cloning an app's functionality and UX patterns clean-room style. Each skill writes files the next one reads, and everything is kept in replica/:
| Step | Skill | What it produced for Wetter |
|---|---|---|
| 1 | replica-recon |
Recon map built from public sources (help center, reviews, store listing): 15 screens, 9 user flows, components, inferred data model, feature matrix |
| 2 | replica-architect |
Architecture and schema: native Kotlin, offline-first, no server, public APIs only |
| 3 | replica-design |
Design tokens and component specs, WCAG AA contrast checked (70 colour pairs), generated into Compose code |
| 4 | replica-build |
The app itself, screen by screen, with a build log and screenshots rendered from a real API response |
| next | replica-test, replica-diff, replica-entrepreneur, replica-brand, replica-launch, replica-deploy, replica-backend |
QA, parity scoring against the original, reading real user reviews for improvements, naming and branding, store listing, release |
The rules Replica enforces, and that this project follows:
- Public sources and our own devices only. No decompiling, no private APIs, no reading the original's code or network traffic.
- Everything written fresh. Code, icons, weather glyphs, the animated sky and every label are made from scratch. Reference screenshots of the originals live in
replica/screens/for layout comparison only and never ship. - What cannot be cloned is left out on purpose: Google's own forecast models, Gemini summaries, Calendar/Gmail-based insights and account sync. Open alternatives replace them where it makes sense.
Built with AI, steered by a human
The code, the design system and this README were written by Claude Opus 5.5 (Anthropic's model, ID claude-opus-5-5) running in Claude Code, working through the Replica skills step by step. The human side of the project (that's @MrBlake) sets direction, supplies reference screenshots, tests every build on a real Pixel phone and reports what feels wrong. Issues found that way, like stutter during scrolling or slow location, are measured on the device and fixed. A typical loop:
- A skill produces its document or code; the human reviews it.
- The app is built and rendered to screenshots on the JVM (Roborazzi), and the screenshots are checked against the reference.
- The release build is installed on the phone over adb and used for real; frame timings (
dumpsys gfxinfo) and logs guide the fixes.
Each commit says what changed and carries a Co-Authored-By line for the AI.
Building from source
Requirements: JDK 17 or newer and the Android SDK (platform 36).
cd wetter
./gradlew :app:assembleRelease # APK in app/build/outputs/apk/release/
./gradlew :app:testDebugUnitTest # unit + screenshot tests
./gradlew :app:recordRoborazziDebug # re-render replica/clone-screens/
Release builds are signed with the project key from ~/.android/nogoogleapps-release.properties (kept outside the repository); without it they fall back to the debug key for local testing. scripts/release.sh <app> builds, signs and publishes a release in the format Obtainium expects.
Repository layout
replica/ recon, architecture, design system, build log, screenshots
wetter/ the weather app (Kotlin, Jetpack Compose, Glance widgets, Room, WorkManager)
Credits
- Weather data: Open-Meteo.com, CC BY 4.0
- Place names: © OpenStreetMap contributors, via Nominatim
- UI icons: Material Symbols, Apache 2.0
- Method: Replica by Jake Schincariol
License
Not chosen yet. Until a license file is added, all rights are reserved by the author.







