Hello there.
This is the source code that generates my personal website, aj-foster.com. It uses the following:
- Elixir, a functional programming language
- Serum, a static site generator written in Elixir
- GitHub Actions, a free continuous integration/deployment system
- GitHub Pages, a free hosting service for static websites
- GitHub Discussions, a free discussion platform
Because of these choices, the site itself is generated automatically when someone pushes to the
main branch — and hosted for free.
This project includes two custom mix tasks for generating the site.
Assuming you have Elixir and Erlang installed already...
mix site.genwill generate the site once and save the filesmix site.watchwill generate the site whenever a file is saved and auto-refresh the browser
Most of the site is pretty straightforward, however it includes a few plugins that adjust how Serum generates files:
Site.Highlightprovides syntax highlighting for a subset of languagesSite.Subdirectorymodifies the output of pages and posts to support subdirectory navigation, e.g./about/Site.Feedcreates a custom Atom feed for posts on the siteSite.Mapcreates a custom sitemap
The code in this repository is free to use (with no warranty). Please share what you learn with others.