# Kasper Hermansen's Blog

A personal blog built with Zola (static site generator) and deployed using containerized CI/CD with Dagger.

## Prerequisites

- **mise** - Development environment manager
- **Rust** - For running Dagger CI
- **Docker** - For containerization

## Development

### Quick Start

```bash
# Install dependencies and start dev server
mise run dev
```

This will:
- Start Zola dev server on http://localhost:8000
- Watch and compile Tailwind CSS changes
- Show posts in progress

### Available Commands

```bash
mise run dev        # Start development server with live reload
mise run ci:pr      # Run CI build for pull requests
mise run ci:main    # Run full CI pipeline (build + deploy)
```

## Deployment

The blog uses a fully automated CI/CD pipeline built with Dagger (Rust SDK).

### Manual Deployment

```bash
# Build and deploy to production
(cd ci && cargo build)
./ci/target/debug/ci main
```

This will:
1. Compile Tailwind CSS styles
2. Build static site with Zola
3. Package with Caddy web server
4. Push Docker image to registry
5. Update deployment configuration in git

### Automated Deployment

Pushing to `main` branch triggers automatic deployment via CI.

## Project Structure

```
├── content/posts/     # Blog posts (Markdown with YAML frontmatter)
├── templates/         # Zola templates (Tera)
├── static/           # Static assets
├── styles/           # Tailwind CSS source
├── ci/               # Dagger CI/CD pipeline (Rust)
├── deployment/       # Caddy server configuration
├── config.toml       # Zola configuration
└── mise.toml         # Development tasks
```

## Adding Content

Create a new post in `content/posts/`:

```markdown
+++
title = "Your Post Title"
description = "Brief description"
date = 2025-01-01
draft = false
[taxonomies]
tags = ["rust", "development"]
+++

Your content here...
```
