{"id":17543328,"url":"https://github.com/tsmoreland/issue-tracker-net","last_synced_at":"2025-10-13T15:33:15.335Z","repository":{"id":38380947,"uuid":"461032521","full_name":"tsmoreland/issue-tracker-net","owner":"tsmoreland","description":"API demo application","archived":false,"fork":false,"pushed_at":"2023-11-03T01:37:17.000Z","size":1596,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-06T12:59:11.095Z","etag":null,"topics":["aspnet-web-api","aspnetcore","csharp","dotnetcore","graphql","grpc","rest-api","swagger"],"latest_commit_sha":null,"homepage":"","language":"C#","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/tsmoreland.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}},"created_at":"2022-02-18T23:08:45.000Z","updated_at":"2023-07-18T09:10:29.000Z","dependencies_parsed_at":"2023-02-16T22:31:31.968Z","dependency_job_id":"c4180f5a-dc98-46d8-9398-59cbc7c3d409","html_url":"https://github.com/tsmoreland/issue-tracker-net","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tsmoreland/issue-tracker-net","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsmoreland%2Fissue-tracker-net","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsmoreland%2Fissue-tracker-net/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsmoreland%2Fissue-tracker-net/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsmoreland%2Fissue-tracker-net/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsmoreland","download_url":"https://codeload.github.com/tsmoreland/issue-tracker-net/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsmoreland%2Fissue-tracker-net/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279015927,"owners_count":26085778,"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-10-13T02:00:06.723Z","response_time":61,"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":["aspnet-web-api","aspnetcore","csharp","dotnetcore","graphql","grpc","rest-api","swagger"],"created_at":"2024-10-21T00:23:47.240Z","updated_at":"2025-10-13T15:33:15.308Z","avatar_url":"https://github.com/tsmoreland.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sample API(s)\n\n[![CI dotnet](https://github.com/tsmoreland/issue-tracker-net/actions/workflows/ci-dotnet.yml/badge.svg)](https://github.com/tsmoreland/issue-tracker-net/actions/workflows/ci-dotnet.yml)\n\nSimple REST API(s) demonstrating swagger gen with an increasingly complex range of methods (eventually multiple apps to covert the different levels)\n\n## Tech used\n\nThe API is emulating a ticket management like system mostly because I couldn't think of anything better to model.  It's written using .NET6 ASP.NET Core with Entity Framework Core using SQLite database\n\n## Database\n\nThe database is migrated (created) on first run so no additional work required there, it even seeds a few entries.\n\n## OpenAPI\n\nThe API is documented using Swashbuckle to produce OpenAPI v3 documents for the v1 and v2 of the API.\n\n## Code structure\n\nthe projects are separated mostly using HostedStartup assemblies which is a bit more complex to pull off and was done mostly as an excuse to try that out.  The App still directly links each of the projects and their abstractions but the eventual goal is to maybe publish them to a folder like ```target/``` so they don't need to (they're found by filename convention and HostingStartup class).\n\nThe projet layout is inspired by domain driven design:\n\n### Domain \nThe entities / projections and domain services as well as some of the entity configuration (only those related to validation rules)\n\n## Infrastructure\nDbContext and repository wrapper, repository may one day be changed to a facade exposing one DbSet\u003cT\u003e and a context itself as a unit of work\n\n## API\nThe application layer, including REST controllers, GRPC Services, ... though for the time being these are kept separate for more isolated examples.  These could also represent a microservice if deployed as a full application\n\n## App \nSince this isn't a Microsoervice for now we instead use an App for each though this may yet change\n\nAs there are multiple Applications they are prepending by the type, currently this consists of RestApi - A RESTful service and GrcpApi, the beginnings of an equivalent GRPC API\n\n### GRPC Notes\n\nThe GRPC app requires a valid certifacate, as a way around this for development purposes the HTTP port should be used but does still require HTTP/2 usage which has been configured in the app\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsmoreland%2Fissue-tracker-net","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsmoreland%2Fissue-tracker-net","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsmoreland%2Fissue-tracker-net/lists"}