Skip to content

Latest commit

Β 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🍊 Persimmon

A read-only Reddit client for Android, made with care, Material 3, and absolutely zero login walls. ✨

🌸 Persimmon believes scrolling should feel nice. No ads, no tracking, no analytics, no account required, no API key, no nonsense. Just feeds, posts, comments, and a little bit of softness.


πŸŽ€ Meet Persimmon-chan

Persimmon-chan is the (currently imaginary) friendly face of this little garden: a cheerful seasonal sprite themed around the persimmon fruit. Warm orange-red, leafy green hair, a quiet sense of mischief, probably carrying a tiny basket of fruit.

She doesn't exist yet. We need someone to draw her! See 🎨 Help Wanted below if you want to be the artist who brings her to life. You'd be the very first community contributor and you'd ship in the next release. πŸ’•


🍊 Why Persimmon?

In 2023, Reddit killed third-party apps. The pricing gutted Apollo overnight. Reddit is Fun went down with it. Sync. BaconReader. Boost. One by one, the apps that made browsing Reddit pleasant just… disappeared. The official Reddit app rushed in to fill the vacuum, and somehow, in a market suddenly free of competition, it managed to get worse.

Open the official app on a fresh install and Reddit demands you log in before you can do anything. Tap a Reddit link from Discord or a tweet and a popup begs you to install the app. You already have it, doesn't matter, install it again. Try to read on the web instead and the page is buried under "Open in App" overlays, "Reddit Premium" splash screens, "create an account to continue", carousels of suggested communities you didn't ask for, ads stuffed between every other comment, and notification permission requests every time you breathe near the screen.

I just wanted to read Reddit.

No login. No account. No ads. No "are you sure you want to leave the app?" popups. No upsells. No carousels. No notifications. Just posts, comments, images, and the occasional cat picture. The thing Reddit used to feel like before someone in product decided every interaction needed to convert me into a daily-active-user statistic.

So I built Persimmon. It reads Reddit the same way a web browser does, with no account, no login, and nothing to pay for. No ads, no telemetry, no premium tier, and no plans to add any. It costs me nothing to run; it costs you nothing to use.

It's read-only on purpose. You can browse, search, bookmark subs, save images, everything you'd want as a reader. Posting, voting, and commenting still happen on Reddit's site or app. That's deliberate: as long as Persimmon is just reading a public website, Reddit can't kill it the way they killed the others.

Persimmon ships as an Android APK you sideload from GitHub Releases. That means downloading the file, tapping it, and ignoring Android's scary "this isn't from the Play Store" warning (it's signed, just not by Google). iOS and Play Store releases are on the roadmap. Both are harder problems (Apple's $99/year tax, plus App Store and Play policies that have been hostile to anything Reddit-adjacent since 2023), but they're solvable, and I plan to get there.

If you've been mourning Apollo, side-eyeing the official app, or just want a Reddit reader that doesn't try to sell you anything, try Persimmon. Read Reddit like it's 2014 again.

