diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..37823c6
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..37823c6
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..08f9427
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..08f9427
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..87cab81
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..87cab81
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..2a31611
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..2a31611
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..88afcac
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..88afcac
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/assets/feature-graphic.png b/assets/feature-graphic.png
new file mode 100644
index 0000000..1a46315
Binary files /dev/null and b/assets/feature-graphic.png differ
diff --git a/assets/feature-graphic.svg b/assets/feature-graphic.svg
new file mode 100644
index 0000000..ee5c2b3
--- /dev/null
+++ b/assets/feature-graphic.svg
@@ -0,0 +1,131 @@
+
diff --git a/assets/icon-512.png b/assets/icon-512.png
new file mode 100644
index 0000000..4577f1a
Binary files /dev/null and b/assets/icon-512.png differ
diff --git a/assets/icon.svg b/assets/icon.svg
new file mode 100644
index 0000000..5b180a0
--- /dev/null
+++ b/assets/icon.svg
@@ -0,0 +1,85 @@
+
diff --git a/justfile b/justfile
new file mode 100644
index 0000000..8a5038b
--- /dev/null
+++ b/justfile
@@ -0,0 +1,71 @@
+# Tether API build tasks
+
+# Docker image for Android builds
+android_image := "cimg/android:2025.12"
+gradle_cache := "gradle-cache"
+
+# Default task
+default:
+ @just --list
+
+# Build debug APK
+build:
+ docker run --rm \
+ -v {{justfile_directory()}}:/project \
+ -v {{gradle_cache}}:/home/circleci/.gradle \
+ -w /project \
+ {{android_image}} \
+ ./gradlew assembleDebug --no-daemon
+ @echo "APK: app/build/outputs/apk/debug/app-debug.apk"
+
+# Build release APK (requires keystore and env vars)
+release:
+ docker run --rm \
+ -v {{justfile_directory()}}:/project \
+ -v {{gradle_cache}}:/home/circleci/.gradle \
+ -w /project \
+ -e KEYSTORE_PASSWORD \
+ -e KEY_ALIAS \
+ -e KEY_PASSWORD \
+ {{android_image}} \
+ ./gradlew assembleRelease --no-daemon
+ @echo "APK: app/build/outputs/apk/release/app-release.apk"
+
+# Clean build artifacts
+clean:
+ rm -rf app/build build .gradle
+ @echo "Cleaned"
+
+# Run gradle tasks
+gradle *ARGS:
+ docker run --rm \
+ -v {{justfile_directory()}}:/project \
+ -v {{gradle_cache}}:/home/circleci/.gradle \
+ -w /project \
+ {{android_image}} \
+ ./gradlew {{ARGS}} --no-daemon
+
+# Generate icons from SVG
+icons:
+ inkscape assets/icon.svg -w 512 -h 512 -o assets/icon-512.png
+ inkscape assets/icon.svg -w 192 -h 192 -o app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+ inkscape assets/icon.svg -w 144 -h 144 -o app/src/main/res/mipmap-xxhdpi/ic_launcher.png
+ inkscape assets/icon.svg -w 96 -h 96 -o app/src/main/res/mipmap-xhdpi/ic_launcher.png
+ inkscape assets/icon.svg -w 72 -h 72 -o app/src/main/res/mipmap-hdpi/ic_launcher.png
+ inkscape assets/icon.svg -w 48 -h 48 -o app/src/main/res/mipmap-mdpi/ic_launcher.png
+ cp app/src/main/res/mipmap-xxxhdpi/ic_launcher.png app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
+ cp app/src/main/res/mipmap-xxhdpi/ic_launcher.png app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
+ cp app/src/main/res/mipmap-xhdpi/ic_launcher.png app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
+ cp app/src/main/res/mipmap-hdpi/ic_launcher.png app/src/main/res/mipmap-hdpi/ic_launcher_round.png
+ cp app/src/main/res/mipmap-mdpi/ic_launcher.png app/src/main/res/mipmap-mdpi/ic_launcher_round.png
+ inkscape assets/feature-graphic.svg -w 1024 -h 500 -o assets/feature-graphic.png
+ @echo "Generated all icons"
+
+# Install APK on connected device
+install: build
+ adb install -r app/build/outputs/apk/debug/app-debug.apk
+
+# Generate keystore for release signing
+keystore:
+ keytool -genkey -v -keystore keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias release
+ @echo "Created keystore.jks - keep this safe!"