Skip to content

A mobile-friendly web app for exploring movies with features like Infinite Scroll, Lazy Loading, Internationalization, Loading Skeletons, Hash Routing and Local Storage for favorites 🍿🎬

License

Notifications You must be signed in to change notification settings

jsurrea/TheMoviePlace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

27 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TheMoviePlace

Overview

TheMoviePlace is an advanced web application designed with a mobile-first approach and responsive design. The project leverages several sophisticated features to provide users with a seamless and feature-rich experience for exploring and interacting with movie data.

Hero

Features

1. Infinite Scroll

TheMoviePlace implements an Infinite Scroll mechanism, allowing users to seamlessly load additional content as they scroll down the page. A singleton Intersection Observer efficiently handles the scroll behavior, providing a fluid browsing experience. (Take a look at the scroll bar!)

InfiniteScroll.mov

2. Lazy Loading with Intersection Observer

Lazy loading is employed using the Intersection Observer API to load images only when they enter the user's viewport. This optimization enhances performance by reducing initial page load times. In the following clip, notice the moment at which each image is loaded:

LazyLoading.mov

3. Local Storage for Favorites

User preferences, specifically favorite movies, are stored locally using the browser's localStorage. This feature ensures that users can maintain their list of favorite movies even when revisiting the application or refreshing the page.

Favorites.mov

4. Axios for API Interaction

TheMoviePlace utilizes the Axios library to make HTTP requests to TheMovieDB API. Axios simplifies asynchronous request handling, providing a clean and efficient way to communicate with the external API. This integration allows TheMoviePlace to have the latest information available for the user automatically.

5. Hash Routing with Query Parameters

Hash routing is implemented for seamless navigation within the single-page application (SPA). Hash fragments in the URL are used to switch between different views, such as trending movies, search results, movie details, and category-specific movie lists. Query parameters facilitate specific actions, such as movie searches. Take a look to the address bar in the following demonstration:

HashRouting.mov

6. Internationalization

The application supports internationalization by providing a language switcher. Users can choose from different language options, and the content dynamically updates to match the selected language. Language preferences are stored locally for a personalized experience.

Languages.mov

7. Loading Skeletons

Loading skeletons are incorporated to enhance the user experience during data retrieval. These placeholders mimic the structure of the content being loaded, providing users with visual feedback on progress and responsiveness.

Loading.Skeletons.mov

8. Defaults for Missing Values

The application gracefully handles missing values, such as unavailable movie posters. Default covers and text are displayed, ensuring a polished and informative user interface.

9. Mobile-First, Responsive Design

TheMoviePlace follows a mobile-first design philosophy, ensuring accessibility and visual appeal across various devices. The responsive design guarantees a consistent and user-friendly experience on desktops, tablets, and smartphones.

10. High Performance

This web application was evaluated using Lighthouse, ensuring that it delivers a seamless performance experience to its users.

Lighthouse

Getting Started

To run TheMoviePlace locally, follow these steps:

  1. Clone the repository
  2. Open the project directory: cd TheMoviePlace
  3. Launch a local development server (e.g., using VS Code's Live Server extension).
  4. Access the application in your web browser at http://localhost:<port>

Dependencies

Acknowledgments

License

This project is licensed under the MIT License - see the LICENSE file for details. Feel free to use it as a starting point for implementing these features yourself!

About

A mobile-friendly web app for exploring movies with features like Infinite Scroll, Lazy Loading, Internationalization, Loading Skeletons, Hash Routing and Local Storage for favorites 🍿🎬

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published