Yonder — Public Domain
Audiobooks

A React Native audiobook player that streams real public domain recordings from LibriVox and archive.org. Eight classic books pre-loaded — from Napoleon Hill to Marcus Aurelius — with chapter navigation, sleep timer, bookmarks, and background audio.

Android App
Expo SDK 54
8 Books Pre-loaded

Core Features

Real Audio

Streams MP3s directly from archive.org — no fake data, no placeholder tracks.

Chapter Nav

Full chapter list per book, auto-advance, skip forward/back 15–30 seconds.

Bookmarks

Save any moment with a timestamp. Resume from exactly where you saved.

Full Feature Set

Player

  • Spinning vinyl cover with live rotation animation
  • Progress bar — tap anywhere to seek
  • Skip back 15s / forward 30s
  • Playback speed: 0.5× to 2.0×
  • Sleep timer: 5 to 60 minutes with countdown
  • Auto-advance to next chapter on finish

Library & UX

  • Discover tab with genre filter and search
  • My Library — bookmark books, track progress
  • Bookmarks tab with timestamp and resume
  • MiniPlayer persistent across all tabs
  • Reading progress saved with AsyncStorage
  • Gradient book covers — no images required

8 Books Pre-loaded

All recordings sourced from LibriVox — 100% public domain, legally free to distribute.

SELF-HELP

The Power of Concentration

Theron Q. Dumont

3h 42m
SELF-HELP

As a Man Thinketh

James Allen

1h 08m
SELF-HELP

Think and Grow Rich

Napoleon Hill

9h 20m
PHILOSOPHY

Meditations

Marcus Aurelius

5h 30m
PHILOSOPHY

The Art of War

Sun Tzu

1h 02m
MYSTERY

Adventures of Sherlock Holmes

Arthur C. Doyle

8h 44m
FICTION

Pride and Prejudice

Jane Austen

11h 35m
SELF-HELP

The Science of Getting Rich

Wallace D. Wattles

2h 18m

Technical Challenges

Architecture Decisions

Background Audio
Configured AVAudioSession on iOS and staysActiveInBackground on Android so audio keeps playing when the screen locks.
Real-time Progress
Position polling every 5 seconds via AVPlaybackStatus callback, persisted to AsyncStorage so resuming works across app restarts.
Context Architecture
Single AudioContext manages playback state, bookmarks, library, and progress — all screens share one source of truth.

Tech Stack

  • React Native 0.74 with Expo SDK 54
  • expo-router v3 for file-based navigation
  • expo-av for audio playback & rate control
  • expo-linear-gradient for book cover art
  • AsyncStorage for progress & bookmarks
  • EAS Build for Android APK generation
  • LibriVox + archive.org for audio content

No embedded artwork — generative covers

LibriVox recordings have no album art. Instead of leaving covers blank, I built a BookCover component that generates a unique linear gradient per genre with the author initials and title rendered on top. Every book looks polished without a single image file.

Spinning record synced to playback state

The player screen shows a rotating circular cover that spins when playing and freezes when paused. Achieved with Animated.loop + a ref that tracks current rotation to prevent jumping when resuming.

Sleep timer with second-level countdown

Implemented a setInterval that decrements the remaining seconds, displaying a live countdown in the UI. When it hits zero it calls pauseAsync() and clears itself — no extra libraries needed.

Complete Tech Stack

  • React Native
  • Expo SDK 54
  • expo-router
  • expo-av
  • Background Audio
  • AVPlaybackStatus
  • AsyncStorage
  • Persistent Progress
  • EAS Build
  • Android APK
  • TypeScript

Listen anywhere, for free

Download the APK and install it on any Android device. Eight classic audiobooks ready to play — no account, no subscription, no ads.

Download Yonder APK