{"id":15916687,"url":"https://github.com/kylemit/nestjs-vs-aspnet","last_synced_at":"2026-04-26T12:32:34.654Z","repository":{"id":71746205,"uuid":"319715482","full_name":"KyleMit/nestjs-vs-aspnet","owner":"KyleMit","description":"Comparrison of AspNet vs NestJs","archived":false,"fork":false,"pushed_at":"2020-12-09T21:44:30.000Z","size":396,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-11T15:51:53.182Z","etag":null,"topics":["asp-net-mvc","nestjs","tech-talk"],"latest_commit_sha":null,"homepage":"https://nestjs-vs-aspnet.netlify.app/","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/KyleMit.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}},"created_at":"2020-12-08T17:44:10.000Z","updated_at":"2025-01-02T07:24:12.000Z","dependencies_parsed_at":"2023-02-22T13:46:12.393Z","dependency_job_id":null,"html_url":"https://github.com/KyleMit/nestjs-vs-aspnet","commit_stats":{"total_commits":14,"total_committers":1,"mean_commits":14.0,"dds":0.0,"last_synced_commit":"587cf08447d190fa83b96daaaeb83a77c1efe77f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/KyleMit/nestjs-vs-aspnet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyleMit%2Fnestjs-vs-aspnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyleMit%2Fnestjs-vs-aspnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyleMit%2Fnestjs-vs-aspnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyleMit%2Fnestjs-vs-aspnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KyleMit","download_url":"https://codeload.github.com/KyleMit/nestjs-vs-aspnet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyleMit%2Fnestjs-vs-aspnet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32297894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"last_error":"SSL_read: 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":["asp-net-mvc","nestjs","tech-talk"],"created_at":"2024-10-06T18:03:22.895Z","updated_at":"2026-04-26T12:32:34.634Z","avatar_url":"https://github.com/KyleMit.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\nmarp: true\ntheme: uncover\ntitle: NestJS vs AspNET\ndescription: Comparison of web server frameworks\nurl: https://nestjs-vs-aspnet.netlify.app/\n---\n\n\u003c!--\nkick off with:\n\n```bash\n# serve\nmkdir -p _site/_assets \u0026\u0026 cp -r _assets _site/ \u0026\u0026 (npx live-server _site \u0026) \u0026\u0026 (npx @marp-team/marp-cli -w readme.md -o _site/index.html --html \u0026)\n\n# build\nmkdir -p _site/_assets \u0026\u0026 cp -r _assets _site/ \u0026\u0026 npx @marp-team/marp-cli readme.md -o _site/index.html --html\n```\n\n--\u003e\n\n# AspNET vs NestJS\n\n\u003cstyle\u003e\n.logos p { display: flex; justify-content: center; align-items: center; }\n.logos img { width: 124px; margin: 20px; }\nimg {max-width: 100%}\n\u003c/style\u003e\n\n\u003cdiv class=\"logos\"\u003e\n\n![aspnet](/_assets/aspnet-core.png) vs ![nestjs](/_assets/nestjs.png)\n\n\u003c/div\u003e\n\nwith me, Kyle 👋\n\n\n---\n\n## [**ASP.NET**](https://dotnet.microsoft.com/apps/aspnet)\n\n\u003e ASP.​NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.\n\n---\n\n## [**NestJS**](https://nestjs.com/)\n\n\u003e A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript \u0026 JavaScript (ES6, ES7, ES8) 🚀\n\n---\n\n## Github\n\nFully Open Source - Free as in Freedom 😊\n\n- [nestjs/nest](https://github.com/nestjs/nest)\n- [dotnet/aspnetcore](https://github.com/dotnet/aspnetcore)\n\n---\n\n## Docs\n\nWell written docs 📝\n\n- [NestJS Documentation](https://docs.nestjs.com/)\n- [ASP.NET Core Docs](https://docs.microsoft.com/en-us/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-5.0)\n\n---\n\n\u003c!--\n## Overview\n\n- Get Started\n- Syntax\n  - Controllers\n  - Dependency Injection\n- Deployment\n\n\n--- --\u003e\n\n\n## Architecture\n\nEvolutions of Prior Art 🏛\n\n- **aspnet** - built on top of dotnet core\n- **nestjs** - built on top of node / express\n\n---\n\n\n## Model View Controller\n\nA common paradigm for your data 🛠\n\n![model view controller](/_assets/model-view-controller.png)\n\n---\n\n## Dependencies\n\nWhat you'll need to get started 💻\n\n---\n\n### Dependencies (.net)\n\n[.NET SDK](https://dotnet.microsoft.com/download/visual-studio-sdks)\n\n```bash\ndotnet tool install --global dotnet-aspnet-codegenerator\ndotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design\n```\n\n---\n\n### Dependencies (nest)\n\n[Node JS](https://nodejs.org/en/download/)\n\n```bash\nnpm install @nestjs/cli -g\n```\n\n---\n\n\n## Getting Started\n\nHello World 👋\n\n---\n\n### Getting Started (.net)\n\n```bash\ndotnet new mvc -o aspnet\n```\n\n---\n\n### Getting Started (nest)\n\n```bash\ngit clone https://github.com/nestjs/typescript-starter.git nestjs --depth 1\ncd nestjs\nnpm install\n```\n\n---\n\n## Running Locally\n\nGetting the project up and running 👩‍💻\n\n---\n\n### Running Locally (.net)\n\n```bash\ndotnet run       # run once\ndotnet watch run # run with watch\n\nopen http://localhost:5000\n```\n\n---\n\n### Running Locally (nest)\n\n```bash\nnpm run start     # run once\nnpm run start:dev # run with watch\n\nopen http://localhost:3000\n```\n\n---\n\n## Entry Point\n\n---\n\n### Entry Point (.net)\n\n```cs\n// Program.cs\npublic static void Main(string[] args)\n{\n    CreateHostBuilder(args).Build().Run();\n}\n\npublic static IHostBuilder CreateHostBuilder(string[] args) =\u003e\n    Host.CreateDefaultBuilder(args)\n        .ConfigureWebHostDefaults(webBuilder =\u003e\n        {\n            webBuilder.UseStartup\u003cStartup\u003e();\n        });\n```\n\n---\n\n### Entry Point (nest)\n\n```ts\n// main.ts\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule);\n  await app.listen(3000);\n}\nbootstrap();\n```\n\n---\n\n## Create Controller\n\n---\n\n### Create Controller (.net)\n\n[nest schematics](https://docs.nestjs.com/cli/usages#nest-generate)\n\n```bash\nnest generate controller weather\n```\n\n---\n\n### Create Controller (nest)\n\n[aspnet-codegenerator](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/tools/dotnet-aspnet-codegenerator?view=aspnetcore-5.0)\n\n```bash\ndotnet aspnet-codegenerator controller -name weather\n```\n\n---\n\n## Controllers\n\n---\n\n\n### Controller (.net)\n\n[Add a controller](https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/adding-controller?view=aspnetcore-5.0\u0026tabs=visual-studio)\n\n```cs\n// Controllers/WeatherController.cs\n[Route(\"weather\")]\npublic class WeatherController : Controller\n{\n    [HttpGet]\n    public IActionResult GetWeather()\n    {\n        return Content(\"Frightful\");\n    }\n}\n```\n\n---\n\n### Controller (nest)\n\n[Controllers](https://docs.nestjs.com/controllers)\n\n```ts\n// weather.controller.ts\n@Controller('weather')\nexport class WeatherController {\n\n  @Get()\n  getWeather(): string {\n    return 'Frightful';\n  }\n}\n```\n\n\n---\n\n## Model Binding\n\n---\n\n### Model Binding (.net)\n\n```cs\n[HttpGet]\n[Route(\"light\")]\npublic IActionResult GetDaylight([FromQuery] int hour)\n{\n    var result = hour \u003c 6 || hour \u003e 18 ? \"Dark\" : \"Light\";\n    return Content(result);\n}\n```\n\n---\n\n### Model Binding (nest)\n\n```ts\n@Get('light')\ngetDaylight(@Query('hour') hour: number): string {\n  console.log(hour);\n  return hour \u003c 6 || hour \u003e 18 ? 'Dark' : 'Light';\n}\n```\n\n---\n\n## Models\n\n---\n\n### Models (.net)\n\n```cs\npublic class Home\n{\n    public Home(string msg)\n    {\n        this.Message = msg;\n    }\n    public string Message { get; set; }\n}\n```\n\n\n---\n\n### Models (nest)\n\n```ts\n@Injectable()\nexport class Home {\n  message: string;\n\n  constructor(msg: string) {\n    this.message = msg;\n  }\n}\n```\n\n---\n\n## Views Setup\n\nNeither solution comes with views in the bare bones setup.\n\nBoth are well supported\n\n---\n\n### Views Setup (.net)\n\n```cs\n// startup.cs\npublic void ConfigureServices(IServiceCollection services)\n{\n    // ...\n    services.AddMvcCore().AddRazorViewEngine();\n    // ...\n}\n```\n\n---\n\n### Views Setup (nest)\n\n[MVC for NestJS](https://docs.nestjs.com/techniques/mvc)\n\n```bash\nnpm install --save hbs\n```\n\n```ts\n// main.ts\napp.useStaticAssets(join(__dirname, '..', 'public'));\napp.setBaseViewsDir(join(__dirname, '..', 'views'));\napp.setViewEngine('hbs');\n```\n\n---\n\n## View Controllers\n\n---\n\n### View Controllers (.net)\n\n```cs\n[Route(\"home\")]\npublic class HomeController : Controller\n{\n    public IActionResult Index()\n    {\n        var model = new Home(\"Hi There!\");\n        return View(model);\n    }\n}\n```\n\n---\n\n### View Controllers (nest)\n\n```ts\n@Controller('home')\nexport class HomeController {\n  @Get()\n  @Render('index')\n  root() {\n    const model = new Home('Hello');\n    return model;\n  }\n}\n```\n\n---\n\n## Views\n\n---\n\n### Views (.net)\n\nRazor Syntax\n\n```cs\n// views/home/index.cshtml\n@model.Message\n```\n\n---\n\n### Views (nest)\n\n[Handlebars / hbs](https://github.com/pillarjs/hbs#readme)\n\n```hbs\n\u003c!-- views/home/index.hbs --\u003e\n{{message}}\n```\n\n\n\n\u003c!-- ---\n\n## Dependency Injection\n\n---\n --\u003e\n\n---\n\n## Resources\n\n- [KyleMit/**nestjs-vs-aspnet**](https://github.com/KyleMit/nestjs-vs-aspnet)\n- [Introduction to NestJS](https://docs.nestjs.com/)\n- [Introduction to ASP.NET Core](https://docs.microsoft.com/en-us/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-5.0)\n\n---\n\n## Fin\n\n### Thanks ya'll! 🎉\n\n### Questions?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkylemit%2Fnestjs-vs-aspnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkylemit%2Fnestjs-vs-aspnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkylemit%2Fnestjs-vs-aspnet/lists"}