Native Android app of 180°C, an independent French food magazine. Subscribers browse the recipe library, keep favorites offline and receive new recipes by push notification. Content and accounts come from the 180°C WordPress site through its REST API. The app follows the iOS app feature for feature.
- Recipe library: editorial home, search, and filters by course, season and publication.
- Offline favorites: saved recipes and their images stay readable without a network.
- Account: JWT sign-in against WordPress, tokens stored in encrypted preferences. No in-app purchase and no subscription link, per Google Play policy.
- Push notifications: OneSignal with recipe deep links.
- Analytics: Umami and Firebase Analytics.
| Layer | Technology |
|---|---|
| Platform | Android 8.0+ (API 26), target API 36 |
| UI | Jetpack Compose, Material 3, Navigation Compose |
| Networking | Retrofit, OkHttp, Coil |
| Storage | DataStore, AndroidX Security Crypto |
| Integrations | OneSignal, Firebase Analytics |
| Tests | JUnit 4, MockWebServer |
| CI/CD | GitHub Actions, Google Play (Production, draft) |
Requirements: Android Studio, JDK 17.
git clone https://github.com/nearmint/180-android.git
cd 180-android
cp app/google-services.sample.json app/google-services.json # or the real Firebase file
./gradlew assembleDebugapp/google-services.json is gitignored. The backend origin is set by BuildConfig.API_ORIGIN.
./gradlew lint # Android lint
./gradlew testDebugUnitTest # unit tests
./gradlew assembleDebug # debug APK- UI conventions mirror the iOS app: see
.claude/skills/ui-parite-ios/anddocs/design/. versionNameis set by hand and shared with iOS;versionCodeis never edited.- Commits follow Conventional Commits;
mainis merged with--no-ffonly.
- CI (
ci.yml): lint, unit tests and debug build onfeat/**,fix/**,chore/**and pull requests tomain. - Release (
release.yml): every push tomainbuilds a signed.aaband uploads it to the Production track as a draft. Nothing is published or sent for review: rolling the draft out stays manual in the Play Console.
Signing, secrets and upload-key rotation are documented in docs/release.md.
app/src/main/java/fr/thermostat6/app180/
data/ Networking, auth, offline store, push, analytics
navigation/ Navigation graph and tab routing
ui/ Screens, components, view models, theme
app/src/test/ Unit tests and JSON fixtures
docs/ Release process, design tokens and wording