A modern React Native mobile application for discovering and managing your favorite movies. Built with production-ready architecture, Redux Toolkit state management, and TMDB API integration.
- Authentication: Secure login/registration with encrypted password storage
- Movie Discovery: Browse trending, popular, and upcoming movies
- Search: Real-time movie search with debounced input
- Favorites: Save and manage favorite movies with local persistence
- Movie Details: Comprehensive information with ratings, cast, and trailers
- Dark Mode: Light/dark theme with persistent preference
- Profile Management: View profile and manage app settings
- Framework: React Native with Expo
- State Management: Redux Toolkit
- Navigation: React Navigation 7.x
- Storage: Expo SecureStore & AsyncStorage
- Form Validation: Yup
- Password Security: bcryptjs
- Testing: Jest & React Native Testing Library
- API: TMDB (Movies), DummyJSON (Auth Demo)
- Node.js (v14+)
- Expo CLI
- iOS Simulator or Android Emulator
- TMDB API Key (Get free key)
- Clone the repository
git clone <repository-url>
cd StreamBox- Install dependencies
npm install- Configure environment variables
Create a .env file in the root directory:
TMDB_API_KEY=your_api_key_here
TMDB_BASE_URL=https://api.themoviedb.org/3
TMDB_IMAGE_BASE_URL=https://image.tmdb.org/t/p
AUTH_API_URL=https://dummyjson.com- Start the app
npm start- Run on device
- iOS: Press
ior scan QR with Expo Go - Android: Press
aor scan QR with Expo Go
StreamBox/
├── src/
│ ├── components/ # Reusable UI components
│ ├── features/ # Feature modules (auth, movies, favorites)
│ ├── hooks/ # Custom React hooks
│ ├── navigation/ # Navigation setup
│ ├── screens/ # Screen components
│ ├── services/ # API & storage services
│ ├── store/ # Redux slices
│ ├── config/ # App configuration
│ ├── utils/ # Utilities & helpers
│ └── theme/ # Theme configuration
├── .env # Environment variables (create this)
├── babel.config.js
└── package.json
Demo Credentials:
- Username:
emilys - Password:
emilyspass
Or create a new account (passwords are encrypted with bcrypt).
npm start # Start development server
npm run android # Run on Android
npm run ios # Run on iOS
npm test # Run tests
npm run lint # Lint code- ✅ Environment-based API key management
- ✅ bcrypt password encryption (10 rounds)
- ✅ Secure token storage with Expo SecureStore
- ✅ Production-safe logging system
- ✅ React.memo for component optimization
- ✅ useCallback & useMemo hooks
- ✅ Skeleton loading animations
- ✅ Debounced search input
- ✅ API request timeout (15s)
- ✅ Feature-based architecture
- ✅ Custom hooks pattern
- ✅ Redux Toolkit state management
- ✅ Comprehensive test coverage
- ✅ Error boundaries
- ✅ TypeScript type definitions
Educational project.
Built with ❤️ using React Native & Expo