this post was submitted on 11 Sep 2023
6 points (100.0% liked)

.NET

1487 readers
9 users here now

Getting started

Useful resources

IDEs and code editors

Tools

Rules

Related communities

Wikipedia pages

founded 1 year ago
MODERATORS
 

Firstly, I need to mention I'm coming back to .Net for the first time in more than 10 years. Last time I used .Net was on a very old .Net Framework 4 ASP.NET commercial fast food ordering application in 2013. Since then I've been working with Environmental Scientists, researchers, and academics, using exclusively Python (Django, Flask, FastAPI, etc) for the last 10 years.

This new project I'm tasked with is a custom content publishing platform, so my first thought is obviously a CMS for the content. I feel that Headless CMS products are the go-to these days, and that fits well with our needs because it is the authoring/admin side that the customer is most interested in. The frontend, or "content consumption" side of things is a custom scientific data visualizer we are building in parallel.

My team has been given a MS Azure Cloud subscription to use, and we want to take advantage of as many "cloud-native" approaches as we can. Eg, using Azure Active Directory (AAD) for SSO, using Azure Blob storage for files, Azure SQL for DB, etc. For that reason, we have decided to use .Net to develop this CMS (plus, one of my guys has 5 years experience in .Net, so we don't want that to go to waste).

There are so many free open-source .Net CMS projects floating around that it should be pretty easy to pick one to use as a base to build upon. But it is proving to be a bit harder to choose than I thought. This is the wish list we are looking for:

  • Free and Open-Source, with permissive licence
  • Self-hosted, ie. not a SaaS
  • Cross-platform, with dotNet6 or dotNet7
  • Needs custom entity types, and entity type instances (we are publishing data types, not Posts and Pages).
  • Customizable content authoring pages for the custom entity types
  • Admin UI written in VueJS or ReactJS
  • Access the content via an Open API
  • Integration with AAD SSO (and bonus if we can use any SAML or OAuth or OIDC Auth)
  • Different user roles (Admin, Author, Reviewer)
  • Use other cloud-native integrations where possible
  • Workflow steps (Draft, Submit, Review, Approve, Publish, Revoke, etc)
  • Content versioning, change tracking
  • Activity auditing

I know this is a pipedream to find one tool that could do all of that out of the box. Back in my Uni days I would have immediately reached for Drupal, but that is PHP, we prefer to not use that anymore. I thought I found the perfect tool when I came across Cofoundry, it ticks a surprisingly large number of those wishlist boxes. The main reasons I am hesitant to go with Cofoundry are:

  • It is a project from 2017. It has continued to be updated, but not very often since 2018. It was ported from .Net Core to dotNet6 back in 2021, but nothing since then.
  • It uses Angular 1 for the JS side of the admin pages (not even Angular 2!)
  • They are very tightly tied into using MS SQL Server for the db with a bunch of custom MS TSQL stored procedures, and using other MS SQL Server-specific features.

I've looked at a bunch of others, but they tend to fall into the camp of SaaS offerings that are focused on publishing Posts and Pages, and not much else, or others that are hobby projects with low user base, and haven't been updated in the last 4 years.

Is there anything I'm missing? I'm looking for something a lot like Cofoundry, but more up to date, not so tightly tied to MSSQL Server, and uses ReactJS or VueJS for the Admin/Authoring pages.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 1 year ago* (last edited 1 year ago)

It does not fulfill your requirements, but I would highly recommended having a look at sanity.io It’s a fantastic data platform and would be a little similar to Django for you in creating a rich editor experience based just on your data model scheme.

It is 100% agnostic to how the data is used in any front ends.