~afontaine/home

ref: 052eb12c4fe8d5bb4ccf71a677cbbb6fff51d339 home/apps d---------
Opt out of FLOC

Seems tracky, don't like it.
Fix typo for Discussion Email

Obviously, this would've stopped people from being able to email me,
which is no good.
Ensure name of tag is used in open graph

Elixir would throw when trying to put a tag struct into a template. The
tag text needs to be used instead.
Apply nord colours to tag box

I forgot about this, as I don't have any tagged posts yet, but that has
been rectified.
Add Open Graph Tags

In case people share my posts I guess they should preview somewhat nicely.
Balance Post Header by Moving Byline

To help balance out the header of a post, move the byline to below the
header text.
Center Items in Infobox

The info box would otherwise stretch my face on mobile.
Format Flake And Add Node Dependencies as Package

Mostly for better re-use throughout the flake, also the dev shell will
automatically link the node modules into the right spot. I need to look
into doing this with the elixir ones next, but that might be trickier.

Also add a build file! Now builds are managed by sourcehut!
Fix wrongly styled link

There was a link that was not nord-ified. That has been rectified.
Add safety to editing posts without adding tags

Now tags shouldn't be overwritten when changing something not tag
related.
Fix Atom Feed

The feed didn't handle empty items well, it should now though.
Apply Nord Theme

It's cool, it's blue, it's nord!

The light theme is a little big rougher, and the syntax highlighting
needs work, but it's most of the way there.
Add Prism.js for Syntax Highlighting

Earmark can't do it, and prism.js is focussed on loading only what you
need, which I can appreciate. Code blocks look mostly okay without it in
case people disable JS.
Configure Prettier and Eslint

While JS is at a minimum, both are easy to set up and keep things
consistent.
Set author in post changeset

It's required, and I just missed this when I added it to the schema way back.
Fix some formatting of the parsing of the message

The author is returned in the form of `{name, address}`, so let's
explicity turn that into `"<name address>"`.

Also tags should _always_ be a list.
Only show last post if there is one

`one!` throws if there is no value to return, but this should be
optional and hidden if there is not yet a post.

`one` returns `nil` if there is no value, so we use that instead.
Add Oneshot Service for Creating and Migrating DB

This should create and update the database schema before starting the
web application via a SystemD oneshot service.
Add link back to blog posts

Also mark the sourcehut mailing list etiquette as an external link.
Set up Nix Build for Release

`nix build .#home` will build a mix release for the application that
can (currently) be configured with the following environment variables:

- `DATABASE_URL`: A URL describing the database to connect to, of the
  form `ecto://user:pass@host/db_name`
- `POOL_SIZE`: The DB connection pool size
- `SECRET_KEY_BASE`: Usually generated via `mix phx.gen.secret`
- `PORT`: The port to listen on
- `TZ_DATA_DIR`: The directory to cache timezone data. Needed, as the
  default value is the release directory, which is read-only when
  launched via nix.

It also seems tailwind's jit was folded into the mainline, so that got
bumped here as part of making the build work.
Next