🌸 (Also: I'm still looking for an artist to draw Persimmon-chan, the app's mascot. If you'd like to contribute some art, DM me. There's a Ko-fi link if you'd rather just throw a coffee at the project.)


✨ Features

  • 🎨 Material 3 UI with several themes, a custom accent picker, and a reading-size slider
  • πŸ“ Three feed layouts (card, compact, gallery), switchable any time
  • 🍊 Subscribed feed that merges all your bookmarked subreddits into one
  • πŸ—‚οΈ Custom feeds you build right from the side drawer: tap +, name one, tick the subreddits to include, done
  • πŸ”– Save posts, hide posts, and mute by keyword, subreddit, or domain
  • πŸ‘οΈ Read tracking that can grey out or hide posts you've already opened
  • 🧠 Per-subreddit sort memory, so each subreddit remembers how you last sorted it
  • ℹ️ Subreddit info with description and rules, one tap from any subreddit
  • πŸ”Ž Search posts, subreddits, and users, and bookmark subs straight from the results
  • πŸ–ΌοΈ In-app image and video viewer with pinch-zoom, sound, and save / share
  • πŸ™ˆ NSFW blur with tap-to-reveal
  • πŸ”— Open Reddit links shared or tapped from other apps, straight into Persimmon
  • πŸ’Ύ Backup and restore your subs, saved posts, filters, and settings to a file
  • πŸ’« Smooth navigation: page transitions, scroll-position restore on back, skeleton loading, and cached feeds for instant relaunches
  • 🌱 Privacy is policy: public Reddit JSON, no account, no telemetry, never any ads

🌿 Read-only, by design

Persimmon does not log into Reddit. It cannot vote, comment, post, save, or subscribe on Reddit's side. "Subscribed" subreddits are stored locally on your device and used to build a personal merged feed via Reddit's standard public per-subreddit endpoints.

If Reddit's authenticated features are something you need, this isn't the app for you. πŸ’›

πŸ“¦ Install

Pre-built APKs live on the Releases page. Download the latest .apk, sideload, done. If you're upgrading, Android installs over the top and your bookmarked subs, custom feeds, theme, saved posts, and other prefs carry forward.

To build from source, see 🌱 Development below.

πŸ› οΈ Stack

  • πŸ’š SvelteKit (SPA mode via @sveltejs/adapter-static) + TypeScript
  • ⚑ Capacitor 8 for the Android wrapper
  • 🎬 hls.js plus MediaSource Extensions: Reddit serves video and audio as separate streams, so Persimmon stitches them back together in the browser for sound and a single set of controls
  • πŸ“ marked + DOMPurify for comment and selftext rendering
  • πŸ”£ Material Symbols (web font) for icons
  • 🍊 A thin typed wrapper around Reddit's public /<thing>.json endpoints: browser-style request headers, warmed anonymous cookies so requests aren't blocked, alternate identities and an old.reddit.com fallback when Reddit pushes back, and per-shape parsers (src/lib/reddit/)

🌱 Development

Prerequisites

  • Node.js 22+
  • Android Studio (only for the device install step; the SPA itself builds with just Node)
  • A Java 17+ JDK (Android Studio's bundled JBR works fine)

Setup

git clone https://github.com/BoundingBears/PersimmonReddit.git
cd PersimmonReddit
npm install

If your default JAVA_HOME is < 17 (AGP 8 requires JDK 17+), pin Studio's bundled JBR in your user-level Gradle config at ~/.gradle/gradle.properties (create it if it doesn't exist). This file is per-user, lives outside any project, and never gets committed:

# macOS
org.gradle.java.home=/Applications/Android Studio.app/Contents/jbr/Contents/Home

# Linux (path varies by install method)
# org.gradle.java.home=/usr/lib/jvm/java-21-openjdk

# Windows
# org.gradle.java.home=C\:\\Program Files\\Android\\Android Studio\\jbr

⚑ Web dev loop

npm run dev

Open http://localhost:5173, use Chrome's device toolbar at phone width. The Reddit data layer talks to www.reddit.com directly (CORS works for unauthenticated JSON).

πŸ“± On-device install

Plug in an Android phone with USB debugging enabled, or boot an emulator from Android Studio's Device Manager. Then:

npm run install:android

That runs vite build β†’ npx cap sync android β†’ ./gradlew installDebug. The APK lands on the device as Persimmon. 🍊

πŸ§ͺ Tests

npm run test

Vitest exercises the parser layer against captured Reddit fixtures in src/lib/reddit/__fixtures__/, covering text posts, image posts, galleries, v.redd.it videos, crossposts, NSFW handling, deleted comments, and "more" stubs.

πŸ” Type-check

npm run check

🎨 Help wanted!

Persimmon is a one-person project that would love some friends. If any of these is your jam, please open an issue or PR. You'd be making a real difference!

🌸 Persimmon-chan artist (highest priority, please come help!)

We need an artist to bring Persimmon-chan to life! She's the (currently imaginary) community mascot. Vibe-wise: a young, cheerful sprite associated with the persimmon fruit, with an orange-red palette, green leafy elements, friendly and a little bit magical. Anime-adjacent style is welcome but not required; cute pixel art, watercolor, and flat illustration are all interesting.

  • πŸ“ Format: SVG ideal (we can use her in-app and she'll scale forever), but PNG illustrations are equally welcome
  • 🎨 Reference: there isn't one yet, so your interpretation is the canon. Have fun with it.
  • πŸ’Œ How: open an issue with sketches, or jump straight to a PR with art in assets/persimmon-chan/
  • πŸ† Reward: you'd be the first community contributor to ship in this project. Permanent shoutout in the README and in the app's About page. Plus eternal gratitude. πŸ’•

πŸ–ΌοΈ App icon designer

The current launcher icon is two-tone diagonal stripes (functional, but it's not her). If you do flat vector icon work and want to give Persimmon a more on-brand launcher icon, especially one that reads cleanly at 48dp, please open an issue or PR with some sketches!

The current foreground source is at assets/icon-foreground.svg. An older more-realistic fruit version is preserved at assets/icon-only-fruit.svg for reference.

πŸ› Bugs, features, ideas

Open an issue. Anything from "I wish there was a button for X" to "the comment renderer breaks on this specific post" is welcome.

πŸ’• Support the project

If Persimmon makes your scrolling a little more pleasant and you'd like to leave a tip (no pressure, never paywalled, never ad-supported, and never on a "tier" that gates features):

β˜• ko-fi.com/boundingbears

Donations help support continued development and (some day soon, with your help!) the official birth of Persimmon-chan. 🌸

πŸ“œ License

MIT.

Persimmon is not affiliated with, endorsed by, or sponsored by Reddit, Inc. It uses Reddit's publicly-accessible JSON feeds for personal, non-commercial use. The "Reddit" name and logo are trademarks of Reddit, Inc.


🍊✨ Thanks for stopping by! ✨🍊

About

🍊 A read-only Reddit client for Android β€” Material 3, no login, no ads, no tracking. Built with SvelteKit + Capacitor.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages