{"id":31065163,"url":"https://github.com/hflexgrig/seofriendlyspa","last_synced_at":"2026-05-16T11:33:43.473Z","repository":{"id":250212078,"uuid":"833672961","full_name":"hflexgrig/SeoFriendlySpa","owner":"hflexgrig","description":"Aspnetcore SPA application with Angular js. Seo workaround for title and meta tags","archived":false,"fork":false,"pushed_at":"2024-08-23T22:28:33.000Z","size":23428,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-15T15:46:24.275Z","etag":null,"topics":["angular","aspnetcore","metatags","spa","ssr"],"latest_commit_sha":null,"homepage":"https://medium.com/@haykflexgrigoryan/aspnetcore-angular-spa-application-with-seo-friendly-ssr-title-and-meta-tags-updates-bcef5f75b6ad","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hflexgrig.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-07-25T14:11:04.000Z","updated_at":"2024-08-25T20:23:01.000Z","dependencies_parsed_at":"2025-09-15T15:56:26.125Z","dependency_job_id":null,"html_url":"https://github.com/hflexgrig/SeoFriendlySpa","commit_stats":null,"previous_names":["hflexgrig/seofriendlyspa"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hflexgrig/SeoFriendlySpa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hflexgrig%2FSeoFriendlySpa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hflexgrig%2FSeoFriendlySpa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hflexgrig%2FSeoFriendlySpa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hflexgrig%2FSeoFriendlySpa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hflexgrig","download_url":"https://codeload.github.com/hflexgrig/SeoFriendlySpa/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hflexgrig%2FSeoFriendlySpa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33100881,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"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","aspnetcore","metatags","spa","ssr"],"created_at":"2025-09-15T15:46:13.472Z","updated_at":"2026-05-16T11:33:43.444Z","avatar_url":"https://github.com/hflexgrig.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\nThis is ASPNetCore Angular SPA application, with Title and Meta tags update workaround on server side. It just proxies Angular routes, \nwhich needed to be SEO friendly (check ClientApp/proxy.conf.js , where added \"/item\" and \"/fetch-data\") and then Appropriate routes created on SeoController\n\n```\n    [HttpGet(\"item/{id}\")]\n    public async Task\u003cContentResult\u003e Get(int id)\n    {\n        //Gets the data, to update meta tags and title\n        var item = await _itemsService.GetItem(id);\n\n        return await _seoService.SetMetasAndGetContentResult(item.Title,\n            new Dictionary\u003cHtmlMetaTagKey, string\u003e()\n            {\n                {new HtmlMetaTagKey(\"name\", \"description\"), item.Content},\n                {new HtmlMetaTagKey(\"name\", \"keywords\"), $\"buy in USA {item.Title}\"},\n                {new HtmlMetaTagKey(\"property\", \"og:image\"), item.ImagePath},\n            });\n    }\n    \n    [HttpGet(\"fetch-data\")]\n    public async Task\u003cContentResult\u003e GetFetchData()\n    {\n        //just updating random harcoded values for Title and Meta tags from the server\n        return await _seoService.SetMetasAndGetContentResult(\"Fetch data title set from the server\",\n            new Dictionary\u003cHtmlMetaTagKey, string\u003e()\n            {\n                {new HtmlMetaTagKey(\"name\", \"description\"), \"weather forecasts\"},\n                {new HtmlMetaTagKey(\"name\", \"keywords\"), $\"weather USA\"},\n            });\n    }\n```\n\nIt reads the static Html content, and using AngleSharp updates the Title and existing Meta tags, or creates them, if they do not exist. (please check SeoService for implementation)\n\nPlease note!!! \n\nThis is only workaround for Title and Meta tags. If you need full SSR rendering , then check https://github.com/hflexgrig/MintPlayer.AspNetCore.SpaServices \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhflexgrig%2Fseofriendlyspa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhflexgrig%2Fseofriendlyspa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhflexgrig%2Fseofriendlyspa/lists"}