The 10.1 release is a major release which includes developer productivity, usability, security and performance improvements. The theme of the 10.1 release was "content management" and there were a variety of powerful new features which were added to the framework to cater to enterprise content scenarios.
Site Groups
One of the benefits of a multi-tenant architecture is that you have a control plane where you can easily manage all of the tenants and even group them together to define advanced workflows or orchestration. In Oqtane 10.1 a new capability has been introduced called Site Groups where multiple sites can be combined to form a group and that group can be assigned a type which defines its behavior. Some examples of behaviors are content synchonization, change detection, and content localization.
Content Synchronization
A common enterprise scenario is having a Staging site and a Production site. All of the content management activities are performed on the Staging site (ie. adding/modifying/deleting pages, modules, content, files, etc...) and once the site has been fully reviewed and approved by a marketing and/or legal team, the content and configuration is replicated to the Production site. Oqtane 10.1 adds a Content Synchronization capability which enables this Staging/Production scenario, as well as other scenarios where you may want to synchronize content across sites (ie. duplication, testing, etc...)
Content Localization
Oqtane has supported localization for the administrative UI since 2021, however it has never supported localization of user contributed content. In Oqtane 10.1 a new field has been added to each site so that the content language can now be specified. A common enterprise scenario for global organizations is having a Primary site where all content is managed in a language which is familiar to the marketing team, and then multiple other sites which are essentially replicas, but with the content translated into a different language. Synchronization is still necessary in this scenario when content is modified on the Primary site, however you do not want the content from the Primary site to overwrite the translated content on the other sites. Instead, you simply want to notify the translators who are responsible for the other sites so they can make the necessary changes. Oqtane 10.1 includes a Content Localization group type and Change Detection group type to satisfy these requirements.
Content Versioning
One of the most common mechanisms for managing content in Oqtane is via the HtmlText module. The module has always supported versioning to preserve all changes and enable you to rollback to a prior version. In Oqtane 10.1 the module has been enhanced with improved caching as well as the ability to automatically trim the number of versions which are retained to optimize database size and performance (previously it retained every version indefinitely).
Global Replace
Sometimes there is a need to update content globally across your entire site. This is common when someone's name or job title changes, a product is rebranded, etc... Since a site is comprised of many different types of content it is often a tedious and manual process to make these updates. In Oqtane 10.1 a Global Replace feature was added that allows you to find and replace content across an entire site. It has a variety of options and supports Site (Name, Head Content, Body Content), Pages (Name, Title, Head Content, Body Content, Modules (Title, Header, Footer), and Module Content (via IPortable).
Copy Page
Oqtane has always supported the ability to add or copy a module from one page to another. However if your primary goal was to make an exact copy of all of the configuration and content for a page, the process was rather tedious. Oqtane 10.1 provides the ability to copy a complete page in a site, including all modules and content.
Body Content
The Body Content field in the Site and Page management areas was originally added to provide a way for administrators to add custom script elements to the body of a page. In Oqtane 10.1 this has been enhanced to allow for any type of content to be specified. A perfect example where this is useful, is when integrating Google Tag Manager and including the noscript element in the page body.
Site Tasks
A common type of workload in a web application is an adhoc task which is initiated by a user and needs to run asynchronously so that it does not block the UI thread. For these types of tasks it does not make sense to create a distinct Scheduled Job which constantly polls and waits for the specific task to occur. Instead, it is much more efficient to have a queue where these tasks can be registered, and have a single dedicated job which executes them in the background. Oqtane 10.1 includes a new ISiteTask interface as well as a SiteTask API to satisfy this developer requirement.
Other Technical Enhancements
Oqtane 10.1 includes the ability for developers to use standard Blazor page attributes in their Index.razor components to define the page route where a component will be displayed. For example, specifying @page "/test" will automatically include the module component on the "test" page within your Oqtane site. Similarly, support was also added for security attributes... for example @attribute [Authorize] indicates that Registered Users should be able to View the module component on a page. Behind the scenes this new enhancement utilizes the Routable Modules capability which was added to Oqtane in 2023.
Another enhancement in Oqtane 10.1 is the ability to define the Title property in your Index.razor component (ie. public override string Title => "My Module Name"; ) and it will be discovered at startup and used as the module name (ie. in the Control Panel, etc...). Previously the only way to specify the name of a module was to create a ModuleInfo.cs class and specify a Name in the ModuleDefinition. For simple modules it is not always necessary to create a ModuleInfo.cs class.
When working with static assets (ie. JavaScript, CSS, or images) there is sometimes a need to force the browser to reload them rather than using the version in the cache. If the static assets are part of a Theme or Module, a unique fingerprint is used to identify static assets. The fingerprint is based on the last modified date of the Theme or Module. In Oqtane 10.1 if you navigate to the Edit UI for Themes or Modules and click Save it will update the last modified date which will result in a change in the fingerprint which will force the browser to reload the related static assets (previously this required an application restart).
Security
This release has been upgraded to the latest .NET SDK version 10.0.3 which includes security patches for any issues identified in prior .NET 10 SDK releases from Microsoft.
Open Source
To date, the open source project has recorded over 3453 pull requests from 58 contributors and has published 65 official releases, which ranks it among the most active open source projects within the .NET Foundation. The Oqtane framework continues to evolve at a rapid pace to meet the needs of .NET developers. The 10.1.0 release is available for download on Github and is running in production at https://www.oqtane.org, https://www.blazorcms.net, and https://www.blazorkit.net.
Oqtane Community Standup
Many of these capabilities will be demonstrated at the next Oqtane Community Standup on Wednesday, March 4th from 12:00-1:00 PM ET. Everyone is welcome to attend.
Hello Oqtane, I've been following your development and love the pace at which you're adding features I don't know if I mentioned this before.
A lot of times for developers a key thing is a friendly license for commercial paths with options to buy enhancements add-ons.
But more than that the ability to build business applications really fast to support SAsS and vms on Linux with strong multi-tenant users and groups and permissions and roles almost like a WordPress experience for the users menus configurations and such is lacking in ASP platform I'm hoping this will be an improvement and a good option.
Are there any plans to make it developer friendly for business applications most of the market is taken over by abp.io or serenity.is etc...
It would be nice to see a road map or a plan so people can contribute online as well.
Another question I had was is it possible to simply import HTML and CSS for example I'm able to acquire or we have existing HTML and CSS guides with implemented pages would it be easy to retrofit and implement within octane to get that styling.
Also having a default grade crud capability would be awesome
Awesome stuff! thanks!
@Ed Oqtane has an MIT open source license which is considered to be business friendly as it does not have any of the restrictions or concerns of a GPL license. Oqtane also already has a marketplace at www.oqtane.net where people can download/buy add-ons.
Oqtane is built on .NET Core so it is cross platform and runs on Linux. It is multi-tenant and has a robust security architecture for managing users/roles/permissions.
I am guessing you have never used Oqtane, as it is already developer friendly for business applications. It is a full featured web application framework which was primarily created for developers.
Oqtane has had 58 contributors and is very open to pull requests from the community. Larger features are usually discussed openly on GitHub or in the monthly Oqtane Community Standup meetings. The next feature on the roadmap is focused on "scale-out" scenarios.
It is absolutely possible to import HTML and CSS - many users are migrating from older CMS systems or static websites to Oqtane.
If you are referring to the ability to create, read, update, and delete data... Oqtane has always included module templates which allow you to spin up a fully functional CRUD application with the click of a button. The template provided a starting point for creating your own custom modules.