{"id":50349660,"url":"https://github.com/avin/real-js-practice","last_synced_at":"2026-05-29T20:31:00.125Z","repository":{"id":321905783,"uuid":"1087590754","full_name":"avin/real-js-practice","owner":"avin","description":"Задачи которые реально встречаются в работе фронтендера","archived":false,"fork":false,"pushed_at":"2025-11-03T08:16:58.000Z","size":64,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-21T14:10:58.389Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/avin.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-01T08:16:19.000Z","updated_at":"2025-11-03T08:17:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/avin/real-js-practice","commit_stats":null,"previous_names":["avin/real-js-practice"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/avin/real-js-practice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avin%2Freal-js-practice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avin%2Freal-js-practice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avin%2Freal-js-practice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avin%2Freal-js-practice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/avin","download_url":"https://codeload.github.com/avin/real-js-practice/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avin%2Freal-js-practice/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33670211,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-05-29T20:31:00.005Z","updated_at":"2026-05-29T20:31:00.107Z","avatar_url":"https://github.com/avin.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Практический задачник по JavaScript/TypeScript для фронтенд-разработчиков\n\nЭтот задачник содержит практические задачи, которые реально встречаются в повседневной работе фронтенд-разработчика. Все задачи охватывают типичные ситуации из реальных проектов.\n\n## Оглавление\n\n### 1. [Работа с массивами и объектами](./01-arrays-objects.md)\n- Фильтрация и трансформация данных из API\n- Группировка элементов\n- Нормализация данных\n- Поиск и сортировка\n- Удаление дубликатов\n- Слияние данных из разных источников\n\n### 2. [Работа с формами и валидация](./02-forms-validation.md)\n- Валидация email, телефона, пароля\n- Обработка изменений в форме\n- Debounce для автосохранения\n- Динамические поля формы\n- Валидация на стороне клиента\n\n### 3. [Асинхронные операции](./03-async-operations.md)\n- Обработка множественных запросов\n- Retry логика для запросов\n- Кэширование данных\n- Загрузка данных с пагинацией\n- Обработка ошибок API\n- Race conditions\n\n### 4. [Работа с DOM и события](./04-dom-events.md)\n- Делегирование событий\n- Throttle и debounce для scroll/resize\n- Обработка кликов вне элемента\n- Drag \u0026 Drop\n- Виртуальный скроллинг\n- Управление фокусом\n\n### 5. [State Management](./05-state-management.md)\n- Простой state manager\n- Подписки на изменения\n- Вычисляемые значения\n- Immutable обновления\n- Undo/Redo функциональность\n\n### 6. [Работа со строками и форматирование](./06-strings-formatting.md)\n- Форматирование валюты\n- Работа с датами\n- Склонение числительных\n- Обрезка текста с многоточием\n- Генерация slug из заголовка\n- Парсинг URL параметров\n\n### 7. [TypeScript типы](./07-typescript-types.md)\n- Типизация ответов API\n- Generic компоненты\n- Utility types для форм\n- Строгая типизация конфигураций\n- Типы для event handlers\n- Discriminated unions\n\n### 8. [Производительность и оптимизация](./08-performance.md)\n- Мемоизация функций\n- Ленивая загрузка\n- Батчинг операций\n- Web Workers для тяжелых вычислений\n- Оптимизация рендеринга списков\n\n### 9. [Работа с localStorage/sessionStorage](./09-storage.md)\n- Типобезопасное хранилище\n- Синхронизация между вкладками\n- Управление размером хранилища\n- Сериализация сложных объектов\n- Миграции данных\n\n### 10. [Утилиты и хелперы](./10-utilities.md)\n- Deep clone и deep merge\n- Работа с cookies\n- Генерация уникальных ID\n- Проверка типов данных\n- Retry с экспоненциальной задержкой\n- Composing функций\n\n### 11. [Работа с API и HTTP](./11-api-http.md)\n- Типизированный API клиент\n- Interceptors для запросов\n- Обработка токенов и refresh\n- Query параметры\n- Загрузка файлов с прогрессом\n- AbortController для отмены запросов\n\n### 12. [React специфичные задачи](./12-react-specific.md)\n- Custom hooks\n- Context оптимизация\n- Управление side-effects\n- Работа с refs\n- Оптимизация ре-рендеров\n- Композиция компонентов\n\n## Как использовать этот задачник\n\n1. **Читайте задачу** - каждая задача описывает реальную ситуацию из практики\n2. **Попробуйте решить самостоятельно** - используйте подсказки только если застряли\n3. **Проверьте edge cases** - подумайте о граничных случаях\n4. **Оптимизируйте** - подумайте о производительности и читаемости кода\n5. **Типизируйте** - для TypeScript задач обеспечьте полную типобезопасность\n\n## Уровни сложности\n\n- 🟢 **Базовый** - ежедневные задачи, должны решаться за 5-10 минут\n- 🟡 **Средний** - требуют знания паттернов и лучших практик\n- 🔴 **Продвинутый** - сложные сценарии, требующие глубокого понимания\n\n## Рекомендации\n\n- Пишите код так, как писали бы в production\n- Думайте о переиспользовании кода\n- Учитывайте типобезопасность\n- Обрабатывайте ошибки\n- Пишите понятный код (self-documenting)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favin%2Freal-js-practice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favin%2Freal-js-practice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favin%2Freal-js-practice/lists"}