A lightweight, self-hosted photo sharing platform for events like weddings, parties, and corporate gatherings. Guests upload and browse photos through a password-protected gallery — no accounts or cloud services needed.

Event Photo Share Gallery

Optimized gallery viewer with thumbnail grid and full-resolution image viewer

Motivation

I built this for my own wedding to collect photos from guests without relying on third-party cloud services or requiring them to create accounts. The goal was a simple, self-hosted solution that keeps all photos on my own server while offering a polished gallery experience.

Password-Protected Login

Simple password-protected access with session-based authentication

Features

  • Password-protected access — Guests enter a single shared password to upload and view photos
  • Automatic image processing — HEIC conversion, thumbnail generation, EXIF extraction, and duplicate detection happen transparently
  • Video support — Upload videos with automatic thumbnail generation via FFmpeg
  • Optimized gallery — Bidirectional preloading of full-resolution images for instant navigation, with keyboard and swipe support
  • Bulk download — Download all event photos as a ZIP archive
  • Push notifications — Optional ntfy.sh integration for real-time upload alerts
  • Docker-ready — Single docker-compose up -d to deploy; photos stored in a mountable volume for easy backup and migration

Tech Stack

  • Backend: Node.js, Express (server-side rendered)
  • Image Processing: Sharp, FFmpeg
  • Deployment: Docker, Docker Compose
  • Storage: File-based with mounted volumes

Appendix and Links

The source code is available on GitHub.

License: MIT