Inspiration
Every messaging app is built to make you reply faster. Typing indicators, "online" dots and read receipts turn conversation into pressure. I wanted the opposite: a place where two real people write to each other the way pen pals used to, thoughtfully, with time in between.
SlowJourney pairs you with a real person abroad who shares your goals. It also works as a language exchange. Everyone has a native language and one they're learning, so a letter can double as practice.
What it does
- Slow-mail delivery. Letters don't arrive instantly. Delivery depends on distance: about 15 minutes within the same country, about 2 hours within Europe, 8 in Asia, 12 in the Americas and 18 to Australia and Oceania. The more you write to the same friend, the faster delivery gets.
- Discover. Browse real profiles by country, language and goals. Each one shows a compatibility score, and you can bookmark the people you want to write to first.
- Language exchange built in. Profiles carry native and learning languages with fluency levels. Letters can include translations, gentle corrections and vocabulary you save for later.
- A shared journey. Each friendship has milestones such as letter streaks, challenges and language wins.
- No pressure, by design. There are no typing indicators, no online status and no read receipts.
- Offline-first. You can write anywhere, and letters sync when you're back online.
How RevenueCat powers monetization
SlowJourney is free to download and free to use. SlowJourney Pro is sold through RevenueCat with a single pro entitlement and weekly and yearly plans.
Pro adds room for the things people run into once a pen pal relationship gets going:
- Longer letters: up to 1,000 words, against 200 on the free plan
- Faster delivery on a chosen letter at 1.25x, 1.5x or 2x
- Deeper browsing in Discover
- More active friendships at once
The paywall is built in the RevenueCat Paywall Builder and shown with the RevenueCat SDK. Subscription state is synced from RevenueCat into the app, so entitlements follow the user even after a reinstall. The yearly plan includes a 3-day free trial. [Keep this line only if the trial is live.]
Pro never changes the philosophy. It doesn't speed up the mail in a way that turns the app into a chat, and it doesn't add pressure. It gives existing letters and friendships more space.
How I built it
- React Native with Expo (SDK 54) and expo-router for typed routing
- SQLite as the source of truth on the device, with a sync queue that pushes changes to Firestore. Every screen works offline.
- Firebase Auth with Google Sign-In as the only way to sign in
- Firestore security rules that control which fields can leave a device. Per-viewer state such as blocks, read state and favorites never reaches the other person.
- TanStack Query and Redux Toolkit for data and app-shell state
- RevenueCat for subscriptions and the paywall
- A warm, paper-journal design system with a light and a dark theme
The interesting piece is the delivery mechanic. A letter's content reaches the recipient's device immediately over a realtime listener. What's delayed is when the device reveals it, based on the sender's and recipient's regions and the friendship's depth.
Challenges
- Making waiting feel good. A delay in a normal app is a bug. Here it's the product, so the "in transit" state had to feel calm and intentional.
- Identity across installs. Moving to Google Sign-In meant linking older device-based accounts without breaking existing friendships or RevenueCat customers.
- Privacy in a shared database. Deciding exactly which fields sync, and keeping the client allow-list in step with the Firestore rules.
What's next
More languages, more ways to write (photos, postcards) and a gentler onboarding for people who've never written a letter before.
Built With
- expo-router
- expo.io
- firebase
- firestore
- google-sign-in
- react-native
- redux-toolkit
- revenuecat
- sqlite
- tanstack-query
- typescript
Log in or sign up for Devpost to join the conversation.