{"id":15099689,"url":"https://github.com/hire-hoffee/news-list","last_synced_at":"2025-08-05T15:35:41.168Z","repository":{"id":196385963,"uuid":"695626512","full_name":"Hire-Hoffee/News-List","owner":"Hire-Hoffee","description":"Приложение-агрегатор новостей","archived":false,"fork":false,"pushed_at":"2024-11-21T14:00:19.000Z","size":1090,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T13:47:36.905Z","etag":null,"topics":["cssmodules","frontend","guardian-api","nextjs","react","redux-toolkit","ssr","typescript"],"latest_commit_sha":null,"homepage":"https://news-list-app-six.vercel.app","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/Hire-Hoffee.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":"2023-09-23T18:33:42.000Z","updated_at":"2024-11-21T14:00:26.000Z","dependencies_parsed_at":"2025-03-27T13:47:13.588Z","dependency_job_id":"8ffe2751-d27b-4313-b71c-f7e35f964c61","html_url":"https://github.com/Hire-Hoffee/News-List","commit_stats":{"total_commits":31,"total_committers":1,"mean_commits":31.0,"dds":0.0,"last_synced_commit":"22aec75c64753e269a785781f1cd9119a0676031"},"previous_names":["hire-hoffee/news-list"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Hire-Hoffee/News-List","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hire-Hoffee%2FNews-List","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hire-Hoffee%2FNews-List/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hire-Hoffee%2FNews-List/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hire-Hoffee%2FNews-List/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hire-Hoffee","download_url":"https://codeload.github.com/Hire-Hoffee/News-List/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hire-Hoffee%2FNews-List/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266324279,"owners_count":23911226,"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","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":["cssmodules","frontend","guardian-api","nextjs","react","redux-toolkit","ssr","typescript"],"created_at":"2024-09-25T17:25:57.982Z","updated_at":"2025-07-21T15:02:04.298Z","avatar_url":"https://github.com/Hire-Hoffee.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Newsreader App\n\nSimple two-page SPA application for news browsing using Guardian API.\n\n#### [Link to technical assignment](./Тестовое%20задание.pdf)\n\n**Functionality:**\n\n- **Main page:**\n\n  - Display news cards.\n  - Search for news by keyword.\n  - Sort news by relevance and date.\n  - Customize the number of displayed news items on the page.\n  - Infinite scrolling (loading news when reaching the end of the page).\n  - Storing the page state in Redux.\n  - Loading data from backend via Redux async thunk.\n\n![Main page](https://i.imgur.com/Euyd2hE.png \"Main page\")\n\n- **News page:**\n  - Display full news text with correct formatting (headings, paragraphs, lists, quotes, images).\n  - Display news date, illustration (if available), link to original article and back button.\n  - Server Side Rendering.\n\n![News page](https://i.imgur.com/SlnXANs.png \"News page\")\n\n**Technologies:**\n\n- **Frontend:**\n  Next.js, TypeScript, Redux Toolkit, CSS Modules\n\n- **Backend:**\n  Guardian API: REST API for news content.\n\n**Layout Requirements:**\n\n- Adaptive layout (up to 320px).\n\n**How it works:**\n\n1.  **Main page:**\n\n    - When the page loads, the app makes a request to the Guardian API using the search, sort, news count and page number parameters stored in the Redux store.\n    - The resulting data is stored in the Redux store and displayed as news cards.\n    - Scrolling down the page triggers a handler that makes a request for the next chunk of data, if available.\n    - The user can interact with UI elements (search, sorting, number of news items) by changing the state of the Redux store, which causes the component to re-render and update the data.\n\n2.  **News page:**\n    - When navigating to the news page, Next.js pre-requests server-side news data using the news id from the URL.\n    - The resulting data is used to render the page on the server, making it load faster and improving SEO.\n    - The page displays the full text of the news, formatted with HTML tags and CSS styles.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhire-hoffee%2Fnews-list","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhire-hoffee%2Fnews-list","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhire-hoffee%2Fnews-list/lists"}