Movie Verse is a mobile application built with Expo that allows users to discover, search for, and view details about movies. The app features sections for the latest movies, trending movies, and individual movie details, all powered by The Movie Database (TMDB) API and Appwrite for analytics.
- Overview
- Features
- Installation
- Running the Project
- Screenshots
- Project Structure
- Technologies
- License
Movie Verse provides a seamless experience for movie enthusiasts. Users can:
- Browse trending and latest movies.
- Search for movies with a debounced search bar.
- View movie details including overview, genres, budget, and cast information.
- Enjoy smooth transitions with file-based routing powered by Expo Router.
- Search Functionality: Instant search with debouncing (
components/SearchBar.tsx). - Trending Movies: Displays a list of trending movies, updated based on search count analytics (
services/appwrite.tsx). - Movie Details: In-depth details for each movie (
app/movies/[id].tsx). - Responsive UI: Custom styling with Nativewind and Tailwind CSS (
tailwind.config.js). - Routing: File-based routing with Expo Router (
app/_layout.tsx,.expo/types/router.d.ts).
-
Clone the repository:
git clone https://github.com/sachinkg-13/Movie-Verse.git
-
Navigate to the project directory:
cd mobile-movie-app -
Install dependencies:
npm install
Start the development server with:
npm startThen follow the prompts to run the project on your preferred simulator or device:
- Android:
npm run android - iOS:
npm run ios - Web:
npm run web
Below are some screenshots of the app in action:
|
|
|
|
|
Note: Replace the paths above with the actual paths of your screenshot images.
.
├── app
│ ├── _layout.tsx // Root navigation layout ([`app/_layout.tsx`](app/_layout.tsx))
│ ├── onboarding.tsx // Onboarding screen ([`app/onboarding.tsx`](app/onboarding.tsx))
│ └── (tabs)
│ ├── index.tsx // Home screen with trending and latest movies ([`app/(tabs)/index.tsx`](app/(tabs)/index.tsx))
│ ├── search.tsx // Search screen ([`app/(tabs)/search.tsx`](app/(tabs)/search.tsx))
│ ├── saved.tsx // Saved movies screen ([`app/(tabs)/saved.tsx`](app/(tabs)/saved.tsx))
│ └── profile.tsx // Profile screen ([`app/(tabs)/profile.tsx`](app/(tabs)/profile.tsx))
├── assets
│ ├── images // Background images and screenshots ([`assets/images`](assets/images))
│ └── fonts
├── components
│ ├── MovieCard.tsx // Movie card component ([`components/MovieCard.tsx`](components/MovieCard.tsx))
│ ├── SearchBar.tsx // Search bar component ([`components/SearchBar.tsx`](components/SearchBar.tsx))
│ └── TrendingCard.tsx // Trending movie card component ([`components/TrendingCard.tsx`](components/TrendingCard.tsx))
├── constants
│ ├── icons.ts // Icon assets ([`constants/icons.ts`](constants/icons.ts))
│ └── images.ts // Image assets ([`constants/images.ts`](constants/images.ts))
├── services
│ ├── api.tsx // API integration for fetching movies ([`services/api.tsx`](services/api.tsx))
│ ├── appwrite.tsx // Appwrite services for analytics ([`services/appwrite.tsx`](services/appwrite.tsx))
│ └── useFetch.ts // Custom hook for data fetching ([`services/useFetch.ts`](services/useFetch.ts))
├── interfaces
│ └── interfaces.d.ts // TypeScript interfaces ([`interfaces/interfaces.d.ts`](interfaces/interfaces.d.ts))
├── .expo
│ └── types
│ └── router.d.ts // Expo Router type definitions ([`.expo/types/router.d.ts`](.expo/types/router.d.ts))
├── package.json
├── tsconfig.json
└── tailwind.config.js
- Expo & React Native: For building native mobile apps.
- Expo Router: For file-based navigation.
- Nativewind & Tailwind CSS: For styling.
- Appwrite: For backend services and analytics.
- TMDB API: For movie data.
This project is licensed under the MIT License. See the LICENSE file for details.