<div dir="ltr"><div><div>Hello all,<br><br></div>I have been working on a web framework that I use for my personal projects and I thought I would share my small progress. I started this project several months ago when I hit a big bump in difficulty going from a simple skeleton project to a more intricate project using alternative frameworks.<br>

<br>Lately I've added three main features: WebSockets, Cache and Redis.<br><br></div><div>WebSockets use the same WhebT interface as the standard HTTP handlers allowing you to share functions and middlware accross your application.<br>

<br></div><div>Cache is a new plugin for simplistic Caching. It provides an interface to cache ByteStrings under Text keys. Like the other plugins, it is backend agnostic so you can write your own backend or use the prebuilt Redis cache (this requires you to configure your redis instance for caching).<br>

<br></div><div>In addition to Redis acting as a Cache, you can also use it as a database and as a backend for the plugins Auth and Sessions.<br></div><br>You can mix Redis with other plugins. For one of my projects I use the MongoDB plugin for auth and storage and Redis as a cache for the queries. <br>

<div><br></div><div>Also included are typed web-routes, stateful cookie handling, and some other stuff.<br><br></div><div>Feel free to check it out. I tried to include some documentation and examples that I refer to when I use it. Maybe it will help someone. Its far from perfect, so if you find any problems, let me know. <br>

</div><div><br><a href="https://hackage.haskell.org/package/Wheb" target="_blank">https://hackage.haskell.org/package/Wheb</a><br><a href="https://github.com/hansonkd/Wheb-Framework" target="_blank">https://github.com/hansonkd/Wheb-Framework</a><br>
<br>
</div><div>Cheers,<br></div><div>Kyle Hanson<br></div></div>