A full-stack web application for organizing and managing your movie and TV show viewing experience. Create personalized lists, search for content, track what you've watched, and intelligently organize episodes and movies from multiverse series in proper viewing order.
- User Authentication: Secure sign-up and login system
- Intelligent Content Organization: Automatically organize episodes and movies from multiverse series in proper viewing order
- Personalized Lists: Create and manage multiple custom lists with smart sorting
- Content Search: Search for movies and TV shows using The Movie Database (TMDB) API
- Detailed Tracking:
- Mark content as watched/unwatched
- Add TV show seasons and episodes
- Track individual episodes within seasons
- Maintain chronological order across interconnected series
- Smart Sorting: Content is automatically sorted by release date, media type, and title for optimal viewing experience
- React 19 with Vite for fast development
- Apollo Client for GraphQL state management
- React Router for navigation
- CSS for styling
- Node.js with Express
- GraphQL with Apollo Server
- MongoDB with Mongoose ODM
- Passport.js for authentication
- Express Sessions for session management
- The Movie Database (TMDB) for movie and TV show data
- Node.js (v16 or higher)
- MongoDB database
- TMDB API key
-
Clone the repository
git clone https://github.com/YourUsername/binge-o-matic.git cd binge-o-matic -
Install dependencies
npm install
-
Set up environment variables Create a
.envfile in the root directory:MONGO_URI=your_mongodb_connection_string SECRET=your_session_secret API_KEY=your_tmdb_api_key NODE_ENV=development PORT=3001
-
Start the development server
npm start
This will start both the backend server (port 3001) and frontend development server concurrently.
-
Open your browser Navigate to
http://localhost:5173to view the application.
npm start- Starts both server and client in development modenpm run server- Starts only the backend servernpm run client- Starts only the frontend development servernpm test- Runs the test suitenpm run test:watch- Runs tests in watch modenpm run test:coverage- Runs tests with coverage reportnpm run lint- Lints the codebasenpm run lint:fix- Fixes linting issues automatically
binge-o-matic/
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── queries/ # GraphQL queries
│ │ ├── mutations/ # GraphQL mutations
│ │ └── assets/ # Static assets
│ └── public/ # Public assets
├── server/ # Node.js backend
│ ├── models/ # Mongoose models
│ ├── schema/ # GraphQL schema
│ ├── services/ # Business logic
│ └── helpers/ # Utility functions
├── coverage/ # Test coverage reports
└── package.json # Root package configuration
- Multiverse Series Support: Automatically organizes movies and episodes from interconnected series (like Marvel, DC, Star Wars, etc.) in proper chronological viewing order
- Smart Sorting Algorithm: Content is sorted by release date first, then by media type priority (movies → TV shows → seasons → episodes), and finally alphabetically by title
- Cross-Series Continuity: Maintain proper viewing order even when content spans multiple franchises or series
- Create custom lists with unique names for different genres, franchises, or viewing goals
- Add movies and TV shows from TMDB search results
- Mark items as watched or unwatched
- Delete items from lists
- Content automatically maintains optimal viewing order
- Add entire TV shows to your list
- Expand shows to view individual seasons
- Further expand seasons to see individual episodes
- Track progress at the episode level
- Real-time search through TMDB's extensive database
- Filter results by movies, TV shows, or all content
- View detailed information including release dates and posters
The project includes comprehensive testing with Jest and React Testing Library:
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Generate coverage report
npm run test:coverageThe application is configured for deployment on platforms like Heroku:
- Heroku Setup: The
Procfileandheroku-postbuildscript are included - Docker: A
Dockerfileis provided for containerized deployment - Fly.io: Configuration file
fly.tomlis included
Make sure to set these environment variables in your production environment:
MONGO_URISECRETAPI_KEYNODE_ENV=production
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
The application uses GraphQL for API communication. The GraphQL Playground is available at /graphql in development mode for exploring the schema and testing queries.
- Queries: Fetch user data, lists, and media information
- Mutations: Create/update/delete lists, add/remove media, toggle watched status
- Authentication: Login, logout, and user registration
This project is licensed under the ISC License.
- The Movie Database (TMDB) for providing the movie and TV show data
- React and Apollo GraphQL communities for excellent documentation and tools
Happy binge-watching! 🍿