Deliverystack.net

Best Practices in Composable Enterprise Solution Implementation

This blog post presents my perspectives on best practices for implementing composable software solutions. This content is not for software vendors developing products for enterprise customers, but for those customers using those products to implement solutions. Conforming to these suggestions should help you to meet flexibility, scalability, productivity, reliability, maintainability, traceability, agility, and other objectives.…

Cool Tools for Conscia DXO Engineers

This blog post describes some useful tools for software engineers working with the Digital Experience Orchestration (DXO) SaaS platform from Conscia, especially those working with Microsoft Windows and Windows Subsystem for Linux (WSL). If you have suggestions for additional tools or related tools for other platforms, please comment on this blog post. Conscia Debugger and…

Managing DXO Connection Information for cURL

This blog post provides instructions to use environment variables to designate a Conscia DXO Engine API endpoint API for cURL commands and a configuration file to store the Conscia Customer Code and API Token used for connections. I will use this to shorten my cURL examples, to make them less repetitive, and to make them…

Use cURL to Change the Type of an Orchestration Component in the DX Engine

Determine an Endpoint and Obtain an Access Token Determine an API endpoint and obtain an access token as described here: Create the Replacement Component Use DX Studio to create a Component of any type that will replace the existing Component. Alternatively, use the definition of an existing Component to define a new Component. Use the…

cURL Commands for Importing Files into Conscia DX Graph

This blog post provides a list of curl commands relevant to importing files into Conscia DX Graph. You can use these notes quickly import data into DX Graph, specifically from CSV files (Comma-Separated Values). For background information, consult Conscia documentation: Choosing an Endpoint First, choose an API Endpoint, typically one of: The remainder of this…

Conscia DX Engine JavaScript Cheat Sheet

This blog post contains a JavaScript cheat-sheet for working with the Conscia DX Engine. Script Explanation secret(key) Retrieve the value of a secret. processHandlebars(template, values) Process a Handle bars template. componentResponse(key) Access the response of the Component. data Implicitly available to Data Transformation Scripts. body, requestBody, engineResponse Available in Listener definitions. componentExtras(key) Properties of the…

All about Orchestration Components in the DX Engine

This blog post contains information about Orchestration Components in the Conscia Digital Experience Engine (DX Engine), which is part of the Conscia’s SaaS Digital Experience Orchestration (DXO) offering. If you have information or questions about Components, please comment on this blog post. This blog post is part of a series All about the Conscia DX…

All about Component Types in the Conscia DX Engine

This blog post contains information about Orchestration Component Types in the Conscia Digital Experience Engine (DX Engine), which is part of the Conscia’s SaaS Digital Experience Orchestration (DXO) offering. If you have information or questions about Component Types, please comment on this blog post. This blog post is part of a series All about the…

All about Context in the Conscia DX Engine

This blog post contains information about Context in the Conscia Digital Experience Engine (DX Engine), which is part of the Conscia’s SaaS Digital Experience Orchestration (DXO) offering. If you have information or questions about Context, please comment on this blog post. This blog post is part of a series All about the Conscia DX Engine.…

All about Sub Components in the Conscia DX Engine

This blog post contains information about Sub Components in the Conscia Digital Experience Engine (DX Engine), which is part of the Conscia’s SaaS Digital Experience Orchestration (DXO) offering. If you have information or questions about Sub Components, please comment on this blog post. This blog post is part of a series All about the Conscia…

All about the Conscia DX Engine

This blog post contains an index of blog posts all about the Conscia Digital Experience Engine (DX Engine), which is part of the Conscia’s SaaS Digital Experience Orchestration (DXO) offering. Additional Topics (including DX Graph)

Transforming DX Engine Component Responses

This blog post describes five different techniques that you can use to transform the response of a Conscia DX Engine Orchestration Component. If you have any information or questions about transforming Component responses, please comment on this blog post. In the Conscia DX Engine, an Orchestration Component is responsible for one discrete function in an…

Fetching Component and Template Definitions from the Conscia DX Engine

This blog post explains how you can fetch Component and Template definitions from the Conscia Digital Experience (DX) Engine using Conscia’s Webservice APIs. You can use this exported JSON to investigate Template and Component definitions offline, and you can store these definitions in a source code management system and even push them to other Conscia…

