Skip to content

My personal site generator prototype. Not for use in production websites (yet)

Notifications You must be signed in to change notification settings

zach-delong/S3G

Repository files navigation

Simple Static Site Generator (S3G)

This project is a simple toy project that is intended to convert a given directory full of markdown files into a blog. Heavily inspired by projects like Jekyll or Hugo. The primary difference is that I wanted something written in .NET, and I wanted an opportunity to play with the new .NET versions that are coming out. As of this writing, the project is written for .NET 7.

Contributing

Right now, I am not taking contributions for this project. That may change at some point in the future, but as of right now, I do not have time to fully maintain this project as a collaborative work.

That said, you are welcome to fork the project and use it but it is currently in a prototype state, and while it has come a long way it still has quite far to go and I make no promises about interface stability or backwards incompatible changes as of now.

Overall design

Fundamentally, this project is intended to be used with Docker (eventually) or some other container technology as part of a build pipeline for a website. Send in a commit to your favorite source control, then automatically trigger S3G to compile your website into something beautiful.

Goals

  • Convert all common tags from Markdown to HTML
  • Support templating (user-defined site templates)
  • Compile and distribute a binary for convenient prototyping (homebrew? synaptic?)

Status

This project is not yet complete and has not yet been used for a production website. As such, it should not be considered commercial strength

Front matter

I have now added support for FrontMatter! Currently this only supports two properties, but more should be added in the future!

Published

If you add "published" to your front matter on a document, you can control whether or not that document will appear in your export!

---
published: false
---
this document won't be published.

If you do not provide a published attribute, it is assumed to be set to true.

Title

If you add a "title" attribute, wherever you put "{{title}}" in your site_template.html will be replaced with the content! You should probably do this in your template: <title>{{title}}</title>.

---
title: an interesting readme
---
This page will have the title "an interesting readme"

Ongoing tasks

  • Copy non *.md files to the output directory
  • Update to .NET 6
  • Update to .NET 7
  • Covert common *.md tags to HTML
  • Reorganize namespaces
  • Implement custom titles on each "page"
  • Implement FluentAssertions for integration tests
  • Automate docker image publishing
  • Design & implement some kind of metadata (titles, publish date, etc)
  • Build a homepage with treeview navigation
  • Add some kind of metadata system (author, publish date, etc)
  • Multithread processing so conversion can happen more quickly

About

My personal site generator prototype. Not for use in production websites (yet)

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages