Comment by utf_8x

14 days ago

I'm working on a "toy" .NET web framework that has no dependencies on the ASP.NET Core Web SDK, runs fully on the "base" .NET Core SDK and can easily be embedded in existing applications.

https://github.com/WispFramework/Wisp, https://wispframework.github.io/Wisp/

It tries to be reasonably lightweight but batteries-included, with extra features in separate "extensions" packages. It's also designed to be modular. All functionality has a default implementation but can easily be replaced if desired. It uses the Fluid template engine[1] (a .NET implementation of the Liquid language).

It's been a great way to dig into more advanced concepts like reflection and HTTP internals and while it's probably not safe to use in production, I have used it to build small private apps with great success.

The current major pain points are the lack of websocket support, which I'm planning to add soon, and the general fragility of the NetCoreServer[2] based HTTP backend, which I'm planning to replace with EmbedIO. (Ideally, I would love to use Kestrel here, but it's so deeply baked into ASP.NET Core that you can't use it without pulling in the whole Web SDK)

The documentation is also pretty incomplete but I hate writing docs so I find it hard to force myself to do it.

[1] https://github.com/sebastienros/fluid

[2] https://github.com/chronoxor/NetCoreServer

(LLM Disclaimer: This project is not vibe-coded. Most of the code is written by hand, with some input from ChatGPT being used as a fancy search engine. The docs are written by hand and then fed through ChatGPT to make them more readable)