A Cinematic movie discovery app built with React Native & Expo
| Login | Home | Search |
|---|---|---|
![]() |
![]() |
![]() |
| Details | Favourites | Cast Profile |
|---|---|---|
![]() |
![]() |
![]() |
| Feature | Description |
|---|---|
| 🏠 Home Page | Curated movie sections with animated hero carousel |
| 🔍 Smart Search | Filter by language, sort by rating/year, search cast & directors |
| 🎭 Cast Profiles | Tap any cast member to see their full filmography |
| ❤️ Favorites & Watchlist | Persist your picks across sessions with AsyncStorage |
| ✍️ Reviews | Write, edit, and view reviews per movie — survives logout |
| 👤 Auth System | Sign up / login with local persistence, full form validation |
| 🎬 Splash Screen | Animated logo with zoom-out transition |
| 🌑 Dark Theme | Deep black UI with royal gold accent (#C9A84C) throughout |
cineverse/
├── App.js # Root navigator, splash screen, tab setup
├── screens/
│ ├── HomeScreen.js # Hero carousel + movie sections
│ ├── SearchScreen.js # Search, filter, sort
│ ├── DetailScreen.js # Movie detail, reviews, cast, recommendations
│ ├── CastScreen.js # Cast member profile + filmography
│ ├── FavoritesScreen.js # Favorites & watchlist tabs
│ └── ProfileScreen.js # Auth forms + user profile + review management
├── context/
│ ├── AuthContext.js # Signup/login/logout + AsyncStorage persistence
│ └── FavoritesContext.js # Favorites, watchlist, reviews state
└── data/
└── movies.js # Local movie dataset (add your own!)
# Clone the repository
git clone https://github.com/YOUR_USERNAME/cineverse.git
cd cineverse
# Install dependencies
npm install
# Start the dev server
npx expo startThen scan the QR code with Expo Go (Android) or the Camera app (iOS).
npm install @react-navigation/native @react-navigation/native-stack @react-navigation/bottom-tabs
npm install react-native-safe-area-context react-native-screens
npm install @react-native-async-storage/async-storage
npx expo install expo-status-barMovies live in data/movies.js. Each entry follows this shape:
{
id: 'unique-id',
title: 'Movie Title',
year: 2024,
duration: '2h 30m',
language: 'Hindi', // Used by language filter
director: 'Director Name',
rating: 8.5, // Out of 10
poster: 'https://...', // Poster image URL
backdrop: 'https://...', // Hero backdrop URL (falls back to poster)
description: 'Synopsis...',
genre: ['Action', 'Drama'], // Array — used for tags & recommendations
tags: ['must-watch'], // Optional hashtag chips
keywords: ['bollywood'], // Used for keyword search
cast: [
{ name: 'Actor Name', role: 'Character', photo: 'https://...' }
],
reviews: [
{ user: 'username', rating: 4, text: 'Great film!', date: '1/1/2024' }
]
}- Tags navigation crash — Genre/tag chips on Detail screen now correctly navigate through the nested Tab navigator to Search (
Tabs → Search) - Reviews lost on logout — Reviews are now read directly from the
reviewsstore and displayed regardless of login state;isOwnflag is set only for the current user - Missing signup validation —
AuthContext.signUpnow validates: username length, email format (regex), password min length (6), and duplicate email - Infinite re-render on Favorites screen — Fixed unstable dependency in
useEffectcausing continuous re-renders while updating favorites - Broken image fallback handling — Added default placeholder images when poster/API image URLs fail to load
- Duplicate review submissions — Review submit button is now disabled during async requests to prevent duplicate entries
- Session persistence issue — Authentication state now restores correctly after app restart using persisted local storage
MIT © Ayush Bansal





