namespace Elternbeirat.Web.Services; /// /// A news post ("Beitrag"), read from a Markdown file in /// Content/beitraege/. Unlike a , a post has a date and /// is shown in a chronological list. The file name (without extension) is the /// slug. /// public sealed class Post { /// /// URL identifier of the post, taken from the file name without umlauts. /// It appears in the route /beitraege/{slug}. /// public required string Slug { get; init; } /// /// Display title from the YAML front matter (titel:). Falls back to /// the slug when no title is set. /// public required string Title { get; init; } /// /// Publication date from the front matter (datum:). Used to sort the /// list newest first. /// public required DateOnly Date { get; init; } /// /// The post body rendered from Markdown to HTML (front matter excluded). /// public required string ContentHtml { get; init; } }