Skip to content

svenluijten/svenluijten.com

Repository files navigation

svenluijten.com

This is the source code for my personal website. It is built with:

Extra functionality

In addition to how Jigsaw normally works, I've written 2 listeners to add some niceties to the codebase.

Images next to built files

The \App\Listeners\ImagesNextToBuiltFiles class ensures that images that are shown on a page (eg. /blog/example-blog-post) are stored in the same folder as the post's index.html file. So in case of that example, the images would be built into /blog/example-blog-post/<image>, next to index.html.

Relative Markdown links

The \App\Listeners\RelativeMarkdownLinks class makes it so that I can link to other collection items by using their relative links (so something like [link to post](./another-post.md)). This also works across collections, so I can [link to another collection](../collectionB/post.md).

Social images

The social image (og:image and twitter:image <meta> tags) is determined in the following order:

  1. If there is an image with the social-image ID present on the <img> tag, that will be used.
  2. If there are images on the page, the first image on the page will be used.
  3. If none of the above conditions are met, the default image will be used.

This is all done thanks to the \App\Listeners\SetSocialImagesForCollectionItems listener.

Deployments

Deployments are handled by this workflow. When a commit is pushed onto main, that branch will automatically be built using jigsaw build production and deployed onto Vercel. If anything happens to a pull request (commit pushed, opened, rebased, ...), the workflow will deploy a preview build to Vercel which can be seen from https://preview-<PR NUMBER>.website.sven.luijten.dev.

Dependencies

Dependencies are automatically updated by Dependabot. Every week it will create new pull requests for dependencies that can be updated.