# Project plan — ear_android_app

Evidence date: 2026-10-16.

Source repository: `git@bitbucket.org:overdrive/ear_android_app.git`.

Inspected revision: `master` at `5c15b03` (2023-03-10, Jaco Brits, "eAr app POC"). The scan-host path `~/projects/sonar_scan/repos/ear_android_app` was not on this machine. The tree below was read from that git revision.

This repository is an Android Studio project that opens one WebView. It has no README, issue tracker, or written plan. This document describes what is in the snapshot. It does not decide what the product should become.

## Product

There was no `silicon_ark/ear_android_app/` set before this one.

The only product statement in Git is the second commit message, "eAr app POC". Provenance: **Documented** by that message that the author treated the tree as a proof of concept. The application label in `app/src/main/res/values/strings.xml` is `eAr`. The Gradle root project name in `settings.gradle` is `eAr`. The Android `applicationId` and Java package are `com.example.ear`.

What the snapshot does:

1. Declares a single launcher activity, `com.example.ear.MainActivity`.
2. Fills that activity with a `WebView`.
3. Loads the literal URL `https://www.ear-academy.com/home/login`.
4. Enables JavaScript and DOM storage on that WebView, after `loadUrl` is called.

The same hostname `www.ear-academy.com` appears in `silicon_ark/ear_lambdas/` as the target of scheduled admin HTTP GETs. This repository does not reference Lambdas, S3, MySQL, or `ear_lambdas`. Provenance: **Inferred** from the shared hostname that the WebView is aimed at the Ear Academy site. Whether this app is an approved client of that site is **Unknown / Requires Confirmation**.

No commits after 2023-03-10. Whether a later mobile client exists in another repository is **Unknown / Requires Confirmation**.

## Branch reality

| Line | Tip | Date | What it is |
|---|---|---|---|
| `master` (default; `origin/HEAD`) | `5c15b03` | 2023-03-10 | Only branch. 2 commits. No tags |

| Commit | Date | Author | What changed |
|---|---|---|---|
| `d82966c` | 2023-03-10 20:16:40 +0000 | Jaco Brits (`jaco@overdrive.co.za`) | Initial commit. `.gitignore` only |
| `5c15b03` | 2023-03-10 22:25:20 +0200 | Jaco Brits (`jaco@netstart.co.za`) | "eAr app POC". Android Studio module `:app`, Gradle wrapper, launcher activity, WebView, template tests, icons, and IDE files |

**Discrepancy:** the task-creation file list (2026-09-28) included `sonar-project.properties` and `sonarqube_scan.bat` at the repository root. Neither path is in the tree at `5c15b03`, and neither name appears in the two-commit history. Provenance: **Unknown** — they may have been untracked files on the scan host. Their contents were not available for this review.

## Objectives

No objectives document exists in the repository. The following are recovered from the commit message and the code. They are not a written plan.

- **Documented** (commit message): produce a proof of concept named eAr.
- **Implemented:** open `https://www.ear-academy.com/home/login` inside the app on launch.
- **Implemented:** keep ordinary WebView navigations inside the activity by installing a default `WebViewClient`.

Anything beyond that (accounts, offline use, store listing, a native login screen) is **not in this repository**.

## Scope

### In the repository

- One Android application module, `:app`.
- One activity and one layout.
- Gradle build scripts, wrapper (Gradle 7.5), and Android Gradle Plugin 7.4.2.
- Template unit test and template instrumented test.
- Adaptive launcher icons and the default Material day/night theme named `Theme.EAr`.
- Android Studio `.idea` files committed with the POC.

### Not in the repository

- README, licence, changelog, or product requirements.
- A second activity, fragment, service, receiver, or content provider.
- Native login, registration, or profile screens.
- API clients other than the WebView's load of one URL.
- A database, local user store, or background job.
- Signing config, product flavors, CI (`bitbucket-pipelines.yml`), Fastlane, or Play Store metadata.
- `sonar-project.properties` and `sonarqube_scan.bat` (listed on the scan host; absent from Git).

## System architecture

Single-process Android application. The launcher starts `MainActivity`. The activity inflates `activity_main.xml`, which contains only a full-screen `WebView`. That WebView requests one HTTPS URL. Further behaviour of login, navigation, and account state belongs to the remote site, which is not in this repository.

