Skip to content

tim177/movie-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

26 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Œ Project README Template


🎬 Movie App

A React-based movie exploration app with Firebase authentication, Firestore integration, and a dynamic UI powered by Mantine and NextUI.

Movie App Screenshot


πŸ“– Table of Contents


πŸš€ Features

βœ”οΈ Movie Details Page – View full details, ratings, summary.
βœ”οΈ Carousel & Hero Section – Dynamic movie carousels with a featured section.
βœ”οΈ Authentication – Firebase authentication with role-based access control.
βœ”οΈ Firestore Integration – Store user preferences, watchlists, and favorites.
βœ”οΈ Dark Mode – Customizable theme switching.
βœ”οΈ Mantine Components – Modern UI elements from Mantine & NextUI.


πŸ›  Tech Stack

πŸ“Œ Frontend:

  • React.js – UI library
  • Mantine v6 – UI components
  • React Query – Data fetching & caching
  • TypeScript – Strict type checking
  • Zustand – State management
  • Framer Motion – Animations

πŸ›’ Backend:

  • Firebase Authentication – Secure login
  • Firestore Database – NoSQL data storage

πŸ“¦ Installation

πŸ”Ή Prerequisites

Before you begin, ensure you have the following installed:

  • Node.js (v20+) βœ…
  • Yarn or npm βœ…
  • Firebase CLI βœ…

πŸ”Ή Clone the Repository

git clone https://github.com/tim177/movie-app.git
cd movie-app

πŸ”Ή Install Dependencies

yarn install
# OR
npm install

πŸ”Ή Run the App

yarn dev
# OR
npm run dev

Your app should now be running at http://localhost:3000 πŸŽ‰


βš™οΈ Configuration

πŸ”Ή Set Up Firebase

  1. Create a Firebase project at Firebase Console.
  2. Enable Authentication (Email & Password).
  3. Set up Firestore with required collections.
  4. Copy your Firebase config and add it to .env.local:
NEXT_PUBLIC_FIREBASE_API_KEY=your-api-key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your-auth-domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your-project-id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your-storage-bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your-messaging-sender-id
NEXT_PUBLIC_FIREBASE_APP_ID=your-app-id

πŸ”§ Usage

πŸ”Ή Viewing Movie Details

  • Click on any movie to see its full details, including rating, description, and trailers.

πŸ”Ή Authentication

  • Users can sign up, log in, and manage their watchlists.

πŸ“‚ Project Structure

πŸ“¦ movie-app
 ┣ πŸ“‚ src
 ┃ ┣ πŸ“‚ api             # Functions for API requests and data fetching
 ┃ ┣ πŸ“‚ assets          # Static assets like images, icons, and fonts
 ┃ ┣ πŸ“‚ components      # Reusable UI components (buttons, cards, modals, etc.)
 ┃ ┣ πŸ“‚ config          # Configuration files (e.g., app settings, API base URLs)
 ┃ ┣ πŸ“‚ constants       # Global constants and enums used throughout the app
 ┃ ┣ πŸ“‚ contexts        # React Context API implementations for global state
 ┃ ┣ πŸ“‚ hooks           # Custom hooks for reusable logic (e.g., fetching, authentication)
 ┃ ┣ πŸ“‚ pages           # Page components used in React Router
 ┃ ┣ πŸ“‚ routes          # Application routing setup and protected routes
 ┃ ┣ πŸ“‚ services        # Business logic and API service functions
 ┃ ┣ πŸ“‚ store           # Zustand state management setup
 ┃ ┣ πŸ“‚ style           # Global and component-specific styles
 ┃ ┣ πŸ“‚ theme           # Theme configurations (colors, typography, Mantine/Styled Components)
 ┃ ┣ πŸ“‚ types           # TypeScript interfaces and type definitions
 ┃ ┣ πŸ“‚ util            # Utility functions and helpers
 ┃ ┣ πŸ“œ App.tsx         # Main App component handling global layout and providers
 ┃ ┣ πŸ“œ main.tsx        # Entry point that renders the App component
 ┃ β”— πŸ“œ index.css       # Global styles and CSS resets
 ┣ πŸ“œ .env.local        # Environment variables for API keys and secrets
 ┣ πŸ“œ package.json      # Project dependencies, scripts, and metadata
 β”— πŸ“œ README.md         # Project documentation and setup instructions

πŸ“Έ Screenshots

Login

email: user1@use.com password: password

πŸ”Ή Homepage

Example screenshot of homepage UI
Homepage

πŸ”Ή Movie Details Page

Example screenshot of movie details page
Movie Details


πŸ“£ API References

This app uses the TMDB API for fetching movies.

πŸ”Ή Endpoints Used

  • πŸ” GET /trending/all/week – Fetch trending movies & shows
  • πŸ” GET /popular/all/week – Fetch popular movies & shows
  • πŸ” GET /top-rated/all/week – Fetch top-rated movies & shows
  • 🎬 GET /movie/{movie_id} – Get movie details
  • πŸ“Ί GET /tv/{tv_id} – Get TV show details

API Docs: TMDB API Documentation


🎯 Future Enhancements

πŸ”Ή User Reviews & Ratings – Allow users to submit reviews.
πŸ”Ή Chat Service – Useres can comment and give review about movie.
πŸ”Ή Google Based Auth – User can authenticate using google account.
πŸ”Ή Home Page – Come up with ideas to design the homepage completely.
πŸ”Ή Integrate Stripe – Just to test and have fun✌🏻.


πŸ“ License

This project is licensed under the MIT License.


πŸ“© Contact

πŸ“§ Email: timaraw18@gmail.com πŸ”— GitHub: tim177


πŸš€ Enjoy using Movie App! 🍿🎬

Releases

No releases published

Packages

No packages published