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.
Explore the full MovieMate experience:
- β¨ Features
- π Technologies Used
- πΊοΈ Architecture
- π¦ Installation
- βοΈ Configuration
- π API Keys
- π Database Setup
- π Running the Application
- π Project Structure
- π‘ API Overview
- π¨βπΌ Contributors
- 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.
- 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.
- 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.
- Handlebars (HBS)
- JavaScript
- Bootstrap 5
- CSS
- Socket.IO (client)
- Node.js
- Express.js
- PostgreSQL (via
pg-promise) - Socket.IO (server)
- bcryptjs (secure password hashing)
- express-session (authentication session handling)
- OMDb API β for movie metadata
- YouTube Data API β for trailers
- Node.js (v14+)
- PostgreSQL
- Docker + Docker Compose (optional but recommended)
-
Clone the Repository
git clone https://github.com/yourusername/moviemate.git cd moviemate -
Install Node.js Dependencies
npm install
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- Visit OMDb API Key Request
- Add your key to
.envunderOMDB_API_KEY
- Go to Google Cloud Console
- Enable YouTube Data API v3
- Generate an API key and add to
.envunderYOUTUBE_API_KEY
The schema and initial data are located in:
src/init_data/create.sqlsrc/init_data/insert.sql
If using Docker Compose, these scripts will be executed automatically.
docker-compose upThen visit: http://localhost:3000
- Start PostgreSQL and ensure credentials match
.env - Start the app:
npm start
- App will run at http://localhost:3000
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
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
| 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 |

