A personal website built with Zola, a fast static site generator written in Rust.
- Git
- Zola
- Rust/Cargo (for prek)
- Node.js/npm (for prettier)
- Python 3.9+ and uv
For complete development environment setup:
make dev-setupThis will:
- Install Zola
- Set up Python dependencies with uv
- Install prek and pre-commit hooks
- Set up linting and formatting tools
Debian/Ubuntu:
./scripts/install-zola.shOr 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# Serve with live reload
zola serve
# Build for production
zola buildSite will be available at http://127.0.0.1:1111
# 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-titleLightweight 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- Create a repository named
mlhamel.github.ioor use a project repository - 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- GitHub Actions will automatically build and deploy (see
.github/workflows/deploy.yml)
Your site will be live at: https://mlhamel.github.io/web/
.
├── 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
- Edit
config.tomlto change site settings - Modify templates in
templates/ - Add content in
content/ - Update styles in
sass/orstatic/