Skip to content

SameerArora497/Wavee

Repository files navigation

Wavee

Hindi-first streaming app for India, built with React Native. The mobile client renders a curated catalog of titles mapped to legally embeddable YouTube videos. Backend (Laravel CMS + REST API) lives in a separate repo:

Stack

  • React Native CLI (JavaScript, no Expo)
  • Redux Toolkit
  • Firebase Auth (Google + Apple sign-in) → Laravel Sanctum bearer
  • react-native-youtube-iframe for playback
  • react-native-mmkv for local persistence
  • AdMob via react-native-google-mobile-ads
  • Lucide icons

Prerequisites

  • Node.js >= 22
  • React Native CLI environment (guide)
  • Xcode + CocoaPods (iOS)
  • Android Studio (Android)
  • A running Wavee backend (locally or hosted)
  • A Firebase project (Google + Apple sign-in enabled)
  • Optional: AdMob account (the app falls back to TestIds if you skip this)

Setup

git clone https://github.com/<you>/Wavee.git
cd Wavee
npm install --legacy-peer-deps

1. Firebase config

Drop your Firebase project files into the repo (both are gitignored):

# Android
cp android/app/google-services.json.example android/app/google-services.json
# Then replace contents with the real file from Firebase Console
# (Project Settings → Your apps → Android → google-services.json).

# iOS
cp ios/WaveeApp/GoogleService-Info.plist.example ios/WaveeApp/GoogleService-Info.plist
# Then replace contents with the real file from Firebase Console
# (Project Settings → Your apps → iOS → GoogleService-Info.plist).

Then fill in three constants in src/services/firebaseAuth.js:

  • APPLE_SERVICES_ID — Apple "Services ID" (for Sign in with Apple on Android)
  • APPLE_REDIRECT_URIhttps://<your-firebase-project-id>.firebaseapp.com/__/auth/handler
  • GOOGLE_WEB_CLIENT_ID — OAuth 2.0 Web client id from Google Cloud console

2. Backend URL

Edit src/api/config/buildConfig.js so DOMAINS.local points at your dev backend (use your LAN IP, not localhost, when running on a physical device) and DOMAINS.live points at your production backend.

3. AdMob (optional)

If you skip this step, the app uses Google's public TestIds in every build (placeholder ads, no earnings).

cp src/config/adConfig.local.example.js src/config/adConfig.local.js
# Edit adConfig.local.js with your real ad unit ids from
# AdMob Console → Ad units. The .local file is gitignored.

4. iOS pods

cd ios && bundle install && bundle exec pod install && cd ..

Running

# Metro
npm start

# iOS
npm run ios

# Android
npm run android

Project structure

src/
  api/             — HTTP client, endpoints, auth headers, env config
  components/      — Shared UI (home rows, posters, action bars, ad banner)
  config/          — Ad unit ids
  navigation/      — Stack + bottom-tabs root
  screens/         — Login, Home, Discover, Watchlist, Profile, Detail, WebView
  services/        — Firebase auth, MMKV storage
  specs/           — TurboModule JS specs (codegen)
  store/           — Redux slices
  utils/           — Theme, dayjs helpers, dimensions

Design system

  • Font: Inter
  • Primary: #aaffdc
  • Background: #0e0e0e
  • Surface tones: #131313#191919#1f1f1f#262626
  • Icons: Lucide (stroke width 1.5)
  • Tonal separation, no borders

License

MIT — see LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors