Universal
Your friends for real, once again, on all your devices.
Install / Use
/learn @StayRealHQ/UniversalREADME
📥 Download
<table align="center"> <tr> <th><br> <img src=".github/assets/windows.svg" width="40%" align="center" /> <br><br><p align="center" bottom="15px">Windows</p> </th> <th><br> <img src=".github/assets/apple.svg" width="40%" align="center" /> <br><br><p align="center">macOS</p> </th> <th><br> <img src=".github/assets/linux.svg" width="30%" align="center" /> <br><br><p align="center">Linux</p> </th> </tr> <tr> <td width="30%"> <div align="center"> <b>x86_64</b> : <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-x86_64-pc-windows-msvc-msi.zip">↗ MSI</a>, <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-x86_64-pc-windows-msvc-nsis.zip">↗ NSIS</a> <br> <b>aarch64</b> : <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-aarch64-pc-windows-msvc-nsis.zip">↗ NSIS</a> </div> </td> <td width="30%"> <div align="center"> <b>aarch64</b> : <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-aarch64-apple-darwin-dmg.zip">↗ DMG</a> <br> <b>x86_64</b> : <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-x86_64-apple-darwin-dmg.zip">↗ DMG</a> <br><br><i>You have to run <code>xattr -c StayReal.app</code> to make the app executable in some cases.</i> </div> </td> <td width="40%"> <div align="center"> <b>x86_64</b> : <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-x86_64-unknown-linux-gnu-deb.zip">↗ DEB</a>, <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-x86_64-unknown-linux-gnu-rpm.zip">↗ RPM</a>, <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-x86_64-unknown-linux-gnu-appimage.zip">↗ AppImage</a> <br> <b>aarch64</b> : <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-aarch64-unknown-linux-gnu-deb.zip">↗ DEB</a>, <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-aarch64-unknown-linux-gnu-rpm.zip">↗ RPM</a> <br> <b>armv7</b> : <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-armv7-unknown-linux-gnueabihf-deb.zip">↗ DEB</a>, <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-armv7-unknown-linux-gnueabihf-rpm.zip">↗ RPM</a> </div> </td> </tr> </table> <table align="center"> <tr> <th><br> <img src=".github/assets/android.svg" width="20%" align="center" /> <div> <br><p align="center">Android (<code>.apk</code>)<br><i>These builds are signed.</i></p> </div> </th> <th><br> <img src=".github/assets/apple.svg" width="20%" align="center" /> <div> <br><p align="center">iOS (<code>.ipa</code>)<br><i>This build is signed.</i></p> </div> </th> </tr> <tr> <td width="50%"> <div align="center"> <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-android-aarch64-apk.zip">↗ aarch64</a> <br> <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-android-x86_64-apk.zip">↗ x86_64</a> <br> <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-android-armv7-apk.zip">↗ armv7</a> <br> <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-android-i686-apk.zip">↗ i686</a> </div> </td> <td width="50%"> <div align="center"> <a href="https://nightly.link/StayRealHQ/Universal/workflows/nightly/main/stayreal-ios-aarch64-ipa.zip">↗ aarch64</a> <br><br><i>Do not change the Bundle ID if you want to preserve Push Notifications.</i> </div> </td> </tr> </table>✨ Features
Authentication
Note that accounts with parental control are not supported, if you have one, please open an issue so we can work on it.
- [ ] Automatically convert your phone number to international format
- [x] Send OTP
- [x] Verify OTP
- [x] Logout
- [x] Account creation
- [x] Account deletion (with 15 days cooldown)
- [x] Revert account deletion on login (within 15 days)
- [x] Keep user logged in (through a refresh token)
User Profile
- [x] Informations
- [x] Realmojis
- [ ] Memories
- [ ] Pinned
Others Profile
- [x] Informations
- [ ] Pinned
Upload
- [x] Post a new moment
- [ ] Flip camera
- [x] Take a photo from A side (primary image), wait for a few seconds, then take a photo from B side (secondary image)
- [ ] Caption
- [ ] Location
- [ ] Retry count
- [x] Upload above the daily limit
Feed
- [x] See posts of the current moment
- [x] Comment on a post
- [x] See comments on a post (you can only see a sample, for now)
- [x] See reactions on a post with a list of all reactions when clicking on it
- [x] React to a post with your own reactions
- [x] Open primary/secondary image in your default browser (through image URL)
- [x] See your Friends of Friends feed, even after the latest updates that removed it from the UI
Relationships
- [x] Search
- [x] Listing of friends
- [x] See sent friend requests
- [x] Unsend a sent friend request
- [x] See received friend requests
- [x] Accept a received friend request
- [x] Reject a received friend request
- [x] Send a friend request
- [ ] Unfriend someone
- [ ] Suggestions (mutuals, contacts, ...)
Settings
- [x] Notifications
- [ ] Update region for moments
Advanced
Some advanced features that are not in the original application.
- [ ] Light mode
- [x] Upload from gallery
- [ ] Manual camera (remove delay between primary image and secondary image, letting you to manually take the secondary image)
- [x] Cache today's feed data to device
localStorage(for faster reloading), this is a temporary solution until we implement the task below - [ ] Cache data to device local database (for faster reloading and offline access)
Privacy
Only the necessary data is stored on the device, and the application does not collect any personal information.
- [x] No tracking
- [x] No analytics
- [x] No ads
🛠️ Development
Prerequisites
Follow the instructions on the ↗ Tauri documentation to setup your environment depending on your operating system and target platform.
Also, make sure you have ↗ pnpm installed since it's the package manager used in this project.
Quick start
git clone https://github.com/StayRealHQ/Universal && cd StayReal
# Install dependencies
pnpm install
# Build internal-api
cd internal-api
pnpm install
pnpm build
cd ..
# Patch the wry crate for Android login
cargo install patch-crate
cd src-tauri && cargo patch-crate
cd ..
# Start development on desktop
pnpm tauri dev
# Start development on Android
pnpm tauri android dev
# Start development on iOS, only available on macOS
pnpm tauri ios dev
Build for release
# Build for desktop
pnpm tauri build
# Build for Android
pnpm tauri android build
# Build for iOS, only available on macOS
pnpm tauri ios build
If you want to know more about the pipeline used to build the application, you can check the ↗ GitHub Actions workflow.
Publication to stores
Every release, publication to stores, is triggered by pnpx tauri-version <bump> -m "chore: release v%s" followed by git push --follow-tags so the ↗ release workflow gets triggered by the tag push.
🙏 Acknowledgments
A lot of similar projects and researches have been made, and we would like to thank the authors for their work.
- ↗ BeFake, an API wrapper written in Python
- ↗ TooFake, an alternative web client
- ↗ userbradley's researches
📄 License
StayReal is licensed under the ↗ GNU General Public License v3.0 (GPL-3.0), a copyleft license th
Related Skills
node-connect
352.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
