mirror of
https://github.com/SrIzan10/helium.git
synced 2026-06-22 08:22:18 +00:00
*Total -- 391.49kb -> 351.99kb (10.09%) /native-app/assets/images/splash-icon-dark.png -- 51.29kb -> 17.55kb (65.77%) /native-app/assets/images/logo-white.svg -- 0.59kb -> 0.53kb (10.4%) /native-app/assets/images/logo-brand.svg -- 0.59kb -> 0.53kb (9.9%) /app/assets/logo.svg -- 0.60kb -> 0.54kb (9.82%) /native-app/assets/images/icon.png -- 1.17kb -> 1.08kb (7.68%) /native-app/assets/images/adaptive-icon.png -- 28.69kb -> 28.03kb (2.29%) /native-app/assets/images/adaptive-icon-monochrome.png -- 28.69kb -> 28.03kb (2.29%) /build/icon.png -- 139.01kb -> 136.80kb (1.59%) /native-app/assets/images/splash-icon.png -- 140.86kb -> 138.89kb (1.4%) Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
Helium Native (Expo + React Native)
Simple React Native streamer app that:
- Authenticates with Clerk (
@clerk/clerk-expo) - Fetches your Helium presets from
/api/presets - Loads selected preset ICE servers from
/api/presets/:id - Captures Android screen with
getDisplayMedia() - Hosts a room on
/ws/signalingand streams to connected viewers - Uses matching light/dark palette semantics from the Helium web app
- Includes built-in i18n for English and Spanish based on device locale
Auth implementation notes (from Clerk docs via Context7)
This app follows Clerk Expo guidance:
- Wrap app with
ClerkProvider - Use secure
tokenCachefrom@clerk/clerk-expo/token-cache - Configure
EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY - Use
useSignIn()andsetActive()for email/password sign-in - Use
useAuth()for sign-out and auth state gating
Environment variables
Create native-app/.env:
EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxx
EXPO_PUBLIC_HELIUM_BASE_URL=https://helium.srizan.dev
Install
pnpm -C native-app install
Run on Android
react-native-webrtc requires native modules, so use a development build:
pnpm -C native-app prebuild
pnpm -C native-app android
Host signaling protocol wired
Implemented in native-app/src/hooks/useHeliumStreamer.ts:
- send
create-room - receive
viewer-joined - create peer connection with selected preset
iceServers - send
offerfor each viewer - receive
answer - exchange
ice-candidate - handle
viewer-left - heartbeat with
pingevery 15s