Skip to content

adnope/ephemeral-android

Repository files navigation

Ephemeral Android

Native Android client for Ephemeral, a small single-user self-hosted app for sharing text messages and files across devices.

Chat page
History page

Features

  • Login or first-account setup with an Ephemeral backend.
  • Chat feed with text messages, uploads, real-time updates.
  • File upload queue with progress and cancellation.
  • History screen with search, type filters, date filters, recent filters, text body search, refresh, and infinite scrolling.
  • Image, GIF, and video media viewer.
  • Text/code preview with syntax highlighting.

Requirements

  • JDK 17.
  • Android SDK with API 36 installed.
  • Android Gradle Plugin 8.13.1, resolved by Gradle.
  • A running Ephemeral backend. Refer to Ephemeral

The app supports Android 8.0+ (minSdk 26) and targets Android API 36.

Build

From the repository root:

./gradlew :app:assembleDebug

Build all APK variants:

./gradlew :app:assemble

Run unit tests:

./gradlew testDebugUnitTest

Build release APK and bundle:

./gradlew :app:assembleRelease :app:bundleRelease

Release signing uses keystore.properties at the repository root when present:

storeFile=/absolute/path/to/release.keystore
storePassword=...
keyAlias=...
keyPassword=...

Install on a Connected Phone

With a phone connected through ADB:

./gradlew :app:installDebug && adb shell monkey -p com.ephemeral.android.debug 1

The debug package name is com.ephemeral.android.debug. The release package name is com.ephemeral.android.

Project Layout

app/src/main/java/com/ephemeral/android/
  MainActivity.java                  Top-level navigation and screen host
  data/api/                          Backend API interface and OkHttp implementation
  data/model/                        Item, metadata, paging, upload, and filter models
  data/session/                      Stored session state
  ui/chat/                           Chat screen
  ui/history/                        History grid and filters
  ui/media/                          Media viewer
  ui/preview/                        Text/code preview and highlighting
  ui/upload/                         Upload queue
  ui/common/                         Shared UI helpers such as image loading

app/src/main/res/
  layout/                            XML screens and rows
  drawable/                          Icons and backgrounds
  values/                            Strings, colors, dimensions, styles

Network and Caching

  • API calls use OkHttp and send/receive JSON where supported.
  • Auth is cookie-based, session cookie is persisted locally.
  • Real-time updates use SSE from /api/events.
  • History thumbnails are kept in memory for the lifetime of the app process after loading.
  • Full-size downloaded images are cached on disk with a 100 MB cache limit.
  • Files downloaded through the Download action are written to the public Downloads collection.

About

Android frontend for the Ephemeral application

Resources

Stars

Watchers

Forks

Contributors

Languages