πŸͺ Star Wars Application

🐧 Links


🐢 Available Scripts and Commands

# Install
npm i                    # install dependencies
# General
npm run start            # run app in the development mode
npm run storybook        # run storybook
npm run deploy           # deploy app on Github Pages
# Deploy (part of "deploy" script)
npm run build            # builds the app for production
npm run build-storybook  # storybook build
npm run build-gh-pages   # deploy on Github Pages
# Not used
npm run eject            # remove the single build dependency
npm run deploy-storybook # storybook deploy

πŸ¦„ API


πŸ— Lighthouse Metrics Performance


🐼 РассмотрСнныС Ρ‚Π΅ΠΌΡ‹

React.js

  • Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ прилоТСния с create-react-app
  • БостояниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (Ρ…ΡƒΠΊ useState)
  • Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (Ρ…ΡƒΠΊ useEffect)
  • Context API (Ρ…ΡƒΠΊ useContext)
  • Π Π΅Ρ„Ρ‹ ΠΈ DOM (Ρ…ΡƒΠΊ useRef)
  • ΠœΠ΅ΠΌΠΎΠΈΠ·Π°Ρ†ΠΈΡ (Ρ…ΡƒΠΊ useCallback)
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ собствСнных Ρ…ΡƒΠΊΠΎΠ²
  • Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹
  • ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Higher-Order Component
  • ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ ΠŸΠΎΠ΄ΡŠΡ‘ΠΌ состояния
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий
  • Controlled Components
  • ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ CSS, css-modules, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° classnames
  • Бписки ΠΈ ΠΊΠ»ΡŽΡ‡ΠΈ, Reconciliation Algorithm
  • ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² React.lazy()
  • Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° prop-types для Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ props

React Router

  • Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³
  • URL Parameters
  • Query Parameters
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° страницы 404 (Not Found)
  • Π₯ΡƒΠΊΠΈ useLocation ΠΈ useHistory

Redux

  • Базовая структура react-redux-прилоТСния
  • Π₯ΡƒΠΊΠΈ useDispatch, useSelector
  • Redux Middleware
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ асинхронных action с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ redux-thunk
  • ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ состояния store с redux-devtools-extension

ΠžΠ±Ρ‰Π΅Π΅

  • Π—Π°Π΄Π°Π½ΠΈΠ΅ Alias Π² React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ (Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° react-app-rewire-alias)
  • Π”Π΅ΠΏΠ»ΠΎΠΉ прилоТСния Π½Π° GitHub Pages (Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° gh-pages)
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ui-Kit ΠΈΠ· Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ публикация Π² @storybook
  • Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° lodash с Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ функциями
  • Visual Studio Code. Π‘Π½ΠΈΠΏΠΏΠ΅Ρ‚Ρ‹ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹

JavaScript

  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами: map, filter, forEach
  • ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ: Promise, Async Functions
  • ES6-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (import ΠΈ export)
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°Π·Π²ΠΎΡ€ΠΎΡ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (props для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°)
  • ДСструктуризация массивов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
  • Π’Π΅Ρ€Π½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
  • Π Π°Π±ΠΎΡ‚Π° с Local Storage
  • Π Π°Π±ΠΎΡ‚Π° с API с использованиСм Fetch

Вёрстка

  • CSS Custom Properties, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· JavaScript
  • CSS Filters
  • CSS Flexbox
  • CSS Multi Columns
  • Бтилизация скроллбара

🐣 ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ²

  • Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
  • ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚
  • HOC
  • UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹
  • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹
  • Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ
  • Π₯ΡƒΠΊΠΈ
  • Π ΠΎΡƒΡ‚Ρ‹
  • БСрвисы
  • Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹
  • ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹
  • Π‘Ρ‚ΠΈΠ»ΠΈ

🐨 TODO

ВСстированиС ΠΈ пСрформанс

  • ESLint + Prettier
  • ВСсты: Jest, Enzyme
  • ВСсты Cypress
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Lighthouse (Google Chrome)

Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

  • TypeScript https://github.com/letscode-dev/react-star-wars/tree/typescript-part
  • Firebase рСгистрация
  • Material UI, стилизация Ρ‡Π΅Ρ€Π΅Π· css-in-js
  • Redux Thunk
  • React Hook Form для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»

  • ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Header ΠΏΡ€ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π΅
  • Π ΠΎΡƒΡ‚Π΅Ρ€. Анимация ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ страницами
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹
  • ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ NPM-ΠΏΠ°ΠΊΠ΅Ρ‚Π° для UiKit
  • .bat-Ρ„Π°ΠΉΠ»Ρ‹ для запуска скриптов

NPM

npm i --save classnames lodash prop-types react react-dom react-redux react-router react-router-dom react-scripts redux redux-devtools-extension redux-thunk
npm i --save-dev @storybook/addon-actions @storybook/addon-essentials @storybook/addon-links @storybook/node-logger @storybook/preset-create-react-app @storybook/react @storybook/storybook-deployer gh-pages react-app-rewire-alias react-app-rewired