{"id":32958258,"url":"https://github.com/Kaliumhexacyanoferrat/GenHTTP","last_synced_at":"2025-11-16T17:02:03.907Z","repository":{"id":34385299,"uuid":"175860955","full_name":"Kaliumhexacyanoferrat/GenHTTP","owner":"Kaliumhexacyanoferrat","description":"Lightweight web server written in pure C# with few dependencies to 3rd-party libraries.","archived":false,"fork":false,"pushed_at":"2025-11-11T23:41:14.000Z","size":13349,"stargazers_count":235,"open_issues_count":31,"forks_count":36,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-12T00:23:26.972Z","etag":null,"topics":["csharp","dotnet","dotnet10","dotnet8","embedded","embedded-server","http","http-rest-api","http-server","net10","net8","nuget","openapi","server","web-server","webserver","webservices","websockets"],"latest_commit_sha":null,"homepage":"https://genhttp.org","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/Kaliumhexacyanoferrat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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},"funding":{"github":"Kaliumhexacyanoferrat"}},"created_at":"2019-03-15T17:06:18.000Z","updated_at":"2025-11-11T23:50:18.000Z","dependencies_parsed_at":"2023-12-21T12:44:08.982Z","dependency_job_id":"62b93b75-105c-47b0-aa42-a7702a4be97a","html_url":"https://github.com/Kaliumhexacyanoferrat/GenHTTP","commit_stats":null,"previous_names":[],"tags_count":72,"template":false,"template_full_name":null,"purl":"pkg:github/Kaliumhexacyanoferrat/GenHTTP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kaliumhexacyanoferrat%2FGenHTTP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kaliumhexacyanoferrat%2FGenHTTP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kaliumhexacyanoferrat%2FGenHTTP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kaliumhexacyanoferrat%2FGenHTTP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kaliumhexacyanoferrat","download_url":"https://codeload.github.com/Kaliumhexacyanoferrat/GenHTTP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kaliumhexacyanoferrat%2FGenHTTP/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284742551,"owners_count":27056072,"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-11-16T02:00:05.974Z","response_time":65,"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":["csharp","dotnet","dotnet10","dotnet8","embedded","embedded-server","http","http-rest-api","http-server","net10","net8","nuget","openapi","server","web-server","webserver","webservices","websockets"],"created_at":"2025-11-12T23:00:34.018Z","updated_at":"2025-11-16T17:02:03.901Z","avatar_url":"https://github.com/Kaliumhexacyanoferrat.png","language":"C#","readme":"# GenHTTP Webserver\n\nGenHTTP is a lightweight web server written in pure C# with a strong focus on developer experience. The main\npurpose of this project is to quickly create web services written in .NET 8 / 9 / 10, allowing developers to concentrate on\nthe functionality rather than on messing around with configuration files or complex concepts.\n\n[![View - Documentation](https://img.shields.io/badge/view-Documentation-AB54FF)](https://genhttp.org/documentation/) [![nuget Package](https://img.shields.io/nuget/v/GenHTTP.Core.svg)](https://www.nuget.org/packages/GenHTTP.Core/) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=GenHTTP\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=GenHTTP) [![Discord](https://discordapp.com/api/guilds/1177529388229734410/widget.png?style=shield)](https://discord.gg/GwtDyUpkpV)\n\n## 🚀 Features\n\n- Setup new webservices in a couple of minutes using [project templates](https://genhttp.org/documentation/content/templates/)\n- Supports [current standards](https://genhttp.org/features/) such as Open API, Websockets, Server Sent Events or JWT authentication\n- Embed web services into a new or already existing console, service, WPF, WinForms, WinUI, MAUI, Avalonia or Uno application\n- Projects are fully described in code - no configuration files needed, no magical behavior you need to learn\n- Optionally supports [Kestrel](https://genhttp.org/documentation/server/engines/) as an underlying HTTP engine (enables HTTP/2 and HTTP/3 via QUIC)\n- [Optimized](https://genhttp.org/features/) out of the box, small memory and storage [footprint](https://genhttp.org/features/#footprint)\n- Grade A+ security level according to SSL Labs\n  \n## 📖 Getting Started\n\nThis section shows how to create a new project from scratch using project templates and how to extend your existing\napplication by embedding the GenHTTP engine.\n\n\u003e [!NOTE]  \n\u003e This is a brief overview to get you running. You might want to have a look at\n\u003e the [tutorials](https://genhttp.org/documentation/tutorials/) for detailed step-by-step guides.\n\n### New Project\n\nProject templates can be used to create apps for typical use cases with little effort. After installing\nthe [.NET SDK](https://dotnet.microsoft.com/en-us/download) and the templates via `dotnet new -i GenHTTP.Templates` in\nthe terminal, the templates are available via the console or directly in Visual Studio:\n\n\u003cimg src=\"https://user-images.githubusercontent.com/4992119/146939721-2970d28c-61bc-4a9a-b924-d483f97c8d8e.png\" style=\"width: 30em;\" /\u003e\n\nTo create a project by using the terminal, create a new folder for your app and use one of the following commands:\n\n| Template                      | Command                                     | Documentation                                                                                                    |\n|-------------------------------|---------------------------------------------|------------------------------------------------------------------------------------------------------------------|\n| REST Webservice               | `dotnet new genhttp-webservice`             | [Webservices](https://genhttp.org/documentation/content/frameworks/webservices/)                                 |\n| REST Webservice (single file) | `dotnet new genhttp-webservice-minimal`     | [Functional Handlers](https://genhttp.org/documentation/content/frameworks/functional/)                          |\n| REST Webservice (controllers) | `dotnet new genhttp-webservice-controllers` | [Controllers](https://genhttp.org/documentation/content/frameworks/controllers/)                                 |\n| Websocket                     | `dotnet new genhttp-websocket`              | [Websockets](https://genhttp.org/documentation/content/frameworks/websockets/)                                   |\n| Server Sent Events (SSE)      | `dotnet new genhttp-sse`                    | [Server Sent Events](https://genhttp.org/documentation/content/handlers/server-sent-events/)                     |\n| Website (Static HTML)         | `dotnet new genhttp-website-static`         | [Statics Websites](https://genhttp.org/documentation/content/frameworks/static-websites/)                        |\n| Single Page Application (SPA) | `dotnet new genhttp-spa`                    | [Single Page Applications (SPA)](https://genhttp.org/documentation/content/frameworks/single-page-applications/) |\n\nAfter the project has been created, you can run it via `dotnet run` and access the server via http://localhost:8080.\n\n### Extending Existing Apps\n\nIf you would like to extend an existing .NET application, just add a nuget reference to the `GenHTTP.Core` nuget package. You can then spawn a new server instance with just a few lines of code:\n\n```csharp\nvar content = Content.From(Resource.FromString(\"Hello World!\"));\n\nvar host = await Host.Create()\n                     .Handler(content)\n                     .Defaults()\n                     .StartAsync(); // or .RunAsync() to block until the application is shut down\n```\n\nWhen you run this sample it can be accessed in the browser via http://localhost:8080.\n\n### Next Steps\n\nThe [documentation](https://genhttp.org/documentation/) provides a step-by-step starting guide as well as additional\ninformation on how to\nimplement [webservices](https://genhttp.org/documentation/content/frameworks/webservices/), [minimal webservices](https://genhttp.org/documentation/content/frameworks/functional/), [controller-based webservices](https://genhttp.org/documentation/content/frameworks/controllers/), [static websites](https://genhttp.org/documentation/content/frameworks/static-websites/),\nor [single page applications](https://genhttp.org/documentation/content/frameworks/single-page-applications/) and how\nto [host your application](https://genhttp.org/documentation/hosting/) via Docker.\n\nIf you encounter issues implementing your application, feel free\nto [join our Discord community](https://discord.gg/GwtDyUpkpV) to get help.\n\n## 💻 Supported Platforms\n\nGenHTTP targets all .NET versions currently [supported by Microsoft](https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core).\nMajor versions are released once a year, following the .NET release cycle.\nAdditionally, our automated tests ensure full compatibility on the following platforms:\n\n| OS      | Architectures           |\n|---------|-------------------------|\n| Linux   | `x64`, `arm32`, `arm64` |\n| Windows | `x64`, `arm64`          |\n| macOS   | `x64`, `arm64`          |\n\n## ⚙️ Building the Server\n\nTo build the server from source, clone this repository and run the playground project launcher for .NET 10:\n\n```sh\ngit clone https://github.com/Kaliumhexacyanoferrat/GenHTTP.git\ncd ./GenHTTP/Playground\ndotnet run\n```\n\nThis will build the playground project launcher with all the server dependencies and launch the server process on port 8080. You can access the playground in the browser via http://localhost:8080.\n\n## 🙌 Contributing\n\nWriting a general purpose web application server is a tremendous task, so any contribution is very welcome. Besides\nextending the server core, you might want to\n\n- Leave a star on GitHub\n- Extend the content capabilities of the server (e.g. by adding a new serialization format or rendering engine)\n- Refine our [project templates](https://genhttp.org/documentation/content/templates/)\n- Perform code reviews\n- Analyze the performance or security of the server\n- Clarfify and extend our tests\n- Improve the documentation on the [website](https://genhttp.org/) or in code\n\nIf you would like to contribute, please also have a look at\nthe [contribution guidelines](https://github.com/Kaliumhexacyanoferrat/GenHTTP/blob/master/CONTRIBUTING.md) and\nthe [good first issues](https://github.com/Kaliumhexacyanoferrat/GenHTTP/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22).\n\n## 🏺 History\n\nThe web server was originally developed in 2008 to run on a netbook with an Intel Atom processor. Both IIS and Apache\nfailed to render dynamic pages on such a slow CPU back then. The original project description can still be found\non [archive.org](https://web.archive.org/web/20100706192130/http://gene.homeip.net/GenHTTPWebsite/). In 2019, the source\ncode has been moved to GitHub with the goal to rework the project to be able to run dockerized web applications written\nin C#. In 2024 the focus has shifted towards API development, dropping support for generating graphical web applications.\n\n## 📌 Links\n\n- Related to\n  GenHTTP: [Templates](https://github.com/Kaliumhexacyanoferrat/GenHTTP.Templates) | [Website](https://github.com/Kaliumhexacyanoferrat/GenHTTP.Website)\n- Reference\n  projects: [GenHTTP Gateway](https://github.com/Kaliumhexacyanoferrat/GenHTTP.Gateway) | [MockH](https://github.com/Kaliumhexacyanoferrat/MockH)\n- Similar\n  projects: [Wired.IO](https://github.com/MDA2AV/Wired.IO) | [EmbedIO](https://github.com/unosquare/embedio) | [NetCoreServer](https://github.com/chronoxor/NetCoreServer) | [Watson Webserver](https://github.com/jchristn/WatsonWebserver) | [SimpleW](https://github.com/stratdev3/SimpleW)\n\n## 🙏 Thanks\n\n- Powered by [.NET](https://github.com/dotnet/core)\n- Modules implemented with [NSwag](https://github.com/RicoSuter/NSwag) (Open API), [Fleck](https://github.com/statianzo/Fleck) (WebSockets)\n","funding_links":["https://github.com/sponsors/Kaliumhexacyanoferrat"],"categories":["Web Servers","NET Conf"],"sub_categories":["GUI - other"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKaliumhexacyanoferrat%2FGenHTTP","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKaliumhexacyanoferrat%2FGenHTTP","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKaliumhexacyanoferrat%2FGenHTTP/lists"}