← All Posts

Family Photo Share: Private Photo Sharing Without the Cloud Lock-In

View on GitHub ↗

Why I Built Family Photo Share

Every major photo service wants your data. Google Photos, iCloud, Amazon Photos — they all offer convenience in exchange for your family's most personal moments living on someone else's servers. I wanted to build an alternative: a self-hosted photo sharing platform designed specifically for families who value their privacy.

What It Does

Family Photo Share is a modern web application where families can upload, organize, and share photos on their own terms. It supports bulk uploads of up to 100 photos at a time with real-time progress tracking, automatic EXIF metadata extraction, and intelligent date-based organization.

The privacy model has three tiers: private (just you), family (group members only), and external (shareable via password-protected links). You control who sees what, and you can revoke access at any time.

The Tech Stack

I built this with Ruby on Rails 8 because Rails continues to be the best framework for building full-featured web applications quickly. The frontend uses Hotwire (Turbo + Stimulus) for real-time interactions without the complexity of a JavaScript SPA.

Photos are processed in the background with Sidekiq — handling EXIF extraction, thumbnail generation, and image variant creation asynchronously so uploads feel instant. Active Storage provides flexible storage backends, so you can deploy to local disk, AWS S3, or Google Cloud Storage.

Security Features

Beyond the privacy tiers, the app includes rate limiting with progressive lockouts to prevent brute force attacks, optional two-factor authentication via email, and granular session management for external access. I also run Brakeman security scanning as part of the development workflow to catch vulnerabilities early.

Self-Hosting Made Easy

The entire application is containerized with Docker and Docker Compose configurations for both development and production. Set a few environment variables, run docker-compose up, and you have a private photo sharing platform for your family.

What's Next

I'm continuing to add features like GPS-based location mapping for photos, enhanced slideshow functionality, and better mobile responsiveness. The goal is to make self-hosted photo sharing as polished as the commercial alternatives.