{"id":29313009,"url":"https://github.com/artnazarov/angular-ngbootstrap-favourites","last_synced_at":"2026-04-13T08:32:07.892Z","repository":{"id":300940084,"uuid":"1007665595","full_name":"ArtNazarov/angular-ngbootstrap-favourites","owner":"ArtNazarov","description":"A website with a collection of useful links","archived":false,"fork":false,"pushed_at":"2025-07-01T16:04:26.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-01T17:24:13.768Z","etag":null,"topics":["angular"],"latest_commit_sha":null,"homepage":"https://apprr.rf.gd","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/ArtNazarov.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}},"created_at":"2025-06-24T10:44:21.000Z","updated_at":"2025-07-01T16:04:30.000Z","dependencies_parsed_at":"2025-06-24T11:39:46.626Z","dependency_job_id":"2ae4f93e-3e20-4e05-a69b-b13552fddeef","html_url":"https://github.com/ArtNazarov/angular-ngbootstrap-favourites","commit_stats":null,"previous_names":["artnazarov/angular-ngbootstrap-favourites"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ArtNazarov/angular-ngbootstrap-favourites","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtNazarov%2Fangular-ngbootstrap-favourites","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtNazarov%2Fangular-ngbootstrap-favourites/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtNazarov%2Fangular-ngbootstrap-favourites/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtNazarov%2Fangular-ngbootstrap-favourites/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArtNazarov","download_url":"https://codeload.github.com/ArtNazarov/angular-ngbootstrap-favourites/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtNazarov%2Fangular-ngbootstrap-favourites/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264049079,"owners_count":23549405,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["angular"],"created_at":"2025-07-07T09:13:56.924Z","updated_at":"2026-04-13T08:32:07.883Z","avatar_url":"https://github.com/ArtNazarov.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# angular-ngbootstrap-favourites\n\nВеб-сайт с коллекцией полезных ссылок, построенный на **Angular 19** с использованием **ng-bootstrap** и **Bootstrap 5**.\n\n## Особенности\n\n- 📌 **Избранное** — закреплённые ссылки (Linux.org.ru, Pikabu, Lenta.ru и др.)\n- 🔍 **Поисковики** — Google, Yandex\n- 🤖 **ИИ** — ChatGPT, DeepSeek, Perplexity, Qwen и другие\n- 💼 **Фриланс** — биржи фриланса (Freelance.ru, Kwork, Kadrof и др.)\n- 🔎 **Фильтрация** — поиск по названию и описанию ссылок\n- 📄 **Пагинация** — постраничный вывод (по 3 элемента на страницу)\n- 📱 **Адаптивный дизайн** — Bootstrap grid-система (3 колонки)\n\n## Скриншоты\n\n![Filter](https://dl.dropbox.com/scl/fi/mhg8yem2ahyqh38pmzchc/ng-filterII.png?rlkey=33caz4vn6rrrf4qhaw74n4xoh\u0026st=7xc801vb)\n\n## Технологический стек\n\n| Технология | Версия |\n|------------|--------|\n| Angular | 19.x |\n| TypeScript | 5.6.x |\n| ng-bootstrap | 18.x |\n| Bootstrap | 5.3.x |\n| RxJS | 7.8.x |\n\n## Структура проекта\n\n```\nsrc/app/\n├── models/\n│   └── links.ts              # Интерфейсы ILink, IMenuItem, типы и модели данных\n├── services/\n│   └── links.service.ts      # Сервис для загрузки данных через HTTP\n├── nz-center-area/           # Центральная область (роутинг + основной контент)\n├── nz-filter/                # Компонент фильтрации ссылок\n├── nz-footer/                # Подвал сайта\n├── nz-header/                # Шапка сайта\n├── nz-info-item/             # Карточка отдельной ссылки\n├── nz-info-list/             # Список ссылок с пагинацией и фильтром\n├── nz-left-area/             # Левая боковая панель (поисковики)\n├── nz-menu/                  # Навигационное меню\n├── nz-menu-item/             # Элемент меню\n├── nz-right-area/            # Правая боковая панель (ИИ)\n├── app.component.*           # Корневой компонент\n├── app.config.ts             # Конфигурация приложения (провайдеры)\n└── app.routes.ts             # Маршрутизация\n```\n\n## Компоненты\n\n### Компоненты-области (Layout)\n\n| Компонент | Описание |\n|-----------|----------|\n| `NzHeaderComponent` | Шапка сайта |\n| `NzFooterComponent` | Подвал с динамическим годом |\n| `NzMenuComponent` | Горизонтальное меню навигации |\n| `NzLeftAreaComponent` | Левая колонка (поисковые системы) |\n| `NzRightAreaComponent` | Правая колонка (ИИ-сервисы) |\n| `NzCenterAreaComponent` | Центральная область с роутингом |\n\n### Компоненты контента\n\n| Компонент | Описание |\n|-----------|----------|\n| `NzInfoListComponent` | Список ссылок с пагинацией и фильтрацией |\n| `NzInfoItemComponent` | Отдельная карточка ссылки (caption, content, link) |\n| `NzFilterComponent` | Поле фильтрации с debounce (300ms) |\n\n### Маршруты\n\n```typescript\n{ path: 'pinned',          component: NzCenterAreaComponent }  // Избранное\n{ path: 'search_engines',  component: NzCenterAreaComponent }  // Поисковики\n{ path: 'ai',              component: NzCenterAreaComponent }  // ИИ\n{ path: 'freelance',       component: NzCenterAreaComponent }  // Фриланс\n{ path: '',               redirectTo: '/pinned' }\n```\n\n## Установка и запуск\n\n### Предварительные требования\n\n- Node.js ≥ 18.x\n- npm ≥ 9.x\n\n### Установка зависимостей\n\n```bash\nnpm install\n```\n\n### Запуск dev-сервера\n\n```bash\nng serve\n```\n\nПриложение доступно по адресу: `http://localhost:4200`\n\n### Сборка\n\n```bash\nng build\n```\n\nАртефакты сборки будут в папке `dist/`.\n\n### Запуск тестов\n\n```bash\nng test\n```\n\n## Данные\n\nДанные загружаются из JSON-файлов в папке `public/assets/data/`:\n\n- `pinned.json` — закреплённые ссылки\n- `search-engines.json` — поисковые системы\n- `ai.json` — ИИ-сервисы\n- `freelance.json` — фриланс-биржи\n- `menu.json` — пункты меню\n\nЕсли файлы не найдены, используется fallback-данные из `LinksService`.\n\n## Что нового\n\n- ✅ Добавлена фильтрация элементов по названию и описанию\n- ✅ Подсветка совпадений в тексте\n- ✅ Пагинация списка (3 элемента на страницу)\n- ✅ Debounce для поля поиска (300ms)\n- ✅ Автоподстановка текущего года в футере\n\n## Демо\n\n[Посмотреть](https://apprr.rf.gd)\n\n## Лицензия\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartnazarov%2Fangular-ngbootstrap-favourites","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartnazarov%2Fangular-ngbootstrap-favourites","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartnazarov%2Fangular-ngbootstrap-favourites/lists"}