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.
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
- 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
- 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
- React 18 - Modern React with concurrent features
- TypeScript - Type-safe JavaScript
- Vite - Fast build tool and dev server
- Tailwind CSS - Utility-first CSS framework
- React Router - Client-side routing
- Apollo Client - GraphQL client with caching
- GraphQL - Data query language
- React Helmet - Document head management
- Headless UI - Unstyled, accessible UI components
- Tippy.js - Tooltip library
- Font Awesome - Icon library
- Storybook - Component development environment
- Turborepo - High-performance build system
- pnpm - Fast, disk space efficient package manager
- ESLint - Code linting
- Prettier - Code formatting
- Vitest - Unit testing framework
- @repo/eslint-config - Shared ESLint configurations
- @repo/typescript-config - Shared TypeScript configurations
- Node.js >= 18
- pnpm >= 9.0.0
-
Clone the repository
git clone https://github.com/AlexMachin1997/TheOpenMovieDB-React-Example.git cd TheOpenMovieDB-React-Example -
Install dependencies
pnpm install
-
Start the development server
pnpm dev
-
Open your browser Navigate to
http://localhost:5173
This frontend application requires the GraphQL backend to be running. The backend repository can be found at: TheOpenMovieDB-GraphQL-Example
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 packagescd 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 VitestThis project uses Storybook for component development:
pnpm storybookNavigate to http://localhost:6006 to view the component library.
- ESLint: Configured with shared rules from
@repo/eslint-config - Prettier: Automatic code formatting
- TypeScript: Strict type checking across the project
- Vitest: Fast unit testing framework
- Testing Library: React component testing utilities
- Coverage: Built-in coverage reporting
- ESLint Config - Shared ESLint configurations
- TypeScript Config - Shared TypeScript configurations
- Turborepo Documentation - Monorepo build system
- Vite Documentation - Build tool and dev server
- React Documentation - React library
- Tailwind CSS Documentation - CSS framework
- Storybook Documentation - Component development
We welcome contributions! Please see our Contributing Guidelines for details.
- 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
Found a bug? Please report it here.
Have an idea for a new feature? Please share it here.
This project is licensed under the MIT License - see the LICENSE.md file for details.
Alex Machin
- LinkedIn: Alex Machin
- Twitter: @AlexMachin97
- The Movie Database (TMDB) - For the inspiration and API
- Turborepo - For the excellent monorepo tooling
- Vite - For the fast development experience
- Storybook - For component development tools
- v0.1.0 - Initial release with basic functionality
- Future versions will follow Semantic Versioning
β Star this repository if you found it helpful!

