DD Photos: Build Your Own Fast, Private Photo Album Website

⬅️ Back to Tools

DD Photos: Share Your Photos Your Way

Tired of slow-loading photo sharing sites with cluttered UIs, ads, and social media distractions? DD Photos https://github.com/dougdonohoe/ddphotos is a photo album website generator that puts you in control. Built with help from Claude Code, it creates a fast, clean, mobile-friendly gallery that loads in seconds, not the 20+ seconds you’d wait for iCloud shared albums.

The philosophy is simple: focus on the photos. No ads, no tracking, no account required. Just you, your photos, and anyone you want to share them with.

Key Features

🚀 Blazing Fast Performance

Your photos load instantly:

  • WebP Format - Photos resized to efficient WebP (grid: 600px, full: 1600px)
  • Static Site - No server-side code, no database! Just pure HTML, CSS, JS
  • CDN Ready - Deploy to AWS S3 + CloudFront or any web server
  • Client-Side Fetch - Photo data loaded from static JSON indexes

🖼️ Beautiful Gallery Interface

A clean, distraction-free experience:

  • Album Grid - Concise cards with description, photo count, date range, and cover photo
  • Photo Grid - Nicely justified layout that adapts to any screen size
  • PhotoSwipe Lightbox - Click a photo to see the full version with smooth swiping
  • Keyboard Navigation - Arrow keys navigate, ESC exits to home
  • Mobile Friendly - Works great on phone, tablet, and desktop
  • Dark/Light Theme - Toggle between themes instantly

📝 Optional Photo Captions

Add context to your memories:

  • photogen.txt - Define captions for each photo in an album
  • Hover Captions - Desktop shows caption on mouse hover
  • Always Visible - Mobile shows caption below each photo
  • Alt Text - Captions used as image alt text for accessibility
  • Sort Order - Override default date-based sorting

🔗 Shareable Permalinks

Every photo gets a shareable URL:

  • Permalink Format - /albums/patagonia/5 for direct linking
  • Copy Button - One-click copy to clipboard
  • OpenGraph Tags - Rich previews when sharing on social media

⚙️ Simple Configuration

Three files to set up your site:

  • albums.yaml - Define your albums and their photo folders
  • descriptions.txt - Short description for each album
  • site.env - Site name, description, copyright info

🔒 Privacy First

Your photos, your rules:

  • Metadata Stripped - EXIF data removed from WebP output (no GPS leak)
  • No Tracking - No analytics, no cookies
  • Self-Hosted - Runs on your server, not someone else’s

Tech Stack

  • Backend - Go (photogen) for image resizing and JSON generation
  • Frontend - SvelteKit (static site)
  • Image Processing - libvips for fast WebP conversion
  • Lightbox - PhotoSwipe
  • Deployment - Any web server (Apache, nginx) or S3/CDN

Platforms

  • 🍎 macOS (via Homebrew)
  • 🐧 Linux (via apt/yum)
  • 🪟 Windows (via WSL2)

Get Started

Prerequisites

# Install Go, vips, and pkg-config
brew install go vips pkg-config

# Fetch Go dependencies
go mod download

# Install Node.js via nvm
make web-nvm-install

# Install npm dependencies
make web-npm-install

Quick Start with Sample

# Resize sample photos and generate JSON
make sample-photogen

# Run dev server
make sample-npm-run-dev

Visit http://localhost:5173 to see the sample site.

Build Your Own

  1. Configure your albums:

    cp config/albums.example.yaml config/albums.yaml
    cp config/descriptions.example.txt config/descriptions.txt
    cp config/site.example.env config/site.env
  2. Run the generator:

    # Dry run (default)
    go run cmd/photogen/photogen.go -resize -index
    
    # Do it for real
    go run cmd/photogen/photogen.go -resize -index -doit
  3. Run locally:

    make web-npm-run-dev
  4. Build static site:

    make web-npm-build
  5. Deploy:

    # Deploy to your web server (Apache example)
    rsync -avz web/build/ your-server:/var/www/photos/

🔗 GitHub: github.com/dougdonohoe/ddphotos

🔗 Live Demo: photos.donohoe.info

Why This Tool Rocks

  • Incredibly Fast - Static site with WebP images loads in seconds, not 20+ seconds like iCloud
  • Total Control - No accounts, no ads, no tracking, no subscription fees
  • Your Server - Deploy anywhere: Apache, nginx, S3+CloudFront
  • Clean UI - No social media clutter, no distractions!
  • Mobile Optimized - Swipe through photos on your phone, works offline
  • Self-Hosted - No vendor lock-in, your photos stay yours
  • Captions & Metadata - Optional captions, sort order, OpenGraph sharing
  • Built with AI - Much of it was built with Claude Code: see HISTORY.md for the journey
  • Open Source - AGPL licensed

Crepi il lupo! 🐺