---
title: Den här bloggen är en mapp med markdown-filer
slug: why-this-blog-has-no-cms
locale: sv
description: Det finns inget CMS bakom LiteTMS-bloggen. Varje inlägg är en markdown-fil i produktens arkiv, valideras i CI och levereras som HTML, rå markdown och RSS.
date: 2026-07-15
updated: 2026-07-15
category: technology
tags: markdown, blog, aieo, engineering
author: LiteTMS Team
draft: false
---

Det finns inget CMS bakom den här bloggen och inte heller någon databas. Varje inlägg är en markdown-fil som versionshanteras i samma kodförråd som LiteTMS-koden, så att publicera ett inlägg fungerar precis som att driftsätta en funktion: en commit och en deploy.

Vi ville göra detta annorlunda än de flesta företagsbloggar, och det här inlägget visar hela mekanismen, inklusive källkoden till sidan du just nu läser.

## Upplägget som alla andra använder

En typisk företagsblogg körs på ett fullskaligt innehållshanteringssystem (CMS). En databas, en adminpanel, användarkonton, tillägg och ett tema som gör motstånd så fort man rör det. Hela det maskineriet finns till för att ett redaktionellt team ska kunna publicera utan att behöva röra koden.

Vi har inget redaktionellt team, och vi tillbringar redan hela dagarna i ett kodförråd. Så vi hoppade över maskineriet. Varje extra system måste uppdateras, säkerhetskopieras och skyddas. En mapp med textfiler kräver inget sådant.

## Hur en inläggsfil ser ut

Här är ett förkortat utdrag av inläggets eget sidhuvud, följt av hur brödtexten är uppbyggd:

```markdown
---
title: This blog is a folder of markdown files
slug: why-this-blog-has-no-cms
locale: en
description: There is no CMS behind the LiteTMS blog. Every post is...
date: 2026-07-15
category: technology
tags: markdown, blog, aieo, engineering
draft: false
---

The first paragraph answers the title on its own, because that is
the part search snippets and AI assistants quote.

## A section heading

Plain markdown body. Nothing exotic.

## FAQ

### Does this sample show the FAQ convention?

Yes. Each ### line is a literal question, answered right below it.
```

Blocket högst upp är en enkel lista med nyckel-värde-par. Under det finns vanlig markdown, renderad av ett standardbibliotek för markdown. En fil per språk: det här inlägget finns som en `.en.md`-fil och en `.pl.md`-fil med samma namn, och den polska versionen är skriven direkt på språket snarare än maskinöversatt.

Sektionen `## FAQ` i slutet av exemplet är den verkliga konventionen, inte dekoration. Varje fråga är av samma typ som en användare skulle skriva i ett sökfält, och byggsteget omvandlar dessa par till strukturerade data som sökmotorer kan visa som utökade sökresultat (rich results). Det finns ett levande exempel längst ner på den här sidan.

## En validerare i stället för en redaktör

Innan något driftsätts läser ett byggskript varje inläggsfil och kontrollerar den mot schemat. Beskrivningen måste hålla sig mellan 80 och 170 tecken. Kategorin måste vara ett av fem tillåtna värden. Datumet måste vara ett verkligt kalenderdatum, och sluggen måste matcha filnamnet.

Skriptet skapar sedan en enda indexfil med alla inläggs metadata, och webbplatsen läser enbart den filen. En översiktssida kräver lika lite resurser med femhundra inlägg som med fem.

Samma skript körs i CI vid varje push. Om ett inlägg är ogiltigt eller om någon glömde att generera om indexet misslyckas bygget och ingenting driftsätts. Trasigt innehåll kan inte nå produktion, eftersom produktionen aldrig tar emot något som inte godkänts av valideraren.

## Varför markdown, ärligt talat

Markdown vann av föga glamorösa skäl. En markdown-fil kan läsas i vilken textredigerare som helst, med eller utan specialverktyg. Den diffas rad för rad, så ett inlägg granskas på samma sätt som kod: du ser exakt vilken mening som ändrades. Dessutom är det det mest resurssnåla formatet för en AI-assistent att läsa in, vilket blir lite viktigare för varje månad.

Den sista punkten är anledningen till att varje inlägg här levereras på tre sätt. Sidan du läser är HTML-versionen. Lägg till `.md` till adressen i din webbläsare så får du den råa källfilen, byte för byte som den sparades i kodförrådet, serverad som ren markdown. Och varje språk har sitt eget RSS-flöde för läsare och aggregatorer.

Det finns också en maskinläsbar katalog över alla publicerade inlägg på [/blog/index.md](/blog/index.md), och webbplatsens `llms.txt` pekar AI-spindlar rakt dit. Inget av detta visas någonsin som duplicerat innehåll, eftersom råfilerna har en noindex-rubrik och en kanonisk länk tillbaka till HTML-sidan.

## Vad du som läsare vinner på detta

Inget av detta är en produktfunktion. Det är ett beslut om hur vi sköter vår egen publicering, och det stämmer överens med löftet från det [första inlägget](/en/blog/welcome-to-the-litetms-blog): inga påhittade siffror och text du kan kontrollera direkt i källan. Själva TMS-systemet bygger på samma förkärlek för enkel, transparent mekanik. Om du vill se dig omkring är [registreringen kostnadsfri](/en/register).

## FAQ

### Kan jag läsa ett blogginlägg från LiteTMS som ren markdown?

Ja. Lägg till `.md` till adressen för valfritt inlägg så omdirigerar webbplatsen dig till den råa källfilen, serverad som ren markdown. Den fullständiga katalogen över publicerade inlägg finns på /blog/index.md.

### Varför använder LiteTMS-bloggen inte ett CMS?

Eftersom ett CMS skulle vara ytterligare ett system att uppdatera och skydda, och de enda som publicerar här redan arbetar i produktens kodförråd. Markdown-filer med en CI-validerare gör samma jobb med betydligt mindre underhåll.

### Gör anpassningen för AI-assistenter inläggen sämre för människor?

Nej. Den struktur som assistenter premierar, det vill säga ett rakt inledande stycke, beskrivande rubriker och konkreta frågor med korta svar, är samma struktur som gör en artikel lättläst och överskådlig. Rå markdown är ett separat format, så artikeln du läser förblir en vanlig artikel.
