12+ Years of App Development
Everything from a single source
50+ Successful App Projects

Blog

A Look at the Technical Side of Our Blog

Our blog is now part of an AI-enabled content system that turns technical expertise into search visibility, market authority, and qualified B2B demand on top of a fast technical foundation.

Article image for A Look at the Technical Side of Our Blog

When this article was first written in 2013, our blog system was much closer to a typical side project: ASP.NET MVC, Markdown, separate summary files, and a lot of logic shaped by the needs of that time.

Today it has become a much more effective system. Our blog is no longer just a place to publish articles. It is part of a digital engine that helps us translate expertise into visibility, authority, and qualified pipeline. We still keep the setup intentionally lean and file-based, so we continue to avoid a traditional CMS or a database for blog content. At the same time, the system is now clearly designed around SEO, multilingual publishing, performance, conversion, and AI-supported workflows.

Do you want content, SEO, and AI to produce measurable business impact?

We help B2B companies build high-performance websites, digital products, and modern content operations where visibility, user experience, and pipeline generation reinforce each other.

Talk to our team

A Content System Instead of a Blog Archive

For us, the blog is now a central building block in digital marketing. Expert content should not just be published. It should be discovered, trusted, shared, and turned into meaningful conversations with prospective clients.

That is why the technical foundation is built around three goals:

  • publish content quickly and cleanly
  • provide search engines and AI systems with clear, structured information
  • accelerate editorial processes through automation and AI

The last point matters a lot to us. AI is not an isolated experiment in our work. It is part of everyday operations: topic structuring, draft refinement, SEO improvement, translations, quality assurance, and preparing content for additional channels. Our blog system is built so these processes can plug in naturally without making the publishing flow unnecessarily complex.

AI Across Almost Every Content Process

Today, AI touches almost every relevant step in our content lifecycle. It does not just help with writing. More importantly, it helps us structure, prioritize, refine, and reuse knowledge.

This includes:

  • clustering topics, keywords, and search intent
  • creating outlines, subheadings, and FAQ building blocks
  • sharpening titles, meta descriptions, and snippets
  • adapting language for different audiences and languages
  • revising existing content when technologies evolve
  • preparing articles for social media, sales, and additional touchpoints

The result is not an artificially inflated content machine. It is a more efficient go-to-market content process. Expertise from projects, consulting, and product development can be turned into understandable, search-friendly, and reusable content much faster. That is exactly what we want this system to support.

Still File-Based, but Much More Structured

The core idea has stayed the same: one blog post is one file in the repository. What changed is the structure. Instead of separate summary files, metadata and the actual article content now live in the same Markdown file.

Each article starts with YAML front matter:

---
Title: "A Look at the Technical Side of Our Blog"
Url: "a-look-at-the-technical-side-of-our-blog"
PostDate: 2013-07-29
LastModified: 2026-04-08
AuthorId: 1
ShortDescription: "..."
Tags: "Web, ASP.NET Core"
MetaDescription: "..."
IsIndexable: true
---

The actual Markdown content follows right after that. This format gives us several advantages:

  • content and metadata stay in one place
  • posts can be edited with almost any editor
  • Git handles versioning, history, and review
  • fields like LastModified, MetaDescription, or Faq can be added without database migrations

This is especially useful for SEO- and AI-supported editorial workflows. When structure and content are cleanly separated but maintained in the same file, briefings, quality checks, optimization steps, and translations become much easier to keep consistent.

ASP.NET Core MVC Instead of Old ASP.NET MVC

The current website runs on ASP.NET Core MVC. The blog is not an external module. It is part of the main website, which means routing, views, localization, conversion paths, and SEO all work together directly.

The system is mainly organized around three building blocks:

  • BlogController for routing, feeds, and the sitemap
  • BlogFileSystem for loading and preparing articles
  • Razor views for listing pages and article detail pages

The routes are intentionally straightforward:

  • /en/blog/ for the English overview
  • /en/blog/{postTitle}/ for individual English articles
  • /blog/ and /blog/{postTitle}/ for the German versions
  • /blog/feed/rss/ for the RSS feed
  • /blog/sitemap.xml for the blog sitemap

That keeps the blog tightly integrated into the overall website architecture. Content pages, service pages, contact touchpoints, and search logic all rely on the same technical foundation. The result is a system where thought leadership, discoverability, and commercial pathways support each other instead of competing for attention.

