Android · Offline · Open source

An offline photo feed for Android

PhoShare is a small social app where every account, post, comment and favorite is stored on the phone. It has no server and doesn't request the internet permission.

Get it on Google Play
Nonenetwork access
Nonepermissions requested
7 to 17Android versions
Apache 2.0license

Screenshots

What's in the app

Taken on the Android 17 emulator. The three accounts in them, lonely_lens, me.again and still_me, were all created on the same device. Double-tap one to like it.

01

Accounts

Sign up with a username, a password and a security question. You stay logged in until you log out. To reset a forgotten password, answer the security question; the answer isn't case-sensitive.

The login screen
Log in
The sign-up form, filled in
Sign up
Resetting the password with the security question
Password reset
02

Feed

All posts on the device, newest first, each with its favorite count, comment count and a share button. On a fresh install the feed stays empty until an account posts.

The empty feed
Empty feed
The feed with posts from three accounts
Feed
03

Posts and comments

Choose a photo with the system photo picker or take one with the camera app. PhoShare turns it upright and scales it to at most 2048 px before saving it. Each post has a caption and comments, and can be sent to other apps through the share sheet.

A new post with a photo and a caption
New post
A post with its comments
Comments
The Android share sheet with the photo
Share sheet
04

Favorites and profiles

Favorited posts get their own tab, latest first. A profile shows the avatar, bio, join date and a grid of the account's photos. From your own profile you can edit those, change your password, switch accounts, or delete the account and its posts.

The favorites tab
Favorites
Your own profile with its photo grid
Your profile
Another account's profile
Another account
05

Dark theme

Material 3, with colors taken from the logo. The theme follows the system's dark mode setting.

The feed in dark mode
Feed
A post in dark mode
Post

Privacy

What stays on the device

PhoShare collects nothing. The privacy policy has the details.

No network access

The app doesn't request the internet permission, so it can't send or receive anything.

No permissions

Photos come through the system photo picker or the camera app, and neither one requires a permission.

Hashed credentials

Passwords and security answers are stored as PBKDF2-HMAC-SHA256 hashes, with 310,000 iterations and a random salt.

Sharing only on request

A photo leaves PhoShare only when you send it to another app through the share sheet.

Build from source

Podman and Git are all you need

The JDK, the Android SDK, Gradle and adb run in a container, so there's nothing else to install. The command below builds the app and opens it in an Android 17 emulator.

All commands
# macOS and Linux
$ git clone https://github.com/eoussama/phoshare
$ cd phoshare
$ ./android.sh emulator --window

# Windows
> ./android.ps1 emulator --window

# on a phone paired over Wi-Fi
$ ./android.sh run <ip:port>