The OnTopic library is a .NET-based content management system (CMS) designed around structured schemas ("Content Types") and optimized to simplify team-based workflows with distinct roles for content owners, backend developers, and graphic producers.
The OnTopic library acknowledges that the roles of developers, designers, and content owners are usually compartmentalized and, thus, optimizes for the needs of each.
- Content owners have access to an editor that focuses exclusively on exposing structured data; this includes support for custom content types (e.g., "Job Posting", "Blog Post", &c.)
- Backend developers have access to data repositories, services, and a rich entity model in C# for consuming the structured data and implementing any business logic via code.
- Frontend developers have access to light-weight views based on purpose-built view models, thus allowing them to focus exclusively on presentation concerns, without any platform-specific knowledge.
This is contrasted to most traditional CMSs, which attempt to coordinate all of these via an editor by exposing design responsibilities (via themes, templates, and layouts) as well as development responsibilities (via plug-ins or components). This works well for a small project without distinct design or development resources, but introduces a lot of complexity for more mature teams with well-established roles.
In addition, OnTopic is optimized for multi-client/multi-device scenarios since the content editor focuses exclusively on structured data. This allows entirely distinct presentation layers to be established. For instance, the same content can be accessed by an iOS app, a website, and even a web-based API for third-party consumption. By contrast, most CMSs are designed for one client only: a website (which may be mobile-friendly via responsive templates.)
OnTopic.Topics
: Core domain model including theTopic
entity and service abstractions such asITopicRepository
.
OnTopic.Data.Sql
:ITopicRepository
implementation for storing and retrievingTopic
entities in a Microsoft SQL Server database.OnTopic.Data.Sql.Database
: Microsoft SQL Server database schema, including tables, views, functions, and stored procedures needed to support theOnTopic.Data.Sql
library.
OnTopic.Data.Caching
:ITopicRepository
façade that caches data accessed in memory for fast subsequent retrieval.
Note: Additional data access layers can be created by implementing the
ITopicRepository
interface.
OnTopic.AspNetCore.Mvc
: ASP.NET Core 2.x implementation, including a defaultTopicController
, allowing templates to be created using*.cshtml
pages and view components.OnTopic.Web.Mvc
: ASP.NET MVC 5.x implementation, including a defaultTopicController
, allowing templates to be created using*.cshtml
pages.OnTopic.Web
: Legacy ASP.NET WebForms implementation, allowing templates to be created using*.aspx
pages. This is considered obsolete, and intended exclusively for migration to new versions.OnTopic.ViewModels
: Standard view models for exposing factory=default schemas of shared content types. These can be extended, overwritten, or ignored entirely by the presentation layer implementation; they are provided for convenience.
OnTopic.Tests
: .NET Unit Tests, broken down by target class.OnTopic.AspNetCore.Mvc.Tests
: .NET Unit Tests for theOnTopic.AspNetCore.Mvc
implementation.
OnTopic.Editor.AspNetCore
: ASP.NET Core 3.1 implementation of the editor interface.OnTopic.Editor
: Legacy ASP.NET WebForms implementation of the editor interface.
OnTopic is owned and maintained by Ignia.