Skip to main content
  1. Open Source/

website-favre

Static Site Gen Repo for my Personal Website #

A simple website with a list of all of my open source projects and articles I wrote. Can be found on favr.dev. Uses Hugo as static site generator.

Screenshot Website

Prepare #

Install Hugo #

  • Windows choco install hugo-extended
  • Mac brew install hugo

Install Node #

Currently, this project uses Node 18.17.0 (lts). It is recommended to use a node version manager like nvm, then you can just run

nvm install && nvm use

in the project root dir to install and use the correct version.

Cloning Project with Submodule #

This project uses a git submodule for including the theme. To correctly clone it you need to do

git clone https://github.com/patrickfav/website-favre.git
git submodule init
git submodule update

Build & Run #

Set secrets #

For the downloader to work with all features one must set 2 environmental variables

GITHUB_TOKEN=... # a GitHub Personal Access Token - https://docs.github.com/de/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
FIREBASE_SERVICE_ACCOUNT_JSON= {...} # a Firebase service account json file - https://firebase.google.com/support/guides/service-accounts

where the second, the Firebase service account json, is optional and not providing it will disable the stats persisting feature.

Prepare Content Sync #

Install and link everything and build the js files from typescript with

cd content-downloader
npm run package

then either run it with

hugo-content-downloader

or use the shortcut that automatically rebuilds the sources

npm run exec

which will populate the directories content/opensource and content/articles.

Linting #

This project uses eslint to validate the code:

cd content-downloader
npm run lint

Using the build & run Docker Image #

A docker image that builds everything, updates the content and then can be used to locally serve the website with nginx can be created by doing:

docker build --no-cache --progress=plain -t websitefavre:latest .
docker run -p 8080:80 websitefavre:latest

and then you can access the page with http://localhost:8080

License #

Proprietary: Patrick Favre-Bulle 2023

Patrick Favre
Author
Patrick Favre
Software Engineer currently working as architect, backend dev, cloud engineer, IT ops rookie. Cryptography and security are my passions.