{"id":24483971,"url":"https://github.com/uwon0625/nxnews","last_synced_at":"2026-05-05T14:11:01.555Z","repository":{"id":268317503,"uuid":"903962968","full_name":"uwon0625/nxNews","owner":"uwon0625","description":"angular app with asp.net webapi backend","archived":false,"fork":false,"pushed_at":"2024-12-17T19:54:45.000Z","size":369,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-25T00:46:43.189Z","etag":null,"topics":["angular","angular19","angularcli","angularmaterial","angulartest","api","automated-testing","azure","azure-devops","azurestaticwebapp","dotnet-core","e2e-testing","hackernews","netsdk","playwright-tests","restful-api","sdk8","swagger","unittesting"],"latest_commit_sha":null,"homepage":"","language":"C#","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/uwon0625.png","metadata":{"files":{"readme":"README.md","changelog":"NewsApi.Tests/.runsettings","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-12-16T01:35:20.000Z","updated_at":"2024-12-25T05:28:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"29266247-4b00-4c0c-a8a8-9f9ea8239984","html_url":"https://github.com/uwon0625/nxNews","commit_stats":null,"previous_names":["uwon0625/nxnews"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/uwon0625/nxNews","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uwon0625%2FnxNews","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uwon0625%2FnxNews/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uwon0625%2FnxNews/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uwon0625%2FnxNews/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uwon0625","download_url":"https://codeload.github.com/uwon0625/nxNews/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uwon0625%2FnxNews/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32652684,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["angular","angular19","angularcli","angularmaterial","angulartest","api","automated-testing","azure","azure-devops","azurestaticwebapp","dotnet-core","e2e-testing","hackernews","netsdk","playwright-tests","restful-api","sdk8","swagger","unittesting"],"created_at":"2025-01-21T13:13:17.023Z","updated_at":"2026-05-05T14:11:01.550Z","avatar_url":"https://github.com/uwon0625.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Introduction\n\nNtNews is a sample Angular v19 web app to pull stories from [Hacker News API](https://github.com/HackerNews/API) via dotnet(SDK v8) Restful API, deployed to Azure. \n - Source repo: https://github.com/uwon0625/nxNews\n - App link: https://brave-sea-0ef71fa1e.4.azurestaticapps.net\n\n**Features**\n- Pagination(with @angular/material/paginator)\n- Caching\n- Automated end-to-end testing (with Playwright)\n- Integrated Unit Testing\n\n# Screenshots\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\"\u003e\n      \u003cimg src=\"assets/images/app-view.png\" alt=\"App View\"/\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\"\u003e\n      \u003cimg src=\"assets/images/swagger.png\" alt=\"Swagger Api Doc\" /\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n# Notes\n\nHacker News API is very flexible and gives different data fields for different types. This app only pulls for story type(\"type\" : \"story\") and skip other type like comment, job, poll, etc. Furthermore, we only list the stories with a Url so our users can follow up the link to read more. When we need to fetch for more stories, we have to check each item to check its type, which means pagination and caching are important to keep the app up running.\n\nFor a quicker startup, we load latest 20 story ids from https://hacker-news.firebaseio.com/v0/newstories.json, then query each of the story by its id to get the title and Url at https://hacker-news.firebaseio.com/v0/item/{story-id}.json.\n\n\n## How to use the app\n\nTo run it locally:\n\n - clone it from https://github.com/uwon0625/nxNews.git, \n - backend(Api): \n\t - cd NewsApi\n\t - dotnet clean \u0026\u0026 dotnet run (required by front end app)\n\t - check it live at http://localhost:5175/News (or try swagger at http://localhost:5175/swagger/index.html)\n\t - run tests: \n\t\t - cd .. (repo root, like nxNews)\n\t\t - dotnet test NewsApi.Tests \n\t\t \n - front end(app)\n\t - cd client-app\n\t - npm cache clean --force \u0026\u0026 ng serve\n\t - check it at http://localhost:4200/ (need above NewsApi running or no story is loaded)  \n\t - run end-to-end tests:  \n\t\t - npm run test:e2e:dev\n\t\t - check result at http://localhost:9323/ (or \"npx playwright show-report\")\n \n## What's next?\n\nWe will continue to make improvements for:\n - refine the UX and styling\n - adding more tests\n - refactor to make the code better\n - containerization for scalability\n - persist some of the  data locally(between cache and Hacker News API)\n - authorization(with jwt) to make the app secure and meaningful to our users\n - and more to come\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuwon0625%2Fnxnews","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuwon0625%2Fnxnews","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuwon0625%2Fnxnews/lists"}