Skip to content

travel-app - приложение для виртуальных путешествий по странам мира. #36

Open
aleksei-bulgak-study wants to merge 99 commits intomainfrom
develop
Open

travel-app - приложение для виртуальных путешествий по странам мира. #36
aleksei-bulgak-study wants to merge 99 commits intomainfrom
develop

Conversation

@aleksei-bulgak-study
Copy link
Copy Markdown
Collaborator

@aleksei-bulgak-study aleksei-bulgak-study commented Mar 17, 2021

travel-app

Deadline Repo name Branch name
17.03.2021 23:59 travel-app travel-app

travel-app - приложение для виртуальных путешествий по странам мира.
изображение

Task: https://github.com/rolling-scopes-school/tasks/blob/master/tasks/react/travel-app.md

Deploy: https://natein-travel-app.netlify.app/

Bakend repository: https://github.com/aleksei-bulgak-study/travel-app-be
Backend application: https://rss-travel-app.herokuapp.com/swagger-ui

  1. Score: 190 / 200

Выполненная функциональность

Вёрстка, дизайн, UI +30

  • вёрстка, дизайн, UI главной страницы приложения +10
  • вёрстка, дизайн, UI страницы страны +10
  • оригинальный интересный качественный дизайн приложения, используются анимации, сложные элементы оформления, например, эффект параллакса, полноэкранное видео, синемаграфы и т.д. +10

Главная страница приложения +30

  • поиск +10
  • локализация главной страницы приложения на три языка +10
  • карточки стран +10

Страница страны +80

  • локализация страницы страны на три языка +10
  • фото страны, название страны, название её столицы, краткая информация о стране +10
  • фотогалерея достопримечательностей +10
  • видео +10
  • карта +10
  • информер погоды +10
  • виджет даты и времени в столице страны +10
  • курс местной валюты +10

Бекенд +40

  • создано API для получения данных о стране +10 (API создаётся с использованием фреймворка express/koa/nest и тд. При использовании json-server и подобных инструментов пункт выполненным не считается.)
  • при регистрации нового пользователя можно указать его имя и загрузить фото +10
  • реализована авторизация и разавторизация пользователя. Основная часть приложения доступна без авторизации. При перезагрузке приложения данные о пользователе сохраняются +10
  • есть возможность проставить и сохранить в бекенде рейтинг достопримечательностям страны, увидеть других проголосовавших и какой рейтинг указал каждый из них +10

Дополнительный функционал +10

  • продуман и реализован не предусмотренный заданием сложный в реализации дополнительный функционал, который существенно улучшает качество приложения +10
  • написано не меньше 10 юнит-тестов, использующих различные методы jest +10

spaceragga and others added 30 commits March 7, 2021 15:57
feat: add react-router, base structure
* feat: add countryMap component

add map component
add default actions and redusers to load data from server
integrate map into page component

* fix: replace div with Box component from material ui

* fix: remove unused import

Co-authored-by: aliaksei bulhak <aliaksei.bulhak@nike.com>
… component (#14)

Co-authored-by: aliaksei bulhak <aliaksei.bulhak@nike.com>
Widget date, styles page, header, footer, home
* feat: update routing. add styles for not found page

* fix: footer elements aligment
* feat: update loading page. add language selector

* fix: hide search bar on country view page

Co-authored-by: aliaksei bulhak <aliaksei.bulhak@nike.com>
aleksei-bulgak-study and others added 28 commits March 13, 2021 17:32
fix: currency nominal and add loader
* feat: add 5 tests for reducer

* feat: add actions compiling tests

* feat: add helpers and loading page tests

Co-authored-by: Ivan <raggamix@mail.ru>
)
.then((response) => response.data)
.catch((err) => {
console.log(err.response);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

console.error ?

return axios
.get(url)
.then((response) => response.data);
};
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

пока читал все файлы сервисов:
раз 100 прочитал const getSmth, раз 100 cont url = '$base url' smth, раз 100 прочитал return axios.get(url) .then((response) => response.data)...неужели так всегда ?)

@@ -0,0 +1,59 @@
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

для каждого компонента папочка есть, а для апп жалко ? ;D бесплатные же./...тогда можно будет вынести хук useStyles в отдельный файл ? или так специально задумано ?

<Switch>
<Route path={['/countries', '/']} component={Home} exact />
<Route path="/countries/:isoCode" component={Country} />
<Route path="/login" component={LoginPage} />
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

пути в константы можно

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PAGES_ROUTS чет такое может ?

className: ''
};

const mapStateToProps = (state) => ({
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

деструктуризация ?

<Grid item xs={12} md={8} className={classes.gitHubList}>
{developers.map((developer, i) => (
<DeveloperElement
key={i.toString()}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

index говорят не юзать в качестве ключей

<Box className={classes.container}>
<TranslateIcon className={classes.icon}/>
<select value={currentLocale} onChange={onLanguageChange} className={classes.select}>
<option value="ru">{t('labels.locale.ru')}</option>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

у useTranslation должны быть параметры которые отвечают за локаль, чтобы не пришлось дублировать labels.locale labels.locale labels.locale 3 раза можно просто передать парам

};

LanguageSelector.propTypes = {
currentLocale: PropTypes.oneOf(['en', 'uk', 'ru']),
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

должны быть константы, объекст с разными языками, в тип через Object.values

const { t } = useTranslation();

const match = useRouteMatch({
path: '/countries/:isoCode',
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

const

test('check get video func works well', () => {
const url = 'https://www.youtube.com/watch?v=56bWMAEvSdA';
const result = getVideoId(url);
expect(result).toEqual('56bWMAEvSdA');
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use .toEqual to compare recursively all properties of object instances

../// toMatch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants