105 lines
7.8 KiB
Markdown
105 lines
7.8 KiB
Markdown
# 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](#install-with-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](#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](https://open-meteo.com) for forecasts, 15-minute precipitation, air quality, pollen and place search (CC BY 4.0), and [Nominatim / OpenStreetMap](https://nominatim.org) 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, and two home-screen widgets ("Now" 2×1/2×2 and "Forecast" 4×2/4×3).
|
||
- **Coming next:** severe weather alerts (DWD / MeteoAlarm), more widget sizes and a widget configuration screen, precipitation radar map, card reordering, notifications.
|
||
|
||
Requires Android 10 (API 29) or newer.
|
||
|
||
## Install with Obtainium
|
||
|
||
[Obtainium](https://github.com/ImranR98/Obtainium) installs and updates apps straight from this repository's releases, with no store in between.
|
||
|
||
**One-tap link for Wetter** (open it on your phone with Obtainium installed):
|
||
|
||
[Add Wetter to Obtainium](https://apps.obtainium.imranr.dev/redirect?r=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%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22apkFilterRegEx%5C%22%3A%20%5C%22wetter%5C%22%2C%20%5C%22filterReleaseTitlesByRegEx%5C%22%3A%20%5C%22%5EWetter%5C%22%2C%20%5C%22includePrereleases%5C%22%3A%20true%2C%20%5C%22fallbackToOlderReleases%5C%22%3A%20true%2C%20%5C%22autoApkFilterByArch%5C%22%3A%20true%7D%22%7D)
|
||
|
||
**Or add it by hand:** in Obtainium tap *Add app*, paste `https://git.mrblake.cc/MrBlake/NoGooleApps`, and set:
|
||
|
||
- *Override source*: **Forgejo / Codeberg** (this repository runs on a self-hosted Gitea, which speaks the same release API)
|
||
- *Filter release titles by regular expression*: `^Wetter`
|
||
- *Filter APKs by regular expression*: `wetter`
|
||
|
||
Because several apps live in one repository, every release is titled after its app (for example `Wetter 0.1.0`) and its APK is named after it (`wetter-0.1.0.apk`). The filters above make sure Obtainium only ever picks up the weather app.
|
||
|
||
**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](https://github.com/Jakeschincariol/replica-skill)**, 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/`](replica/):
|
||
|
||
| Step | Skill | What it produced for Wetter |
|
||
| --- | --- | --- |
|
||
| 1 | `replica-recon` | [Recon map](replica/recon.md) built from public sources (help center, reviews, store listing): 15 screens, 9 user flows, components, inferred data model, [feature matrix](replica/features.csv) |
|
||
| 2 | `replica-architect` | [Architecture](replica/architecture.md) and [schema](replica/schema.sql): native Kotlin, offline-first, no server, public APIs only |
|
||
| 3 | `replica-design` | [Design tokens](replica/design/tokens.json) and [component specs](replica/design/components.md), WCAG AA contrast checked (70 colour pairs), generated into Compose code |
|
||
| 4 | `replica-build` | The app itself, screen by screen, with a [build log](replica/build-log.md) and [screenshots](replica/clone-screens/) 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](https://git.mrblake.cc/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:
|
||
|
||
1. A skill produces its document or code; the human reviews it.
|
||
2. The app is built and rendered to screenshots on the JVM (Roborazzi), and the screenshots are checked against the reference.
|
||
3. 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).
|
||
|
||
```bash
|
||
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/
|
||
```
|
||
|
||
Local release builds are signed with the debug key so they install over each other. Published releases will use a dedicated signing key.
|
||
|
||
## 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](https://open-meteo.com), CC BY 4.0
|
||
- Place names: © [OpenStreetMap](https://www.openstreetmap.org/copyright) contributors, via Nominatim
|
||
- UI icons: [Material Symbols](https://fonts.google.com/icons), Apache 2.0
|
||
- Method: [Replica](https://github.com/Jakeschincariol/replica-skill) by Jake Schincariol
|
||
|
||
## License
|
||
|
||
Not chosen yet. Until a license file is added, all rights are reserved by the author.
|