Skip to content

Repository files navigation

Personal Website

This repository contains code for my personal website. It is hosted on Netlify but built and deployed using GitHub Actions.

Deployment

Every push to master triggers a GitHub Actions workflow, which:

  1. Installs Node and OCaml (via opam) and then installs Forester.
  2. Runs npm run build, producing the full site and the notes in dist/.
  3. Deploys dist/ to Netlify with the Netlify CLI action.

OCaml/Forester only exists on the Actions runner, so the build happens there rather than in Netlify's build image. Netlify just serves the uploaded dist/.

Development

The current site is a small dependency-free Node static build.

npm run build
npm run serve

For local development with rebuilds:

npm run dev

Once the local server is running, you can view the site at http://127.0.0.1:4173/ in your web browser.

The generated site is written to dist/.

Notes

The /notes/ section is set up with Forester. Forester is an OCaml tool; install it with opam. The CI deploy pins Forester 5.0 on OCaml 5.3.0, so use the same versions locally to keep the notes output layout identical to production:

opam install forester.5.0

Forester 5.0's dependency closure does not resolve on newer compilers (e.g. OCaml 5.4.x); opam would silently install an older Forester with a different output layout. Therefore, use OCaml 5.3.0.

Notes live in notes/trees. Forester also needs a notes/theme directory (XSLT/CSS templates). The first npm run build:notes will fetch the base theme automatically if it is missing.

After Forester is installed:

npm run build:notes

npm run build builds the main site and then copies Forester output into dist/notes/ when the forester binary is available.

About

Node + OCaml Based Personal Website

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages