This portfolio website project is a Go-based implementation utilizing the gin library as the web framework, with built-in HTML templating support via the multitemplate library for efficient and reliable website rendering.
To maintain the website's currency, the project incorporates a Python script, which interfaces with GitHub's API to retrieve updated data on my project repositories and is executed automatically through a Cron Job via the provided crontab file. This data is stored in an SQLite database and automatically propagated to the website's pages.
This project is optimized for deployment as a microservice using a Docker images via the provided Dockerfile. The images are subjected to robust linting, testing, and building processes through GitHub Actions, ensuring the highest quality and reliability.
With its technical implementation and advanced functionalities, this project offers an effective way to exhibit my web development skills and showcase my professional experience, while ensuring visitors are always up-to-date on the my latest endeavors.
cron # Crontab files
scripts # Python helper scripts
website/ # Website files
├── static # Static website resources
└── tmpl # HTML templates
A Dockerfile is provided and kept regularly updated for convenient deployment.
Firstly, the Docker image will need to be built:
$ docker build -t infrafolio .
Afterwards, the Docker image can be ran:
$ doker run -itdp 8080:8080 infrafolio:latest
The service can be ran manually after downloading dependencies and compiling the binary. Note that this will require a Systemd/OpenRC unit file be configured manually, as this is intended to be ran as a microservice.
Ensure Go and Python are installed:
$ go version
go version go1.19.8 linux/amd64
$ python --version
Python 3.10.11
Go:
$ pip install -r scripts/requirements.txt
Python:
$ go mod download
$ go build