Skip to content

Repository files navigation

Personal Website

A personal website built with Zola, a fast static site generator written in Rust.

Prerequisites

  • Git
  • Zola
  • Rust/Cargo (for prek)
  • Node.js/npm (for prettier)
  • Python 3.9+ and uv

Quick Setup

For complete development environment setup:

make dev-setup

This will:

  • Install Zola
  • Set up Python dependencies with uv
  • Install prek and pre-commit hooks
  • Set up linting and formatting tools

Manual Setup

Install Zola

Debian/Ubuntu:

./scripts/install-zola.sh

Or manually:

# Download latest release
curl -sL https://github.com/getzola/zola/releases/download/v0.19.2/zola-v0.19.2-x86_64-unknown-linux-gnu.tar.gz | tar xz

# Move to local bin
mkdir -p ~/.local/bin
mv zola ~/.local/bin/

# Ensure ~/.local/bin is in PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Build and Run Locally

# Serve with live reload
zola serve

# Build for production
zola build

Site will be available at http://127.0.0.1:1111

Development Commands

# Start development server
make serve

# Run tests
make test

# Run linters
make lint

# Format code
make format

# Create new blog post
make post SLUG=my-post-title

Python utilities

Lightweight Python tooling lives in scripts/ and is managed by uv.

The Markdown runner can execute code blocks with automatic dependency install:

uv run scripts/run_md_blocks.py content/blog/first-post/index.md

Deploy to GitHub Pages

  1. Create a repository named mlhamel.github.io or use a project repository
  2. Push your code:
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/mlhamel/web.git
git push -u origin main
  1. GitHub Actions will automatically build and deploy (see .github/workflows/deploy.yml)

Your site will be live at: https://mlhamel.github.io/web/

Project Structure

.
├── config.toml          # Site configuration
├── content/             # Markdown content
│   ├── _index.md       # Homepage
│   ├── about.md        # About page
│   └── blog/           # Blog posts
├── templates/           # HTML templates
├── static/              # Static assets (CSS, images)
├── sass/                # SCSS stylesheets
└── .github/workflows/   # CI/CD automation

Customization

  • Edit config.toml to change site settings
  • Modify templates in templates/
  • Add content in content/
  • Update styles in sass/ or static/

About

Personnal website

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages