SpoonCMS: A minimalist .Net Core CMS for devs, who want to keep coding in .Net

This is a side project I have been toying with for months that came from not wanting to implement a CMS that took over my whole .Net application. This is very much a Beta, but after using it without issues on my 3rd freelance project, and getting some feedback from a small group, I thought I would share it with a larger crowd and get some thoughts. After all, my use cases are pretty similar each time.


This came from formalizing work I had done in one way or another for dozens of freelance projects. I was annoyed that I would have to redeploy for small content updates if I didn’t want a huge, invasive CMS system, which they all seemed to be for .Net lately. So I would build very simple content in, content out systems for HTML and I didn’t want to keep copy/pasting and tweaking each time.

After hearing people had the same frustration, I figured this would be worth sharing and I made a (somewhat) usable admin. It’s nothing fancy at this point, probably never will be, but the directness is part of the appeal for people who have tried it.

Some highlights:

  • After installing the package, 2 lines of code for base setup
  • It is built to be very simple and basic. You put content in, you get content out with a few small features around it.
  • Can use claims or auth attributes to secure the admin.
  • Uses LiteDB for content storage. Light, fast, and easy to make backups. Other providers being considered.

Here is a screenshot of the admin for an example project I created.

A simple example of how I would use SpoonCMS to load content onto my Home Page. The controller would look like:

Container container = SpoonDataWorker.GetContainer("HomePage"); ViewData["HeaderContent"] = container.GetItem("HeaderContent").Value; ViewData["BodyCotentBlock"] = container.GetItem("BodyContentBlock").Value; ViewData["RightRail"] = container.GetItem("RightRailContent").Value; ViewData["LeftNav"] = container.GetItem("LeftNavLinks").Value; ViewData["Footer"] = container.GetItem("FooterContent").Value; 

And my view could look like this:

<body> <div id="header-block">@Html.Raw(ViewData["HeaderContent"])</div> <div id="body-copy">@Html.Raw(ViewData["BodyCotentBlock"])</div> <div id="right-rail">@Html.Raw(ViewData["RightRail"])</div> <div id="left-nav">@Html.Raw(ViewData["LeftNav"])</div> <div id="footer">@Html.Raw(ViewData["Footer"])</div> </body> 

Again, this is nothing fancy, but figured some other people could make user of it. If you have any thoughts, feedback, or features requests, I welcome them.

submitted by /u/Fastbreak99
[link] [comments]

Leave a Reply