Skip to content

A Progressive Web Application (PWA) to allow users to quickly search for movies, tv shows and various celebrities.

License

Notifications You must be signed in to change notification settings

AlexMachin1997/TheOpenMovieDB-React-Example

Repository files navigation

TheOpenMovieDB-React-Example

TheOpenMovieDB-React-Example

🎬 The Open Movie Database Clone - React Monorepo πŸš€

πŸ“– About

A modern React-based clone of The Movie Database (TMDB) built as a monorepo using Turborepo and pnpm. This project demonstrates best practices for building scalable React applications with shared configurations and components.

Example of The OpenMovieDB Web App

πŸ—οΈ Project Structure

This monorepo is organized using Turborepo for efficient build orchestration and pnpm for package management.

TheOpenMovieDB-React-Example/
β”œβ”€β”€ apps/
β”‚   └── the-open-movie-database/     # Main React application
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ eslint-config/               # Shared ESLint configurations
β”‚   └── typescript-config/          # Shared TypeScript configurations
β”œβ”€β”€ turbo.json                       # Turbo configuration
β”œβ”€β”€ pnpm-workspace.yaml             # pnpm workspace configuration
└── package.json                    # Root package.json

πŸš€ Features

Core Functionality

  • Movie & TV Show Search: Comprehensive search across movies, TV shows, and celebrities
  • Category Browsing: Browse by Popular, Airing Today, Upcoming, and more
  • Detailed Views: Rich detail pages for movies, TV shows, and celebrities
  • Advanced Filtering: Filter celebrities by media type and department
  • Discovery System: Interactive sidebar with advanced filtering options
  • Offline Support: Apollo InMemoryCache for offline content viewing
  • Theme Switching: Dark and light theme support

Development Features

  • Monorepo Architecture: Efficient development with shared configurations
  • Component Library: Storybook for component development and documentation
  • Type Safety: Full TypeScript support across the project
  • Code Quality: ESLint and Prettier for consistent code style
  • Testing: Comprehensive test suite with Vitest
  • Modern Build: Vite for fast development and optimized builds

πŸ› οΈ Technology Stack

Core Technologies

State Management & Data

UI & Components

Development Tools

  • Turborepo - High-performance build system
  • pnpm - Fast, disk space efficient package manager
  • ESLint - Code linting
  • Prettier - Code formatting
  • Vitest - Unit testing framework

Shared Packages

πŸš€ Getting Started

Prerequisites

  • Node.js >= 18
  • pnpm >= 9.0.0

Installation

  1. Clone the repository

    git clone https://github.com/AlexMachin1997/TheOpenMovieDB-React-Example.git
    cd TheOpenMovieDB-React-Example
  2. Install dependencies

    pnpm install
  3. Start the development server

    pnpm dev
  4. Open your browser Navigate to http://localhost:5173

Backend Setup

This frontend application requires the GraphQL backend to be running. The backend repository can be found at: TheOpenMovieDB-GraphQL-Example

πŸ“œ Available Scripts

Root Commands

pnpm dev          # Start development server
pnpm build         # Build all packages and applications
pnpm lint          # Run ESLint across all packages
pnpm prettier      # Format code with Prettier
pnpm check-types   # Run TypeScript type checking
pnpm test          # Run tests across all packages

App-specific Commands

cd apps/the-open-movie-database

pnpm dev          # Start Vite development server
pnpm build        # Build for production
pnpm storybook    # Start Storybook development server
pnpm test         # Run tests with Vitest

πŸ§ͺ Development

Component Development

This project uses Storybook for component development:

pnpm storybook

Navigate to http://localhost:6006 to view the component library.

Code Quality

  • ESLint: Configured with shared rules from @repo/eslint-config
  • Prettier: Automatic code formatting
  • TypeScript: Strict type checking across the project

Testing

  • Vitest: Fast unit testing framework
  • Testing Library: React component testing utilities
  • Coverage: Built-in coverage reporting

πŸ“š Documentation

Package Documentation

External Resources

🀝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

How to Contribute

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Reporting Issues

Found a bug? Please report it here.

Feature Requests

Have an idea for a new feature? Please share it here.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE.md file for details.

πŸ‘¨β€πŸ’» Author

Alex Machin

πŸ™ Acknowledgments

πŸ“ˆ Version History

  • v0.1.0 - Initial release with basic functionality
  • Future versions will follow Semantic Versioning

⭐ Star this repository if you found it helpful!

About

A Progressive Web Application (PWA) to allow users to quickly search for movies, tv shows and various celebrities.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published