{"id":18842017,"url":"https://github.com/mmacneil/fullstack-jobs","last_synced_at":"2025-04-14T07:31:27.705Z","repository":{"id":38618536,"uuid":"221827639","full_name":"mmacneil/fullstack-jobs","owner":"mmacneil","description":"Real(ish) demo using Angular with ASP.NET Core GraphQL and IdentityServer.","archived":false,"fork":false,"pushed_at":"2023-01-07T12:44:12.000Z","size":5115,"stargazers_count":88,"open_issues_count":27,"forks_count":30,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-27T21:12:40.247Z","etag":null,"topics":["angular","apollo-client","aspnet-core","entity-framework-core","graphql","identityserver4","sql-server"],"latest_commit_sha":null,"homepage":"https://fullstackmark.com/post/22/build-an-authenticated-graphql-app-with-angular-aspnet-core-and-identityserver-part-1","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/mmacneil.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}},"created_at":"2019-11-15T02:30:03.000Z","updated_at":"2024-09-03T18:54:34.000Z","dependencies_parsed_at":"2023-02-07T04:46:31.431Z","dependency_job_id":null,"html_url":"https://github.com/mmacneil/fullstack-jobs","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmacneil%2Ffullstack-jobs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmacneil%2Ffullstack-jobs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmacneil%2Ffullstack-jobs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmacneil%2Ffullstack-jobs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mmacneil","download_url":"https://codeload.github.com/mmacneil/fullstack-jobs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248839369,"owners_count":21169802,"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","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","apollo-client","aspnet-core","entity-framework-core","graphql","identityserver4","sql-server"],"created_at":"2024-11-08T02:53:22.467Z","updated_at":"2025-04-14T07:31:27.153Z","avatar_url":"https://github.com/mmacneil.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fullstack-jobs\nReal(ish) demo using Angular with ASP.NET Core GraphQL and IdentityServer.\n\nBased on the multi part tutorial series:\n\nPart 1: [Building an ASP.NET Core auth server using IdentityServer](https://fullstackmark.com/post/22/build-an-authenticated-graphql-app-with-angular-aspnet-core-and-identityserver-part-1)\n\nPart 2: [Angular app foundation with user signup and login features](https://fullstackmark.com/post/23/build-an-authenticated-graphql-app-with-angular-aspnet-core-and-identityserver-part-2)\n\nPart 3: [Implementing an ASP.NET Core GraphQL API with authorization using GraphQL .NET](https://fullstackmark.com/post/24/build-an-authenticated-graphql-app-with-angular-aspnet-core-and-identityserver-part-3)\n\nPart 4: [Integrating Angular with a backend GraphQL API using Apollo Client ](https://fullstackmark.com/post/25/build-an-authenticated-graphql-app-with-angular-aspnet-core-and-identityserver-part-4)\n\n## The App\n![alt text](https://raw.githubusercontent.com/mmacneil/fullstack-jobs/master/docs/img/angular-aspnet-core-job-application-flow.gif \"Build an Authenticated GraphQL App with Angular, ASP.NET Core and IdentityServer\")\n\n![alt text](https://github.com/mmacneil/fullstack-jobs/blob/master/docs/img/angular-aspnet-core-job-edit-flow.gif \"Build an Authenticated GraphQL App with Angular, ASP.NET Core and IdentityServer\")\n\n## Development Environment\n\n- .NET Core 3.1\n- Visual Studio Code\n- Visual Studio 2019 Professional for Windows\n- SQL Server Express 2016 LocalDB\n- \u003ca href=\"https://nodejs.org/en/download/\" target=\"_blank\"\u003eNode.js with npm\u003c/a\u003e\n- \u003ca href=\"https://cli.angular.io/\" target=\"_blank\"\u003eAngular CLI\u003c/a\u003e\n\n## Setup\n\nTo build and run the solution:\n\n#### Get the Code\n\nClone or create a template from this repository.\n\n#### Create the Sql Server Database\n\nUse migrations to create the database as follows:\n\nFrom the command line use the dotnet CLI to apply the migrations from each project's `Infrastructure` folder.\n1. \u003ccode\u003eFullStackJobs.AuthServer.Infrastructure\u003e dotnet ef database update --context PersistedGrantDbContext\u003c/code\u003e\n2. \u003ccode\u003eFullStackJobs.AuthServer.Infrastructure\u003e dotnet ef database update --context AppIdentityDbContext\u003c/code\u003e\n3. \u003ccode\u003eFullStackJobs.GraphQL.Infrastructure\u003e dotnet ef database update\u003c/code\u003e\n   \n#### Build and Run the AuthServer and GraphQL API Backend Projects\n\n##### Visual Studio for Windows\n\nOpen the `FullStackJobs.sln` solution file which contains both the [AuthServer](https://github.com/mmacneil/fullstack-jobs/tree/master/src/Backend/FullStackJobs.AuthServer) and [GraphQL API](https://github.com/mmacneil/fullstack-jobs/tree/master/src/Backend/FullStackJobs.GraphQL) projects.  You must configure the solution to start up both projects.  Once complete, start the solution in the debugger or use the CLI `dotnet run` command to run them individually.\n\n*todo*: Add instructions for VS Code.\n\n#### Build and Run the Angular Frontend Project\n\n1. Use `npm` to install depdendencies from `package.json'.\n\u003cpre\u003e\u003ccode\u003eSpa\u003e npm install\u003c/code\u003e\u003c/pre\u003e\n\n2. Use the Angular CLI to build and launch the app on the webpack development server.\n\u003cpre\u003e\u003ccode\u003eSpa\u003e ng serve\u003c/code\u003e\u003c/pre\u003e\n\n#### View the App\n\nPoint your browser to *https://localhost:4200* to access the application.\n\n#### Host Configuration\n\nThe `AuthServer` is configured to run at *https://localhost:8787* while the `GraphQL API` is set to *https://localhost:5025*.\n\nIf you need to change these locations for your environment there are several spots in the solution you must update.\n\n*Angular*\n \n- The `RESOURCE_BASE_URI` and `AUTH_BASE_URI` values in the [config service](https://github.com/mmacneil/fullstack-jobs/blob/master/src/Frontend/Spa/src/app/core/services/config.service.ts).\n\n*FullStackJobs.GraphQL*\n\n- The OpendIDConnect `Authority` in [Startup](https://github.com/mmacneil/fullstack-jobs/blob/master/src/Backend/FullStackJobs.GraphQL/FullStackJobs.GraphQL.Api/Startup.cs)\n\n\u003cpre\u003e\u003ccode\u003eservices.AddAuthentication(options =\u0026gt;\n{\n  options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;\n  options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;\n}).AddJwtBearer(o =\u0026gt;\n{\n  o.Authority = \u0026quot;https://localhost:8787\u0026quot;;\n  o.Audience = \u0026quot;resourceapi\u0026quot;;\n  o.RequireHttpsMetadata = false;\n});\n\u003c/code\u003e\n\u003c/pre\u003e\n\n\n#### Contact\n\nmark@fullstackmark.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmacneil%2Ffullstack-jobs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmmacneil%2Ffullstack-jobs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmacneil%2Ffullstack-jobs/lists"}