Ubuntu Linux: Start Edge Browser in Private Mode by Default

This blog post explains a hack that you can use to configure the Microsoft Edge browser on Ubuntu Linux to start in private mode by default, even when clicking links in emails. I wanted to make the icon for the browser in the dock open in private mode by default. To run the browser in…

First Experiences with WebAssembly 

This blog post describes my first experiences with WebAssembly. I have always tried to avoid front-end development in general, and JavaScript in particular, especially for anything complex, and increasingly as the library churn has increased and relevant toolchains have demonstrated their significant risks. Recently, I investigated TypeScript, which has some advantages, but is just a…

Linux: Use Ctrl+Esc for Activities Overview

This blog post, intended to assist readers transitioning from Microsoft Windows to Linux, explains how to configure at least Ubuntu 20.04.4 LTS to show the Activities Overview when the user presses Ctrl+Esc, providing functionality that matches existing Windows usage patterns. In the days of Windows 95, keyboards had no “Windows” key (called the “Super” key…

Whether to Store Content Management Data Inline or Separately

This blog post provides perspective on when to store data inline, within a single entry in the content management system, and when to store some of that data in separate entries. If you have perspectives on this topic, please comment on this blog post. The first time that I started writing this blog post, I…

Limitation Forwarding though Godaddy Workspace Email to Google Gmail

This blog post describes a workaround for an issue that I experienced while configuring email forwarding, specifically using godaddy webmail email forwarding to gmail addresses. This issue may apply to other configurations and providers. To summarize, it appears that if you forward through godaddy Workspace Webmail to a gmail address, google does not seem to…

Reusing Modular Blocks with the Contentstack SaaS Content Platform

This blog post suggests patterns for reusing content from modular blocks fields of the Contentstack SaaS content platform. To address multiple possible interpretations of the phrase “reusing modular blocks” in the title: This blog post describes how to use data from modular blocks fields of separate entries when rendering or otherwise processing an entry. This…

When to Use Group, Reference, Global, and Modular Blocks Fields in the Contentstack SaaS Content Platform

This blog post provides guidance on when to use group fields, global fields, reference fields, and modular blocks fields with the Contentstack SaaS content platform. Effective use of these data modeling features provides significant capabilities that can improve CMS user experiences as well as developer productivity and satisfaction. If you have perspectives on when to…

External Monitor Support on Ubuntu 20.04.4 LTS (Linux)

This blog post provides suggestions for getting a second monitor working on Linux, specifically Ubuntu 20.04.4 LTS on a Lenovo Legion 5 Pro 16ITH6 with (I believe) an Nvidia RTX 3050 4GB GDDR6 video card. In preparation for Windows 11, I am trying to migrate to Linux. For unknown reasons, the laptop screen was working,…

TypeScript with the Contentstack JavaScript SDK: The signature Stack of Contentstack.Stack is deprecated

This blog post provides a solution for the following deprecation warning message that may appear when using the Contentstack JavaScript content delivery SDK with TypeScript: The signature ‘(api_key: string, access_token: string, environment_name: string, region?: string, fetchOptions?: object): Stack’ of ‘Contentstack.Stack’ is deprecated. ts(6387) Here is an example line of TypeScript that generates this warning: const…

CMS Glossary: Extension

This blog post provides perspective on the term extension as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net An extension provides additional functionality to an existing solution, such as to integrate with other…

CMS Glossary: Entry

This blog post provides perspective on the term entry as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net An entry, sometimes called an item or an entity, is a record in the content…

CMS Glossary: Headless

This blog post provides perspective on the term headless as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net A headless content management system does not provide software for content delivery. To access the…

CMS Glossary: SDK

This blog post provides perspective on the term SDK, or Software Development Kit, as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net An SDK is a technology-specific programming library that allows developers to…

CMS Glossary: Webhook

This blog post provides perspective on the term webhook as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net A webhook is an outbound HTTPS request from one system to another, typically signaling the…

CMS Glossary: API (Application Programming Interface)

This blog post provides perspective on the acronym API, or Application Programming Interface, as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net An API is a computer programming interface that allows access to…

CMS Glossary: Publish

This blog post provides perspective on the term publish as it is used in content management systems, specifically the Contentstack SaaS Headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net Publishing refers to making data from a content management system available to a content delivery…

CMS Glossary: Environment

This blog post provides perspective on the term environment as it is used in content management systems, specifically the Contentstack SaaS Headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net In the context of content management, the term environment can refer to: the difference between…

CMS Glossary: Asset

This blog post provides perspective on the term asset as it is used in content management systems, specifically the Contentstack SaaS Headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net An asset consists of a binary resource and text metadata about that resource, such as…

CMS Glossary: Block

This blog post provides perspective on the term block as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net A block is a group of fields. A content type can define a block structure…

CMS Glossary: Field

This blog post provides perspective on the term field as it is used in content management systems, specifically the Contentstack SaaS headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net A field is an individual data element within an entry, where an entry is a…

CMS Glossary: Field Type

This blog post provides perspective on the term field type as it is used in content management systems, specifically the Contentstack SaaS Headless CMS. This post is a member of the following glossary: [Contentstack] [SaaS] [Headless] CMS Glossary Index – Deliverystack.net The type of a field determines the basic function, appearance, storage format, and configuration…

[Contentstack] [SaaS] [Headless] CMS Glossary Index

This blog post is a permanent work-in-progress that intends to provide an index of posts in a glossary of terms and acronyms used in the content management industry. Some of these entries and explanations are specific to, or use examples from, the Contentstack SaaS headless CMS. If you know of additional relevant terms or resources,…

The Big Lie in the Headless CMS World

The big lie in the headless CMS world is that the channel doesn’t matter. I don’t mean that multichannel or omnichannel doesn’t matter. All channels matter or we would not invest in them, and no headless vendor should focus on the web as the only channel. Still, for most of our real-world implementations, the web…

All About the URL Field in the Contentstack SaaS Headless CMS

This blog post contains all the information that I have been able to gather about the URL field in the Contentstack SaaS headless content management system. If you have questions or additional information about the URL field, please comment on this blog post. Read the Contentstack documentation for the URL field: About URL field |…

.NET 6: Modify JSON in Memory with the System.Text.Json.Nodes Namespace

This blog post contains some notes to help me remember how to use the System.Text.Json.Nodes namespace in .NET 6 and beyond to modify JSON in memory. The C# code that I previously migrated from Newtonsoft.Json to System.Text.Json serialized and deserialized between objects and JSON, but never explicitly updated the JSON. Recently, I had a need…

Previewing without Publishing in the Contentstack SaaS Headless CMS

This blog post describes an experimental technique that uses content delivery APIs to access content management environments in the Contentstack SaaS headless CMS. For solutions that use a limited subset of content delivery APIs, this approach could support CMS previewing environments that render saved content immediately, without the need to publish those changes to a…

Contentstack JSON Data Formats: Complex Fields

This blog post, part of a series about JSON data formats in the Contentstack SaaS headless CMS, describes how Contentstack represents complex field values. Complex fields are those that consist of JSON rather than scalar values. Contentstack JSON Data Formats: Introduction and Scalars – Deliverystack.net Rather than storing zero or more simple, scalar values, complex…

Contentstack JSON Data Formats: Assets and File Fields

This blog post, part of a series about JSON data formats in the Contentstack SaaS headless CMS, describes how Contentstack represents media asset metadata and references as JSON. Contentstack JSON Data Formats: Introduction and Scalars – Deliverystack.net In Contentstack, assets store metadata about files uploaded into the CMS. Technically, assets are like entries in that…

Contentstack JSON Data Formats: Entry Structure

This blog post, part of a series about JSON data formats in the Contentstack SaaS headless CMS, describes how Contentstack represents entries as JSON, where entries are records in the CMS that contain values for the fields defined by the content types associated with those entries. Contentstack JSON Data Formats: Introduction and Scalars – Deliverystack.net…

Contentstack JSON Data Formats: Modular Blocks Fields

This blog post, part of a series about JSON data formats in the Contentstack SaaS headless CMS, describes how Contentstack represents data stored in modular blocks fields as JSON. Contentstack JSON Data Formats: Introduction and Scalars – Deliverystack.net Contentstack modular blocks fields contain blocks of data. In an entry, a modular blocks field may contain…

Contentstack JSON Data Formats: Introduction and Scalars

This blog post introduces a series about JSON data formats used by the Contentstack SaaS headless CMS. Contentstack JSON Data Formats: Introduction and Scalars – Deliverystack.net Contentstack JSON Data Formats: Modular Blocks Fields – Deliverystack.net Contentstack JSON Data Formats: Entry Structure – Deliverystack.net Contentstack JSON Data Formats: Assets and File Fields – Deliverystack.net Contentstack JSON…

What Does It Mean for a CMS to Be Headless?

This blog post provides perspectives on what it means for a content management system to be considered headless. A content management system structures and separates data from its use, allowing domain experts to maintain content used by delivery systems such as websites and mobile applications. Rather than providing HTML generation engines, headless CMS expose content…

Coupling in [Headless] CMS

This blog post discusses forms of coupling between content management and content delivery systems in the context of headless CMS. Vendors use the term decoupled rather loosely and inconsistently, generally to indicate that content delivery does not depend on content management, but without describing exactly how. As I tried to understand what decoupled means, a…

Use Static Files and Vercel without the .html Extension in URLs

This blog post explains how you can configure a Vercel website to allow URLs for static HTML files without requiring the .html extension in URLs. By default, Vercel requires that URLs for static HTML files include the .html extension. An HTTP request for the URL /path/file.html will retrieve the file at that path, but an…

Export Child Entry Metadata with Entries from Content Management Systems

This blog post suggests that, when exporting the JSON representation of an entry (record) from a content management system, that JSON should include metadata about the children of the entry based on its URL path. For example, when exporting the JSON representation of the home page at the URL /, that JSON should include metadata…

Render Links to Edit Content When Previewing with Headless CMS

This blog post suggests techniques for rendering links to edit content when previewing or otherwise viewing content rendered from a headless content management system (CMS), which can facilitate CMS users maintaining the site. This post describes the URLs used to edit entries (records) in the Contentstack SaaS headless CMS, but rather than describing an implementation…

Hosting JavaScript Client SDKs for SaaS Systems

This blog post contains perspectives on hosting JavaScript client SDKs for SaaS systems such as headless content management systems. You can host JavaScript client SDKs from SaaS vendors on infrastructure that you manage or you can use infrastructure that the vendor manages. If you have opinions on this topic, please comment on this blog post.…

Deploy a Static File Website to Vercel

This blog post explains how to deploy a solution that consists of static files as a website on the Vercel content delivery network. A static website typically consists of HTML and supporting files such as CSS, JavaScript, and images. Vercel will host small websites with limited services at no cost. You can easily configure Vercel…

Use Your Own Domain for a Vercel Site

This blog post explains how to use your own domain for a site managed by Vercel. For each project, such as a website, Vercel creates subdomains within its own domains. For a project named vercel under the deliverystack Vercel account, Vercel created the following subdomains: vercel-git-main-deliverystack.vercel.app vercel-gamma-self.vercel.app vercel-deliverystack.vercel.app The pattern appears to be projectname-source-branchname-accountname.vercel.app where…

Azure .NET Core Headless CMS

This blog post intends to clarify an apparent misunderstanding about .NET with headless CMS, which is that you can use Azure and .NET with any SaaS headless CMS, whether or not that CMS uses .NET internally. If you can use SaaS for headless CMS, then consider all available SaaS headless CMS offerings regardless of underlying…

System Values in the Contentstack SaaS Headless CMS

This blog post describes some values to note when working with the Contentstack SaaS headless content management system. If you know of additional important values for working with Contentstack and Contentstack solutions, please comment on this blog post. Username: The username or email address of the CMS user. Password Hint: A reminder of the password…

Notes on Static File and Directory Naming for Headless CMS (and Vercel)

This blog post discusses some issues mapping URLs to file system paths and entries in headless content management systems. At least in the context of web solutions driven by content management systems, solutions that involve static files must implement file and directory naming rules. If you have experience or perspectives on this issue, please comment…

CMS and Headless CMS Components and Implementation

This blog post describes major components and features of content management systems, which let non-technical subject matter experts edit content used by downstream systems such as websites. It then lists some aspects specific to headless CMS solutions. If you have any suggestions to add to these lists, please comment on this blog post. This post…

General Page Modeling with the Contentstack SaaS Headless CMS

This blog post presents some perspectives on data modeling to support a simple, generic web page with the Contentstack SaaS headless CMS. This topic considers site data (visible on almost every page), shared data (visible on multiple pages), metadata at the page level, and page data. If you know of additional categories of data or…

Export Data from the Contentstack SaaS Headless CMS to Files

This blog post describes some considerations for exporting data from Contentstack to a file system including both JSON and binary media. I have already implemented a static site generator for .NET and intend to extend that to generate JSON and media files described in this post as time permits (and especially if anyone shows any…

Ahah! Moments with SaaS Headless CMS

This blog post attempts to list some of the main learning points that I have encountered while transitioning from legacy to headless CMS. If you know of additional significant learning points in the headless journey (including SaaS and service-oriented architectures in general), please comment on this blog post. I should mention that this is about…

SaaS Headless CMS Fundamental Concepts

This blog post attempts to provide an overview of some fundamental concepts for working with SaaS headless content management systems. Content Management System (CMS) A content management system separates text and media content from presentation and logic, allowing re-use of content managed by non-technical subject matter experts. Developers write code that retrieves data from the…

Where Do .NET Developers Fit in the Jamstack?

This blog post provides information about opportunities in the Jamstack for .NET developers. There are doubtless other opportunities for .NET developers in the service-oriented software economy. If you have additional suggestions to share, please comment on this blog post. Introduction In general, Jamstack refers to technologies used to manage websites that consist of static HTML…

Quick Introduction to GraphQL with the Contentstack SaaS Headless CMS

This blog post provides pointers for using GraphQL with the Contentstack SaaS headless CMS. I am not an expert on or proponent of GraphQL, but these are some things I have learned from working with Contentstack. GraphQL is a data query and manipulation technology intended for HTTPS service APIs that accept and return JSON. You…

Types of Data in a Content Management System

This blog post contains information about different types of data used in content management systems. If you know of additional types of data or have relevant perspectives to share, please comment on this blog post. In general, content refers to the text and binary media managed by CMS users. The main purpose of the CMS…

Troubleshooting the Contentstack SaaS Headless CMS

This blog post contains guidance for troubleshooting potential issues with the Contentstack SaaS headless content management system. There are many different kinds and causes of potential issues; not all these suggestions apply in every case. Some of this guidance may apply to troubleshooting any system, but especially service-oriented applications on SaaS. If you have additional…

Avoiding Direct Headless CMS Service Access

TThis blog post describes techniques to avoid tighter coupling introduced by calling service-oriented application APIs directly, such as those exposed by headless content management systems (CMS). If you have suggestions for further insulating systems, please comment on this blog post. Service-oriented architectures including headless CMS intend to loosen coupling between systems. Using HTTPS APIs rather…

Differentiating Headless CMS Products

The headless CMS software space is crowded with competitors, which can make it difficult for prospective customers to evaluate available offerings. This blog post presents some criteria that can help to differentiate headless CMS products. If you have additional significant factors by which to evaluate headless CMS products, please comment on this blog post. When…

Approaching SaaS Headless CMS Projects

This blog post lists some questions to start conversations while evaluating architectural requirements for SaaS headless content management projects, which typically include one or more websites. This post is not specific to any individual CMS and much of it could apply to any modern connected system, but I work for Contentstack and so emphasize relevant…

Data Access Points in the Contentstack SaaS Headless CMS

This blog post contains information about techniques that you can use to access data in the Contentstack SaaS headless CMS. First, the Content Management API and Webhooks sections describe facilities not intended for content delivery environments. The remaining sections describe Contentstack content delivery services, also called APIs. Content Management API The content management API is…

Language Fallback with Headless CMS

This blog posts presents some considerations for implementing language fallback with headless content management systems. Language fallback refers to using field values from an alternate language version of an entry when a specific language version does not contain values for those fields or using an alternate language version of an entry when there is no…

CMS Content Migration Opportunities and Concerns

In preparing for a meeting to discuss architecture for migrating data from one CMS to another, I realize that I have written a few things about data migration, but that I need a short list of potential opportunities and concerns. If you have anything to add, please comment on this blog post. ROI: Customers tend…

Comparing Rust and C#

This blog post contains perspectives on similarities and differences between the rust programming language and the C# programming language for .NET. This post focusses on command line and background processes and does not consider native user interface technologies for Windows or Linux, although for now at least, C# is almost certainly more appropriate for Windows…

Let Bloggers Know What Brings You to Their Posts!

I have been blogging for probably about a decade. I speculate that most bloggers spend a significant amount of effort writing relative to the amount of feedback that they receive. I could try to blame copying, caching, reductions in client-side tracking, but in addition to not getting many comments, my blogs do not even record…

View and Configure Keyboard Shortcut in Visual Studio and Visual Studio Code

Knowledge of a few keyboard shortcuts can significantly increase user and especially developer productivity. Microsoft Visual Studio and Visual Studio Code have countless features and therefore a significant number of keyboard shortcuts. To get the best value from these tools, use the techniques in this post to learn or set keyboard shortcuts fore the features…

Quick Tips for Blogging with WordPress

I honestly think that everyone should have at least one blog. Just start writing about what you know. Get into the habit of writing about everything that you do, even if you never post any of it. This blog post provides my suggestions for blogging on WordPress. Though I am often frustrated with its editor…

Contentstack SaaS Headless CMS Content Delivery Differentiating Factors

This blog post describes factors that I believe differentiate Contentstack from competing SaaS headless CMS products considering only features that affect content delivery. I tried to focus on features that are not present in almost every SaaS headless CMS. Contentstack is not the only vendor that provides each of the features listed here, although I…

SaaS Headless CMS Vendor and Customer Responsibilities

This blog post contains some notes on SaaS headless content management system vendor and customer responsibilities. If you have additional perspectives on this topic, please comment on this blog post. Update 24..June.2021: This diagram does not reflect that Customer Applications can deliver data to the Content Delivery tier via HTTPS services and webhooks, nor that…

Oh No, Could Web Tracking Move to the Application Server Tier?

Statistics can be useful but can also lead to false conclusions, especially when the data is inaccurate. Web statistics are no exception, particularly when different systems provide different numbers. For example, I use the WordPress blogging platform, which provides some traffic statistics. I recently upgraded the hosting plan to include google analytics and the numbers…

Konabos Konaverse Podcast with Deliverystack.net Author John West

My friend Akshay at @Konabos Consulting invited me to join him in an episode of his #Konaverse podcast series. We did not intend to talk about technology, and I don’t think I even mentioned anything relevant to this blog. Hearing our conversation might help readers get to know a little about me as a person.…

ASP.NET Razor Page Component Model Overview

This blog post describes my oversimplified understanding of the ASP.NET Core razor page component model. Razor is a syntax for embedding HTML and C# in .cshtml files that run on the server to generate HTML. Significant C# belongs in other files, but is used in views for data retrieval, looping, and otherwise. The application determines…

Shortcut/FavIcon with SaaS Headless CMS and ASP.NET Core Razor Pages

This blog post explains one way to let CMS users control shortcut/favorite icons with SaaS headless content management systems and provides an ASP.NET Core razor pages view component implementation. This prototype is almost exactly like the prototype for google analytics that I described in a previous blog post, so I will not repeat that content.…

Google Analytics with SaaS Headless CMS and ASP.NET Core Razor Pages

This blog post explains one way to add tracking for google analytics to a web content delivery solution for a SaaS headless content management system. To add google analytics tracking analytics, we can embed a piece of JavaScript with a google identifier on every page. While .NET provides various techniques for managing store such identifiers,…

Override or Force Routing in ASP.NET Core

This blog post describes a technique that you can use to force the application of routes in ASP.NET Core, overriding routes that would apply otherwise, including catchall routes. Recently, I implemented an ASP.NET Razor solution that uses a catchall wildcard in the @Page directive. I also implemented a Web API that can be hosted as…

SaaS Headless CMS and Service Oriented Application Objectives and Advantages

This blog post describes some of the objectives and advantages of SaaS headless content management systems and service-oriented architectures in general. Of course anything can be implemented well or poorly, and it is possible to build any solution on any platform. SaaS headless CMS systems endeavor to provide the following advantages relative to other content…

Deserializing to Custom Types with System.Text.Json

This blog post contains information about using System.Text.Json (STJ) to deserialize JSON to custom types rather than simple primitives such as string. I am in the process of migrating from Newtonsoft.Json to System.Text.Json (STJ). Migrating C# from Newtonsoft.Json to System.Text.Json for .NET 5 – Deliverystack.net I am not necessarily well-informed, so this is an overview…

Force .NET and ASP.NET Core to Load Available Assemblies

This blog post explains a technique that causes .NET and ASP.NET applications to load all available assemblies into memory. You may want or need to use a technique like this if you use reflection to determine types to instantiate, specifically if the types do not seem to be available when you reflect. Where it feels…

Workaround for Circular Dependencies in .NET and ASP.NET Core

This blog post explains an approach to resolving circular service dependencies in .NET and ASP.NET Core. In this context, services are .NET types that the dependency framework injects into the application, not HTTPS services for exchanging JSON. Sometimes, two services depend on each other. For example, I have an IDeliveryClient implementation that deserializes JSON entries…

Evaluating [SaaS] [Headless] [CMS] Data Modeling Capabilities

This blog post contains information about evaluating data modeling capabilities in SaaS headless content management systems, specifically features available in content types that define different types of structures for data storage. Data modeling is one of the critical features of and differentiating factors between headless content management systems. If you have additional perspectives about modeling…

SaaS Headless CMS ASP.NET Core Razor Pages Data-Driven Breadcrumb View Component

This blog post describes a prototype ASP.NET Core razor pages view component that renders a breadcrumb based on the information architecture of the website as determined by its URL hierarchy. This post is a continuation of a series progressing an ASP.NET razor pages solution architecture using the Contentstack SaaS headless CMS. The following post contains…

ASP.NET Razor Pages Legacy/Vanity URL Redirect Prototype for SaaS Headless CMS

This blog post explains a prototype for a solution that ASP.NET Core razor pages with the Contentstack SaaS headless content management system to manage redirects from legacy and alternate to current URLs with the Contentstack SaaS headless content management system. This post is about the architectural approach rather than the code shown. When a URL…

SaaS Headless CMS ASP.NET Core Razor Pages Data-Driven Top Navigation View Component

This blog post describes a prototype ASP.NET Core razor pages view component that renders a top navigation based on the information architecture of the website as determined by its URL hierarchy. This post is a continuation of a series progressing an ASP.NET razor pages solution architecture using the Contentstack SaaS headless CMS. An ASP.NET Core…

Use JsonConverters to Mimic Dependency Injection During Deserialization

This blog post presents an approach that abstracts access to the entries specified in reference fields in the Contentstack SaaS headless CMS, demonstrating a technique that provides functionality similar to dependency injection during deserialization from JSON with .NET and System.Text.Json. Contentstack content types can include reference fields, which allow entries to reference other entries. The…

Contentstack .NET Group Model for Page Metadata Fields

This blog post explains how I modeled a group of fields that appear in all content types that represent pages in the Contentstack SaaS headless content management system for a solution that uses ASP.NET razor pages. Specifically, this group contains metadata fields used for navigation, sitemap.xml and robots.txt, search results, to control the layout view…

Cannot get the value of a token type ‘StartObject’/converter ‘…’ read too much or not enough

This blog post describes two exceptions that I experienced while converting Newtonsoft JsonConverters to System.Text.Json JsonConverters and the related solutions to both issues in the hopes that it may assist developers that may face the same issue(s). Update 1.June.2021: This is a bit embarrassing, but I eventually remembered/realized that the CMS models a Reference field…

Migrating C# from Newtonsoft.Json to System.Text.Json for .NET 5

This blog post contains my notes in migrating a small C# .NET codebase from Newtonsoft.Json to System.Text.Json (STJ). First, let me thank Newtonsoft, which has close to a billion dowloads, for making JSON processing possible before Microsoft and for shaping STJ. There are plenty of existing resources about this, but to help me remember, these…

Hosting ASP.NET Core Razor Pages and Web APIs in a Single Project

This blog post explains one way that you can host ASP.NET Core Web APIs and Razor Pages in a single project. Performance is best if the client has a fast network connection to the server. The fastest connection is probably from a host to itself. This is not the most scalable configuration for production (so…

ASP.NET Core Web API Prototype, Part IV: Code and Concerns

This is the fourth and final blog post in a series that explains an approach to implementing ASP.NET Core Web API servers and .NET clients and provides an example implementation of a service that maps URL paths to information about corresponding entries in the Contentstack SaaS headless CMS. This entry describes some of the outstanding…

Loading…

Something went wrong. Please refresh the page and/or try again.


Follow

Email.