Blog Workflow Part 2: Build Process

July 18, 2026

This is Part 2 of a 3-part series documenting the blog workflow. This part covers the build process, deployment workflow, and server configuration.

Build Process

11ty Configuration (.eleventy.js)

The .eleventy.js file configures the build process:

  1. Passthrough Copy: CSS and favicon files are copied to output without processing
  2. Custom Filters:
    • dateDisplay: Formats dates in "Month Day, Year" format
    • rssDate: Formats dates for RSS feeds (UTC string)
    • stripHtml: Removes HTML tags from content
  3. Collections:
    • posts: Collects all Markdown files in src/posts/
    • notes: Collects all Markdown files in src/notes/
  4. Directory Configuration:
    • Input: src/
    • Output: _site/

Build Commands

# Install dependencies
npm install

# Build the site (generates _site/ directory)
npm run build

# Start local development server with hot reload
npm run serve

# Deploy to NFS server
npm run deploy

Deployment Workflow

Local Development

  1. Edit content in src/ directory (Markdown files, Nunjucks templates, CSS)
  2. Run npm run serve to start local development server
  3. View changes at http://localhost:8080
  4. 11ty watches for file changes and automatically rebuilds

Building for Production

  1. Run npm run build to generate static HTML in _site/
  2. The build process:
    • Processes Nunjucks templates
    • Converts Markdown to HTML
    • Applies layouts and partials
    • Copies CSS and favicon files
    • Generates RSS feed
    • Creates the complete static site in _site/

Deploying to NFS Server

The npm run deploy command uses rsync to sync the _site/ directory to the NFS server:

rsync -avz --delete _site/ brennanbrown_bren@ssh.nyc1.nearlyfreespeech.net:/home/public/
  • -a: Archive mode (preserves permissions, times, symbolic links)
  • -v: Verbose output
  • -z: Compress data during transfer
  • --delete: Delete files on server that don't exist in _site/

Server Details

  • SSH Host: ssh.nyc1.nearlyfreespeech.net
  • Username: brennanbrown_bren
  • Document Root: /home/public/
  • URL: https://brennan.casa
  • Server Type: Apache 2.4 Static Content (No PHP, CGI, or Daemons)

Deployment Workflow

The deployment workflow is:

  1. Make changes to source files in src/
  2. Run npm run build to generate static HTML
  3. Run npm run deploy to sync to NFS server
  4. Changes are live at https://brennan.casa

Next Steps

Continue to Part 3: Content Creation & Git Workflow to learn about creating content and the Git workflow.

Return to Part 1: Project Structure & Architecture for information about the project structure and template architecture.