docs: project README
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user