{"id":51029013,"url":"https://github.com/yottaawesome/angular-todo","last_synced_at":"2026-06-21T22:03:39.949Z","repository":{"id":357539583,"uuid":"1237071378","full_name":"yottaawesome/angular-todo","owner":"yottaawesome","description":"An Angular 21+Minimal API todo app.","archived":false,"fork":false,"pushed_at":"2026-05-13T07:20:01.000Z","size":97,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-13T08:35:02.955Z","etag":null,"topics":["angular","dotnet-core","minimal-api","webapi","webapp"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":false,"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/yottaawesome.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":"2026-05-12T21:07:37.000Z","updated_at":"2026-05-13T07:20:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/yottaawesome/angular-todo","commit_stats":null,"previous_names":["yottaawesome/angular-todo"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/yottaawesome/angular-todo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yottaawesome%2Fangular-todo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yottaawesome%2Fangular-todo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yottaawesome%2Fangular-todo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yottaawesome%2Fangular-todo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yottaawesome","download_url":"https://codeload.github.com/yottaawesome/angular-todo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yottaawesome%2Fangular-todo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34627254,"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-06-21T02:00:05.568Z","response_time":54,"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":["angular","dotnet-core","minimal-api","webapi","webapp"],"created_at":"2026-06-21T22:03:39.191Z","updated_at":"2026-06-21T22:03:39.943Z","avatar_url":"https://github.com/yottaawesome.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Angular TODO app\r\n\r\n## Introduction\r\n\r\nAn Angular todo app with an ASP.NET Core Minimal API backend.\r\n\r\n## Prerequisites\r\n\r\n- .NET 10 SDK. You can get this via Visual Studio (recommended) or [manually downloading it](https://dotnet.microsoft.com/download).\r\n- [Node.js](https://nodejs.org/) and npm.\r\n- Visual Studio Code for the Angular client. Visual Studio is recommended for the Server.\r\n\r\nIf this is your first time running an ASP.NET Core HTTPS app locally, trust the development certificate:\r\n\r\n```powershell\r\ndotnet dev-certs https --trust\r\n```\r\n\r\n## Structure\r\n\r\nThe codebase is located in the src directory. The Angular client is in the `Client` directory and the server is in the `Server` directory.\r\n\r\n## Run the server\r\n\r\nOpen the TodoServer.slnx solution with Visual Studio and run it. Alternatively, you can also run it via the CLI. From the repository root:\r\n\r\n```powershell\r\ndotnet run --project src\\Server\\TodoServer\\TodoServer.csproj --launch-profile https\r\n```\r\n\r\nThe HTTPS profile serves the API at `https://localhost:7058`. The client expects this URL for development builds. Make sure the port is allowed and nothing locally is blocking it.\r\n\r\n## Run the client\r\n\r\nIn a second terminal in the `src\\Client` directory, install dependencies and start Angular:\r\n\r\n```powershell\r\nnpm install\r\nnpm start\r\n```\r\n\r\nYou can also use `ng serve`. After this, open `http://localhost:4200/` in your browser.\r\n\r\n## Useful commands\r\n\r\nRun server tests:\r\n\r\n```powershell\r\nSet-Location src\\Server\r\ndotnet test --no-restore\r\n```\r\n\r\nRun client tests:\r\n\r\n```powershell\r\nSet-Location src\\Client\r\nnpm test -- --watch=false\r\n```\r\n\r\nBuild the client:\r\n\r\n```powershell\r\nSet-Location src\\Client\r\nnpm run build\r\n```\r\n\r\n## Implementation notes\r\n\r\n* I've used Minimal API, as this is the latest version of Web API, and Microsoft officially recommends it over classical Web API controllers.\r\n* An in-memory data store is used to store the items. In a production app, you would use some data abstraction framework like Entity Framework, Linq2DB, etc, over a database. You would also need some way to version and maintain the schema.\r\n* I've applied ARIA tags to where they make sense. These aren't required, just a statement that accessibility matters.\r\n* I've structured the client and server how I would expect a production codebase should look like. That being said, the minimal version was a lot smaller given the app itself is fairly trivial.\r\n* LLMs (specifically Copilot+GPT-5.5) were used for review, fixes, styling and for unit test and documentation generation. The bulk of the coding was done manually as I thought this would be a good exercise.\r\n* The client will enter a visible error state if the server is unavailable.\r\n* I've chosen CSS to style the client. On a more complex app, something like Tailwind would be more suitable.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyottaawesome%2Fangular-todo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyottaawesome%2Fangular-todo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyottaawesome%2Fangular-todo/lists"}