Skip to content

nehabykadi/MovieMate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

400 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MovieMate

πŸŽ₯ MovieMate

MovieMate is a full-featured social media platform for movie lovers. Create a profile, connect with friends, review films, and explore trending movies β€” all in one place.


🌐 Live App & Demo Video

Explore the full MovieMate experience:

🌐 Live App | 🎬 Demo Video


πŸ“š Table of Contents


✨ Features

πŸ‘€ User Management

  • Register & Authenticate: Sign up with a username, password, and profile info.
  • Edit Profiles: Update bios, profile images, and account details.
  • Follow System: Send/receive follow requests and build your movie circle.

πŸŽ₯ Movie Discovery & Interaction

  • Explore Movies: Browse popular, trending, and new movie releases.
  • Smart Search: Filter by title, genre, cast, or director.
  • Detailed View: Dive into cast, plot, ratings, and trailers.
  • Watchlist: Keep track of movies you plan to watch.
  • Reviews & Ratings: Share personal takes and see what others thought.

πŸ“± Social Features

  • News Feed: See what your friends are watching and reviewing.
  • Comments & Likes: Interact on movie posts.
  • Notifications: Stay updated on social activity.
  • Real-time Chat: Talk movies with friends instantly via built-in messaging.

πŸ›  Technologies Used

βš™οΈ Stack Summary


Frontend

  • Handlebars (HBS)
  • JavaScript
  • Bootstrap 5
  • CSS
  • Socket.IO (client)

Backend

  • Node.js
  • Express.js
  • PostgreSQL (via pg-promise)
  • Socket.IO (server)
  • bcryptjs (secure password hashing)
  • express-session (authentication session handling)

External APIs

  • OMDb API – for movie metadata
  • YouTube Data API – for trailers

πŸ—ΊοΈ Architecture

image


πŸ“¦ Installation

Prerequisites

  • Node.js (v14+)
  • PostgreSQL
  • Docker + Docker Compose (optional but recommended)

Setup Steps

  1. Clone the Repository

    git clone https://github.com/yourusername/moviemate.git
    cd moviemate
  2. Install Node.js Dependencies

    npm install

βš™οΈ Configuration

Create a .env file at the root with the following content:

# PostgreSQL Config
POSTGRES_USER=your_postgres_user
POSTGRES_PASSWORD=your_postgres_password
POSTGRES_DB=moviemate_db
HOST=db

# Session Config
SESSION_SECRET=your_session_secret

# External API Keys
OMDB_API_KEY=your_omdb_api_key
YOUTUBE_API_KEY=your_youtube_api_key

πŸ”‘ API Keys

OMDb API

  1. Visit OMDb API Key Request
  2. Add your key to .env under OMDB_API_KEY

YouTube Data API

  1. Go to Google Cloud Console
  2. Enable YouTube Data API v3
  3. Generate an API key and add to .env under YOUTUBE_API_KEY

πŸ—ƒ Database Setup

The schema and initial data are located in:

  • src/init_data/create.sql
  • src/init_data/insert.sql

If using Docker Compose, these scripts will be executed automatically.


πŸš€ Running the Application

πŸ”§ Option 1: Docker Compose (Recommended)

docker-compose up

Then visit: http://localhost:3000

πŸ’» Option 2: Manual Setup

  1. Start PostgreSQL and ensure credentials match .env
  2. Start the app:
    npm start
  3. App will run at http://localhost:3000

πŸ“ Project Structure

moviemate/
β”œβ”€β”€ docker-compose.yaml         # Docker config
β”œβ”€β”€ package.json                # App metadata and scripts
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ api/                    # External API integrations (OMDb, YouTube)
β”‚   β”œβ”€β”€ config/                 # Configuration files
β”‚   β”œβ”€β”€ controllers/            # Route handlers and logic
β”‚   β”œβ”€β”€ init_data/              # SQL schema and seed data
β”‚   β”œβ”€β”€ resources/              # Static assets (JS, CSS, images)
β”‚   β”œβ”€β”€ views/                  # Handlebars templates
β”‚   β”‚   β”œβ”€β”€ layouts/            # HTML layout templates
β”‚   β”‚   β”œβ”€β”€ pages/              # Page-specific HBS templates
β”‚   β”‚   └── partials/           # Reusable UI components
β”‚   └── index.js                # Entry point for server

πŸ“‘ API Overview

MovieMate includes a robust set of RESTful API routes that power features like user authentication, movie discovery, reviews, and messaging.

Key API groups:

  • /api/movies/ – Search, details, watchlists, reviews, and trailers
  • /api/users/ – Register, login, logout, profile management
  • /api/social/ – Follow users, post reviews, and real-time messaging

πŸ‘¨β€πŸ’Ό Contributors

NAME CU-EMAIL GITHUB USERNAME
Neha Ramachandra nera4157@colorado.edu nehabykadi
Conner Groth conner.groth@colorado.edu connergroth
Joe Zakrzewski joe.zakrzewski@colorado.edu joe-z-school
Lizzie Ruff lizzie.ruff@colorado.edu liru4345
Maeve Pettey maeve.pettey@colorado.edu maevePettey
Ella Pasternak ella.pasternak@colorado.edu elpaster

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors