All Projects → nk11dev → movies

nk11dev / movies

Licence: MIT License
Real world isomorphic application for movies search, based on Webpack 5 / Express / React 17 + Redux-Saga / Bootstrap 4.6 + CSS Modules / i18next / SSR

Programming Languages

javascript
184084 projects - #8 most used programming language
SCSS
7915 projects

Projects that are alternatives of or similar to movies

Hapi React Hot Loader Example
Simple React Hot Loading example with Hapi Server-side rendering
Stars: ✭ 44 (+120%)
Mutual labels:  isomorphic, redux-saga, ssr, server-side-rendering
Typescript Hapi React Hot Loader Example
Simple TypeScript React Hot Loading example with Hapi Server-side rendering
Stars: ✭ 44 (+120%)
Mutual labels:  isomorphic, redux-saga, ssr, server-side-rendering
Razzle Material Ui Styled Example
Razzle Material-UI example with Styled Components using Express with compression
Stars: ✭ 117 (+485%)
Mutual labels:  isomorphic, ssr, example, server-side-rendering
isomorphic-react-redux-saga-ssr
Isomorphic, React, Redux, Saga, Server Side rendering, Hot Module Reloading, Ducks, Code Splitting
Stars: ✭ 19 (-5%)
Mutual labels:  isomorphic, redux-saga, ssr, server-side-rendering
Ssr Sample
A minimum sample of Server-Side-Rendering, Single-Page-Application and Progressive Web App
Stars: ✭ 285 (+1325%)
Mutual labels:  redux-saga, ssr, server-side-rendering
angular-pwa
Angular 13 Example Progressive Web App (PWA)
Stars: ✭ 45 (+125%)
Mutual labels:  ssr, bootstrap4, server-side-rendering
React Head
⛑ SSR-ready Document Head tag management for React 16+
Stars: ✭ 262 (+1210%)
Mutual labels:  isomorphic, ssr, server-side-rendering
React App
Create React App with server-side code support
Stars: ✭ 614 (+2970%)
Mutual labels:  isomorphic, ssr, server-side-rendering
Angular Ssr
Angular 4+ server-side rendering solution compatible with @angular/material, jQuery, and other libraries that touch the DOM (as well as providing a rich feature set!)
Stars: ✭ 283 (+1315%)
Mutual labels:  isomorphic, ssr, server-side-rendering
react-easy-ssr
🔥 React Starter Project with Webpack 5, Babel 7, TypeScript, Redux-saga, Styled-components, React-jss, Split code, Server Side Rendering.
Stars: ✭ 31 (+55%)
Mutual labels:  redux-saga, ssr, webpack5
Egg Vue Webpack Boilerplate
Egg Vue Server Side Render (SSR) / Client Side Render (CSR)
Stars: ✭ 1,302 (+6410%)
Mutual labels:  isomorphic, ssr, server-side-rendering
Use Ssr
☯️ React hook to determine if you are on the server, browser, or react native
Stars: ✭ 230 (+1050%)
Mutual labels:  isomorphic, ssr, server-side-rendering
Universal Starter
Angular 9 Universal repo with many features
Stars: ✭ 518 (+2490%)
Mutual labels:  ssr, example, server-side-rendering
Beidou
🌌 Isomorphic framework for server-rendered React apps
Stars: ✭ 2,726 (+13530%)
Mutual labels:  isomorphic, ssr, server-side-rendering
webpack-isomorphic-compiler
A compiler that makes your life easier if you are building isomorphic webpack powered apps, that is, single page applications with server-side rendering
Stars: ✭ 16 (-20%)
Mutual labels:  isomorphic, ssr, server-side-rendering
webpack-typescript-react
Webpack 5 boilerplate with support of most common loaders and modules (see tags and description)
Stars: ✭ 185 (+825%)
Mutual labels:  css-modules, webpack5
webpack-gulp-wordpress-starter-theme
A WordPress theme with Webpack & Gulp
Stars: ✭ 110 (+450%)
Mutual labels:  bootstrap4, webpack5
SeatLayout
A seat selection library for Android with an example for selecting seats for flights, sports venue, theatres, etc
Stars: ✭ 30 (+50%)
Mutual labels:  movies, example
ssr-starter-pack
Moved to https://github.com/Brigad/ssr-starter-pack
Stars: ✭ 12 (-40%)
Mutual labels:  ssr, server-side-rendering
riot realworld example app
Exemplary real world application built with Riot.js v6 🖐👍
Stars: ✭ 16 (-20%)
Mutual labels:  example, realworld

What is itHighlightsTechnologiesHow to useDetailsAbout

CI/CD status Uptime Robot status

💡 What is it

Movies is a real world isomorphic React application. It's fast, responsive, with i18n and SSR built in support.

Movies application utilizes real movies data API provided by The Movie Database (TMDb).

📄 Note: If you have some issues fetching data from TMDb, like in Russia (it is maybe due to country access restriction), you can try to enable some VPN extension in your browser or use Cloudflare DNS.

🏄 Demo: nk11dev-movies.herokuapp.com

🎥 Highlights

  • Filter movies by category: "Now playing", "Popular", "Top rated" and "Upcoming"
  • Search movies
  • Switch localizations
  • Watch movie details (including trailer, actors and images)
  • Watch recommendations

🚀 Technologies

📖 How to use

Environment variables

There are some environment variables with default values stored in /configs/env/.env.defaults.

Variables list

Required (they haven't default values)

For fetching movies data you should register account at TMDb and use your own API Read Access Token or API key.

Variable Description
TMDB_API_ACCESS_TOKEN TMDb API Read Access Token value (authentication by Bearer Token in Authorization header). Also, for this type of authentication you should set env variable TMDB_API_V4_AUTHENTICATION=1 (default value)

or

Variable Description
TMDB_API_KEY TMDb API key value (authentication by api_key query string parameter). Also, for this type of authentication you should set env variable TMDB_API_V4_AUTHENTICATION=0

Steps for getting TMDb API to work in app:

  1. Create .env file at the root folder (example of .env file you could find in /configs/env/.env.defaults).
  2. Put in env variables with values depends on authentication method that you choose.

For example, your .env file should look like so (if you want to authenticate by TMDb API Read Access Token):

TMDB_API_ACCESS_TOKEN=put_your_api_access_token_here
TMDB_API_V4_AUTHENTICATION=1

or so (if you want to authenticate by TMDb API key):

TMDB_API_KEY=put_your_api_key_here
TMDB_API_V4_AUTHENTICATION=0

Not required (they have default values)

Variable Default value Description
TMDB_API_V4_AUTHENTICATION 1 Flag for using TMDb API v4 authentication method. Available values: 0 or 1. Set it to 0 and add TMDB_API_KEY env variable if you want to use TMDb API key authentication instead of TMDb API Read Access Token.
TMDB_API_HOST https://api.tmdb.org/3 TMDb API host address.
TMDB_API_REGION US TMDb API region parameter will act as a filter to search for and display matching release date information. This parameter is expected to be an ISO-3166-1 code.
PORT_CLIENT 8080 Port used by webpack-dev-server for client-side development mode.
PORT_SERVER 8081 Port used by express for server-side development or production modes.
PORT_ANALYZER 8888 Port used by webpack-bundle-analyzer to visualize size of webpack output files.
RENDERING client Application rendering type. Available values: client or server.
DEBUG_MODE 1 Debug mode. Available values: 0 or 1. Enables Express logs with morgan logger and Redux logs with redux-logger.

NPM scripts

Installation

Command: npm install

Install dependencies via npm.

Note: if you want to fetch data from TMDb API, you should set up required environment variables.


Development

Command: npm run dev:client or shorthand npm run dev

Run client-side React app by webpack-dev-server with HMR (by default available at localhost:8080).

Note: If your changes affects only client-side, running this script will be enough for you.


Command: npm run dev:server

Run server-side Express app by nodemon-webpack-plugin to host /dist/client/ folder (by default available at localhost:8081).

Note: This script useful if you want to change server-side behavior or work with client-side as Express-hosted app.


Production

Command: npm run build

Build client and server for production.


Command: npm start

Run bundled Express server for hosting /dist/client/ folder.


Bundle analyzing

Command: npm run analyze:client

Run Webpack Bundle Analyzer: HTTP server to show client-side bundle report with visualized size of webpack output files.


Command: npm run analyze:server

Run Webpack Bundle Analyzer: HTTP server to show server-side bundle report with visualized size of webpack output files.

Testing

Command: npm run cypress

Open Cypress test runner.


Command: npm run cypress:run

Run Cypress tests to completion.


Command: npm test

Start webpack-dev-server, wait for a url to respond, then run Cypress tests. When the test process exits, shut down webpack-dev-server.


Linting

Command: npm run lint

Run ESLint with ./** search pattern.


Command: npm run lint:fix

Run ESLint with --fix flag.

💻 Details

Optimization
Current score:

Note: Tested with disabled cache and extensions in Chrome Browser (Chrome -> Dev Tools -> "Lighthowse" tab).

Desktop version scores ~96/100 ponts.
Mobile version scores ~82/100 ponts.

But there is a some planned improvements. And that's without even mentioning the possible PWA techniques!

Express
  • HTTP headers with Cache-Control
Bundle
  • Minification
  • Gzipping
  • Tree-shaking
  • Code-splitting
Fonts
  • Stored locally
  • In modern format
  • Preloaded
  • With "font-display:swap"
Images
  • Lazy loading

✌️ About

Author: nk11dev
License: MIT

This product uses the TMDb API but is not endorsed or certified by TMDb.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].