Two Languages, One System

One thing that matters much more today than it did in 2013 is multilingual publishing. Our content is stored in separate directories by language:

  • BlogPostsDirectory/de
  • BlogPostsDirectory/en

The current request culture determines which files are loaded. The controller builds the path dynamically based on the language, so the logic stays the same while content remains cleanly separated.

For translated articles, we use not only the primary Url but also an AlternateUrl. That is especially useful for redirects and hreflang relationships. If the slug differs between German and English, the system can still connect both articles correctly.

This is not only relevant for classical internationalization. If you want content to perform internationally today, you need clear language and URL signals for both search engines and AI-driven answer systems.

Author Data Managed Separately

Not every piece of information belongs inside every Markdown file. That is why we store authors separately in an authors.json file for each language directory.

This includes, for example:

  • name
  • image
  • description
  • social links
  • areas of expertise

Inside the article, an AuthorId is enough. When a post is loaded, that ID is resolved and enriched with the matching author data. This avoids repeating the same information in every article.

From an SEO and trust perspective, this matters. Clear authorship, technical context, and consistent profiles make expertise more visible and help reinforce credibility.

Parse Front Matter First, Render the Body Later

The system first reads only the metadata from each Markdown file. The YAML front matter is parsed into a BlogPost model. The actual body content is loaded only when a specific article is opened in detail.

That avoids unnecessary work on overview pages. Listing pages need a title, date, teaser, tags, image, and author, but not the full article body.

Only on the detail page is the body loaded and then rendered to HTML with Markdig. We use its advanced Markdown features, which gives us room for richer formatting such as tables, embedded HTML, and more complex article layouts.

AI helps here as well. Before publication, content can be checked more easily for structure, readability, search intent, internal consistency, and meaningful headings without changing the technical publishing model itself. It also becomes easier to derive versions of the same topic for the blog, consulting, social content, and sales communication.

Caching Instead of Re-Reading Everything on Every Request

Because our content is file-based, it would make little sense to open and parse every Markdown file for every single request. That is why the blog now uses IMemoryCache.

Among other things, we cache:

  • the list of blog posts
  • author information

The blog list is kept in memory for a few minutes, while author data stays cached much longer. For our use case, that is a pragmatic balance: content does not change every second, but page requests benefit immediately from caching.

This keeps the file-based setup simple without paying the full file-system cost on every request. It also supports fast pages, solid Core Web Vitals, and therefore a better foundation for organic visibility, lower friction, and stronger conversion performance.

Performance You Can Actually See

For reach, user experience, and conversion, performance is not a side topic. A fast website improves not only how visitors perceive it, but also the technical basis for crawling, ranking, and mobile usage.

PageSpeed Insights for www.cayas.de showing 94 performance, 93 accessibility, 100 best practices, and 100 SEO on mobile
Mobile PageSpeed Insights scores for www.cayas.de, as of April 7, 2026.

The current public evaluation shows 94 points for performance, 93 for accessibility, and 100 each for best practices and SEO on mobile. For us, that is not vanity. Strong performance directly supports better user experience, stronger organic visibility, and more reliable digital touchpoints.

What used to be an optional extension is now part of the article structure. Tags live directly in the front matter and are reused in several ways:

  • on the article detail page
  • in filters and topic views
  • for related posts
  • in RSS categories

Related posts are not built with a complex recommendation engine. They are derived from shared tags. For our size and structure, that is simple, transparent, and sufficient.

From a marketing and SEO perspective, this is valuable because it strengthens topical internal linking. Readers can move to the next relevant piece of content more easily, and search engines understand our thematic focus more clearly. At the same time, readers can be guided from educational content into matching offers such as Expert as a Service or our software development services. That makes the blog useful not only for reach, but also for demand capture.

SEO Is Now Part of the Content Model

Back in 2013, meta keywords were still part of the conversation. Today, other signals matter much more. That is why our blog system now includes a broader set of SEO and social features driven directly from article data.

These include:

  • MetaDescription for search snippets
  • Open Graph and Twitter metadata for social sharing
  • canonical and hreflang links for clean language mapping
  • IsIndexable to control noindex where needed
  • LastModified so updates are easier for search engines to interpret

