{"id":23391954,"url":"https://github.com/mariyazakharova73/advanced-front","last_synced_at":"2026-04-12T05:34:06.626Z","repository":{"id":216778531,"uuid":"741321636","full_name":"Mariyazakharova73/advanced-front","owner":"Mariyazakharova73","description":"Приложение для просмотра статей. Для имитации бэкенда используется JSON Server","archived":false,"fork":false,"pushed_at":"2024-05-02T05:31:37.000Z","size":661,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-08T15:18:29.757Z","etag":null,"topics":["fsd","i18n","react","redux-toolkit","storybook","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mariyazakharova73.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-10T06:39:19.000Z","updated_at":"2024-05-02T05:31:40.000Z","dependencies_parsed_at":"2024-02-20T15:31:34.290Z","dependency_job_id":"ac8abb9a-9b12-4ff9-80a4-b6fb9944a329","html_url":"https://github.com/Mariyazakharova73/advanced-front","commit_stats":null,"previous_names":["mariyazakharova73/advanced-front"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Mariyazakharova73/advanced-front","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mariyazakharova73%2Fadvanced-front","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mariyazakharova73%2Fadvanced-front/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mariyazakharova73%2Fadvanced-front/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mariyazakharova73%2Fadvanced-front/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mariyazakharova73","download_url":"https://codeload.github.com/Mariyazakharova73/advanced-front/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mariyazakharova73%2Fadvanced-front/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31705574,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T05:11:36.334Z","status":"ssl_error","status_checked_at":"2026-04-12T05:11:27.332Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fsd","i18n","react","redux-toolkit","storybook","typescript"],"created_at":"2024-12-22T04:27:56.717Z","updated_at":"2026-04-12T05:34:06.596Z","avatar_url":"https://github.com/Mariyazakharova73.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"### advanced-front\n\n#### Технологии\n\n\u003cdiv\u003e\n  \u003cimg height='25px' src=\"https://img.shields.io/badge/React-20232A??style=plastic\u0026logo=react\u0026logoColor=61DAFB\" alt=\"React.\"\u003e\n  \u003cimg height='25px' src=\"https://img.shields.io/badge/TypeScript-20232A??style=plastic\u0026logo=typescript\u0026logoColor=3178C6\" alt=\"TypeScript.\"\u003e\n  \u003cimg height='25px' src=\"https://img.shields.io/badge/Redux Toolkit-20232A??style=plastic\u0026logo=redux\u0026logoColor=764ABC\" alt=\"Redux.\"\u003e\n  \u003cimg height='25px' src=\"https://img.shields.io/badge/RTK Query-20232A??style=plastic\u0026logoColor=764ABC\" alt=\"RTK Query.\"\u003e\n  \u003cimg height='25px' src=\"https://img.shields.io/badge/React Router v6-20232A??style=plastic\u0026logo=reactrouter\u0026logoColor=CA4245\" alt=\"React Router.\"\u003e\n  \u003cimg height='25px' src=\"https://img.shields.io/badge/Storybook-20232A??style=plastic\u0026logo=Storybook\u0026logoColor=FF4785\" alt=\"Storybook.\"\u003e\n  \u003cimg height='25px' src=\"https://img.shields.io/badge/Headless Ui-20232A??style=plastic\u0026logo=headlessui\u0026logoColor=66E3FF\" alt=\"Headless Ui.\"\u003e\n\u003c/div\u003e\n\n#### О проекте\n\nПриложение для просмотра статей. Для имитации бэкенда используется JSON Server\n\nДанные для входа - username: admin, password 123;\n\n- Верстка только на гридах (без flex)\n- Созданы некоторые UI компоненты. (Button, Input, Card, Modal, Avatar, Loader, Tabs, Text, Stack и т.д)\n- Бандл разделен на чанки (React.lazy)\n- Смена темы (React Context, css-variables, custom hook useTheme), Смена языка (i18next)\n- Настроен EsLint, Stylelint, husky, Storybook\n- Настроена обработка ошибок (React ErrorBoundary)\n- React Portal (lazy loading modal)\n- loginReducer, profileReducer, articleDetailsReducer и др. добавляются асинхронно через reducerManager (форма авторизации подгружается только для неавторизованного пользователя)\n- Страницы профиля и cтатей защищены от неавторизованного пользователя\n- Изменение данных профиля в режиме редактирования\n- Подгрузка новых статей при скролле (observer API)\n- Добавление комментариев к статье\n- Сохранение позиции скролла при возвращении на страницу статей\n- Сортировка статей по дате создания, количеству просмотров, темам\n- Параметры сортировки сохраняются в url\n- Поиск статьи (debounce)\n- Админ-панель\n\n#### Установка и запуск приложения\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eРазвернуть\u003c/b\u003e\u003c/summary\u003e\n\nКлонировать репозиторий:\n\n    git clone https://github.com/Mariyazakharova73/advanced-front.git\n\nУстановить зависимости:\n\n    npm install\n\nЗапустить проект:\n\n    npm run start:dev\n\nЗапустить Storybook:\n\n    npm run storybook\n\n\u003c/details\u003e\n\n\u003c!-- преобразование svg  в реакт компонент\n(в webpack это SVGR loader + declare module {})\nimport { ReactComponent as BrushIcon } from 'shared/assets/icons/brush.svg';\n--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmariyazakharova73%2Fadvanced-front","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmariyazakharova73%2Fadvanced-front","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmariyazakharova73%2Fadvanced-front/lists"}