Mirror of github.com/ewanc26/inkwell-android
Find a file
2026-07-16 18:22:46 +01:00
app Android credits: replace iOS deps with atproto-kotlin 2026-06-29 21:44:16 +01:00
docs/oauth Migrate from app-password auth to atproto-kotlin OAuth 2.1 DPoP 2026-06-27 15:35:45 +01:00
gradle Migrate from app-password auth to atproto-kotlin OAuth 2.1 DPoP 2026-06-27 15:35:45 +01:00
.gitignore Fix OAuth login loop (#1) 2026-06-29 20:58:46 +01:00
AGENTS.md docs: correct agent guidance after source audit 2026-07-16 18:22:46 +01:00
build.gradle.kts docs: add explanatory comments throughout codebase 2026-06-25 16:14:41 +01:00
gradle.properties fix: make project buildable in Android Studio 2026-06-25 19:08:30 +01:00
gradlew fix: make project buildable in Android Studio 2026-06-25 19:08:30 +01:00
gradlew.bat fix: make project buildable in Android Studio 2026-06-25 19:08:30 +01:00
README.md rewrite readme to be more direct 2026-06-29 22:13:25 +01:00
settings.gradle.kts fix: make project buildable in Android Studio 2026-06-25 19:08:30 +01:00

Inkwell for Android

Experimental — Android companion to Inkwell for iOS. The iOS version is the primary client. This is a work-in-progress toward feature parity.

A native reader and writer for the Standard.site publishing ecosystem on AT Protocol. Built with Jetpack Compose, Material 3, and Kotlin.

Features

  • Read — Fetches site.standard.publication and site.standard.document records from the author's PDS. Three-tab layout (Read / Discover / Write). Renders Leaflet blocks and Markpub/Offprint/pckt markdown.
  • Discover — Searches the Standard.site public index. Cross-repo comment discovery via Constellation. Paginated feed with prev/next navigation.
  • Write — Publishes Standard.site documents with portable metadata and selectable content formats.
  • AT Protocol Native — OAuth with your AT Protocol handle (no app password). Session restores silently on relaunch.
  • Verification — Publication .well-known and document <link> checks. Background notification polling via WorkManager.

Relationship to Inkwell iOS

iOS (primary) Android (experimental)
Language Swift Kotlin
UI SwiftUI Jetpack Compose + Material 3
Navigation NavigationStack Navigation Compose
Networking URLSession + OAuthenticator OkHttp
Serialization Codable kotlinx.serialization
DI @Environment Hilt
Background BGAppRefreshTask WorkManager
Status Production-ready Experimental

Both share the same AT Protocol data model shapes, Constellation cross-repo discovery pattern, theme resolution cascade, and three-tab structure.

Architecture

app/src/main/java/uk/ewancroft/inkwell/
├── data/
│   ├── model/Models.kt
│   ├── remote/AtProtoApi.kt
│   └── remote/ConstellationClient.kt
├── ui/
│   ├── theme/Theme.kt
│   ├── navigation/NavGraph.kt
│   ├── auth/LoginScreen.kt
│   ├── reader/ReaderScreen.kt
│   ├── writer/WriterScreen.kt
│   └── discover/DiscoverScreen.kt
├── InkwellApp.kt
└── MainActivity.kt

Getting started

git clone https://github.com/ewanc26/inkwell-android.git

Open in Android Studio (Hedgehog or later). Build with Gradle:

./gradlew assembleDebug

Run on API 26+ device or emulator. Sign in with your AT Protocol handle via OAuth.

Dependencies

  • Jetpack Compose (Material 3)
  • Navigation Compose
  • OkHttp + kotlinx.serialization
  • Hilt
  • WorkManager
  • Coil

Licence

AGPL 3.0 — see Inkwell iOS