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; }
}