```text
Launcher icon "eAr"
        |
        v
MainActivity (com.example.ear)
        |
        v
WebView (R.id.webview) + default WebViewClient
        |
        v
https://www.ear-academy.com/home/login
```

There is no local backend, no queue, and no sync layer.

## Major components

| Component | Path | Role |
|---|---|---|
| App module | `app/` | The only Gradle module (`include ':app'`) |
| Manifest | `app/src/main/AndroidManifest.xml` | Application id resources, backup flags, one exported launcher activity |
| Activity | `app/src/main/java/com/example/ear/MainActivity.java` | Creates the WebView and loads the login URL |
| Layout | `app/src/main/res/layout/activity_main.xml` | Full-screen `WebView` |
| Strings | `app/src/main/res/values/strings.xml` | App name `eAr` |
| Theme | `app/src/main/res/values/themes.xml`, `values-night/themes.xml` | `Theme.EAr`, Material Components day/night |
| Build | `build.gradle`, `app/build.gradle`, `settings.gradle`, `gradle/wrapper/` | AGP 7.4.2, compile/target SDK 33, min SDK 21, version 1.0 |
| Tests | `app/src/test/.../ExampleUnitTest.java`, `app/src/androidTest/.../ExampleInstrumentedTest.java` | Android Studio template tests |

## Milestones

No milestone list is written in the repository. The history that exists:

| When | Evidence | Status |
|---|---|---|
| 2023-03-10 | Empty repository plus Android `.gitignore` | **Implemented** (commit `d82966c`) |
| 2023-03-10 | WebView proof of concept committed | **Implemented** (commit `5c15b03`) |
| After 2023-03-10 | No further commits on `master` | **Implemented** as absence of history |

## Implementation plan

No implementation plan, ticket, or TODO beyond the stock comments in the Android backup XML templates is in this repository.

The backup template `app/src/main/res/xml/data_extraction_rules.xml` contains the Android Studio comment `TODO: Use <include> and <exclude> to control what is backed up.` That TODO is uncommented sample text. It does not name a product task.

## Known dependencies

Declared in `app/build.gradle`:

| Dependency | Version in the file | Used by app code? |
|---|---|---|
| `androidx.appcompat:appcompat` | 1.6.1 | Yes. `MainActivity` extends `AppCompatActivity` |
| `com.google.android.material:material` | 1.8.0 | Theme parent `Theme.MaterialComponents.DayNight.DarkActionBar`. No Material widget in the layout |
| `androidx.constraintlayout:constraintlayout` | 2.1.4 | Not referenced by `activity_main.xml` (the layout is a `RelativeLayout`) |
| `junit:junit` | 4.13.2 | Template unit test |
| `androidx.test.ext:junit` | 1.1.5 | Template instrumented test |
| `androidx.test.espresso:espresso-core` | 3.5.1 | On the instrumented classpath. No Espresso call in the test |

Build plugins: Android Gradle Plugin `7.4.2` (`com.android.application` and `com.android.library`, the library plugin applied nowhere). Wrapper distribution: Gradle `7.5`.

Runtime dependency that is not a Gradle coordinate: the device must reach `https://www.ear-academy.com`. The manifest does not declare `android.permission.INTERNET`. See `technical-documentation.md`.

## Current project status

**Implemented** snapshot of a one-day proof of concept. `versionName` is `1.0`, `versionCode` is `1`. Release minification is off. No signing config is checked in.

**Unknown / Requires Confirmation:**

- Whether an APK or AAB was ever built, installed, or published.
- Whether `com.example.ear` was intended to remain the application id.
- Whether the missing `INTERNET` permission was noticed.
- Whether the scan-host Sonar files were meant to be committed.
- Whether this POC is still the mobile client, or was replaced by something outside this repository.
- Who owns the product decision for the hardcoded login URL.

## Human confirmation

1. Confirm that the product purpose is "open Ear Academy login in a WebView", and that the commit-message label "POC" is still accurate.
2. Confirm the relationship, if any, to the site and jobs documented under `silicon_ark/ear_lambdas/`.
3. Confirm whether `INTERNET` was omitted on purpose.
4. Confirm the fate of `sonar-project.properties` and `sonarqube_scan.bat` on the 2026-09-28 scan host.
5. Confirm whether any build was distributed, and under which application id.
