There are plenty of Static Site Generator (SSGs) already, but it is also a fun project to implement as an exercise.

A few of the most popular SSGs are

Jamstack has a collection of 347 SSGs with various details categorized by language.

Description

Version 1: The user writes Markdown files and the proccsor generates HTML pages.

Version 2: The Markdown files can have some meta data at the top of the file. E.g called "front matter" Similar to what DEV.to allows.

Start implementing one of the fields and then one-by-one add the additional fields.

---
title: The title of the post
published: false
author: Name of the author
description: A short description of the article.
tags: some, words, or, even, multi word expressions
published_at: 2023-01-29T11:30:01
series: some-name
---

Here comes the content of the article.

This information is displayed on the web page.

The title is going to be both the HTML title tag in the head and the h1 element of the page.

The articles that have published: true are actually published. The ones that have published: false are considered drafts.

The published_at field can be used to create a page listing all the articles in the order the were published.

The generated front page could display the 3 most recently published articles.

The description can be the content of the HTML meta tag called description. (Look at the source of the current page.)

The tags can be used to crete pages, eg. t/some listing all the articles that have the same tag. There can also be a page called /tags listing all the tags and the number of articles with that tag.

Version 3:

Add a config file e.g. config.yaml that will contain some configuration information about the whole site. e.g.

title: The title of the site (on the main page)
front_limit: 3    (The number of articles to show on the front page)

Version 4:

Find other interesting features of the other processors list above.