Skip to content

Real-time movie collection tracker with Firebase backend, TMDb API integration, and collaborative rating system.

Notifications You must be signed in to change notification settings

jackson-eason/MovieCollection

Repository files navigation

Movie Collection Tracker

A personal movie tracking application built for managing our shared movie collection. Features real-time database updates, TMDb API integration, and collaborative rating system. Includes a public demo mode for showcasing the project.

Live Demo

View Live Application

This is a personal project with a public demo mode for showcasing. Try the demo with these credentials:

  • Username: guest
  • Password: demo

Note: The demo shows sample movies and read-only functionality. The full application is designed for personal use with private movie collections.

Features

  • Real-time Database - Powered by Firebase Firestore with live updates
  • Movie Search - Integration with The Movie Database (TMDb) API for autocomplete search and real posters
  • Dual Categories - "Watched" and "Want to Watch" lists
  • Multi-user Ratings - Individual ratings from multiple users with automatic averaging
  • Read-only Demo - Public demo mode with sample movies for showcasing
  • Responsive Design - Works seamlessly on desktop, tablet, and mobile devices
  • Modern UI - Dark theme with glassmorphic design and smooth animations

Technology Stack

  • Frontend: React 18 (Hooks, Context)
  • Backend: Firebase Firestore (NoSQL database)
  • Hosting: Firebase Hosting
  • API Integration: The Movie Database (TMDb) API
  • Styling: Custom CSS with CSS Grid and Flexbox
  • State Management: React Hooks (useState, useEffect, useCallback)

Getting Started

Prerequisites

  • Node.js 14+ and npm
  • Firebase account (for your own deployment)
  • TMDb API key (optional, for movie search functionality)

Installation

  1. Clone the repository:
git clone https://github.com/yourusername/movie-website.git
cd movie-website
  1. Install dependencies:
npm install
  1. Create a .env file in the root directory (see .env.example):
# TMDb API Key (optional - demo key will be used if not provided)
REACT_APP_TMDB_API_KEY=your_api_key_here

# Private user credentials (optional - for personal use only)
REACT_APP_USER_JACKSON=username:password:DisplayName
REACT_APP_USER_GENNA=username:password:DisplayName
  1. Start the development server:
npm start

The app will open at http://localhost:3000

Building for Production

npm run build

Deploying to Firebase

firebase deploy --only hosting

Project Structure

src/
├── components/
│   ├── LoginScreen.js/css     # Authentication UI
│   ├── Dashboard.js/css       # Main dashboard with movie lists
│   ├── MovieCard.js/css       # Individual movie display card
│   └── AddMovieModal.js/css   # Movie search and add modal
├── firebase.js                # Firebase configuration
├── App.js                     # Main application component
└── index.js                   # Application entry point

firestore.rules                # Database security rules
firebase.json                  # Firebase configuration

Security

This project implements several security measures:

  • Protected Database: Real movie collections are private and inaccessible to the public
  • Demo Mode: Read-only demo collection for showcasing
  • Environment Variables: Sensitive credentials stored in .env (not committed)
  • Firestore Rules: Strict access controls on database collections

See README_SECURITY.md for detailed security documentation.

Features in Detail

Movie Management

  • Add movies with TMDb autocomplete search
  • Automatic poster fetching from TMDb API
  • Move movies between "Watched" and "Want to Watch" lists
  • Delete movies with confirmation

Rating System

  • Individual ratings from multiple users (0-10 scale, decimals allowed)
  • Automatic average calculation
  • Inline editing with save/cancel options
  • Visual rating displays

User Experience

  • Confetti animation when marking movies as watched
  • Loading states and empty state messages
  • Responsive grid layout
  • Smooth transitions and hover effects

Browser Support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)

About This Project

This is a personal movie tracking application built for managing our shared movie collection. The public demo showcases the technical implementation and user interface, while the full application is designed for private use with personal movie data.

Contributing

This is a personal project, but suggestions and feedback are welcome. Feel free to open an issue for any bugs or feature requests.

License

This project is open source and available under the MIT License.

Acknowledgments

About

Real-time movie collection tracker with Firebase backend, TMDb API integration, and collaborative rating system.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published