On top of that, we generate structured data in JSON-LD. Depending on the article, this includes types such as:

  • BlogPosting
  • BreadcrumbList
  • FAQPage

The FAQ output is especially useful because the relevant questions and answers can be maintained directly in front matter. Content and search markup therefore stay in the same source of truth.

This is one of the most important parts of modern content work for us. Content should not only be readable for people, but also easy to interpret for search engines, answer engines, and AI-based research systems. Structured data, clean metadata, and consistent URL signals are no longer optional.

AI also helps on the editorial side. We use it to structure content more clearly, map search intent better, enrich FAQs where it makes sense, sharpen snippets, and improve existing articles efficiently. That means content is not only created faster, but also aligned more consistently with discoverability, clarity, and conversion.

RSS Feed and Sitemap from the Same Source

Our feed and sitemap are no longer based on a separate export step. Instead, they rely on the same article source as the normal blog pages.

The RSS feed is generated server-side as XML. It includes title, description, URL, date, and tags from English blog posts directly from the same source. Additional tag-based filtering is also possible.

The sitemap works in a similar way, but goes further:

  • it includes German and English articles
  • it sets lastmod from the article model
  • it creates hreflang connections between language versions
  • it can include image information where available

This means we do not maintain content, feed, and sitemap three times. Everything is derived from the same Markdown files. That reduces maintenance effort, lowers the risk of inconsistencies, and helps new or updated content enter our broader digital process faster.

From Visibility to Demand

A blog only creates real business value for us if content does not live in isolation. That is why we do not think of articles as endpoints. We think of them as entry points into further content, services, and sales conversations.

Expertise is published, made visible through SEO and structured information, and then connected to the rest of the website architecture. That creates clean transitions into relevant services, references, and contact touchpoints without stripping content of its technical depth.

This is also where AI creates additional value in our day-to-day work. Content can be evaluated faster, adapted to specific audiences, transformed into new formats, and fed into further communication or sales processes. In that sense, the blog works not only outwardly, but also as part of our wider digital operating model.

What We Deliberately Do Not Have

At a time when almost every problem can be solved with a full CMS, it is also worth noting what our blog system deliberately avoids:

  • no database-backed editorial UI
  • no WYSIWYG editor
  • no heavy publishing workflow
  • no generic plugin marketplace

That is not a limitation. It is a decision. Our blog is primarily a publishing system for a team that likes working in Git, prefers Markdown, develops content in a data-driven way, and wants full control over content, URLs, markup, and process design.

Do you want one system for website performance, SEO structure, and AI workflows?

Whether you are planning a technical relaunch, a stronger content engine, or the integration of AI into digital operations, we can support you from strategy through implementation.

Explore our software development services

Conclusion

The core idea from back then still holds: content as files, little ballast, and no unnecessary dependencies. But the implementation is much more mature today.

What started as a small ASP.NET MVC experiment has become a structured content system on ASP.NET Core MVC that combines Markdown, YAML front matter, caching, multilingual publishing, structured data, RSS, sitemap generation, and conversion paths in a clean way.

For us, that mix works well: technically lean, flexible in content, strong in SEO, and open to AI-supported processes across the entire value chain. That is why our blog is now far more than a collection of posts. It is a visible part of how we operate digitally and a practical system for turning expertise into reach, trust, and qualified B2B demand.

FAQ

The Cayas blog runs on ASP.NET Core MVC and uses Markdown files with YAML front matter as its content source. Metadata, structured data, RSS, sitemap generation, multilingual routing, and performance optimizations all work together in one lean file-based system.

Cayas uses Markdown because it keeps content lightweight, version-controlled, and fully manageable in Git. That creates faster review cycles, cleaner content operations, and a strong foundation for technical, SEO-focused, and multilingual publishing.

Cayas uses AI for topic clustering, outlining, FAQ creation, snippet optimization, translations, and improving existing articles. This helps turn technical expertise into structured, search-friendly, and reusable content much faster.

Performance and SEO are core parts of the blog system. Fast load times, structured data, clean metadata, internal linking, and clear language signals improve discoverability, user experience, and the path from content to relevant services.

Sebastian Seidel

Sebastian Seidel

As a mobile enthusiast and managing director of Cayas Software GmbH, it is very important to me to support my team and our customers in discovering new potential and growing together. Here I mainly write about the development of Android and iOS apps with Xamarin and .NET MAUI.

Related Articles