Skip to content

tech-kev/SharedMoments

Repository files navigation

SharedMoments

Your private space for shared memories — for couples, families, and friends.

Version License Python Docker

SharedMoments is a self-hosted web app that lets you capture and relive your most important moments together. Upload photos & videos, track milestones, set countdowns, and get notified on special days — all in a beautiful, modern interface.

📸 Screenshots






The first load may take 20–30 seconds to start up.

💡 Features

Core

  • Photo & Video Feed — Upload and browse your shared moments on a personalized home page
  • Gallery — Create albums for trips, events, and more
  • Timeline — Chronicle significant moments (first kiss, moving in together, engagement, ...)
  • Countdown — Set a timer for upcoming events with live countdown card
  • Banner — Display your relationship duration in years, months, weeks, and days — exportable as an image
  • Custom Lists — Movie list, bucket list, or create your own lists with custom icons and paths
  • Soundtrack — Upload and play your song directly from the banner

Editions

SharedMoments supports three editions, selectable during setup:

Edition Description
Couples For partners — relationship status, anniversary, engagement & wedding dates
Family For families — family name, founding date
Friends For friend groups — group name, founding date

You can switch editions at any time without losing data.

AI Writing Assistant

  • Let AI help you write beautiful descriptions for your memories
  • Supports OpenAI, Anthropic (Claude), and Ollama (local/self-hosted)
  • Customizable via environment variable

Notifications

  • Push Notifications — Delivered directly to your browser or phone (works automatically, no setup needed)
  • E-Mail — Receive notifications via email
  • Telegram — Get notified via Telegram bot
  • Each user can choose their preferred notification channels in settings

Reminder System

  • Annual — Birthdays, anniversaries, wedding days (auto-synced from your data)
  • One-time — Custom reminders for specific dates
  • Milestones — Automatic reminders at 100, 365, 1000 days and more (up to 30 years)
  • Countdowns — Get notified when a countdown reaches zero
  • Mute individual reminders per user
  • Choose how many days in advance you want to be notified

Security & Authentication

  • Secure login with email & password
  • Passkey — Log in without a password using a security key
  • Password Reset — Reset via email link on the login page (requires SMTP) or via CLI: python manage.py set-password <email>
  • Manage users, roles, and permissions in the admin panel

Sharing

  • Share individual items via link
  • Optional password protection
  • Optional expiration date
  • View counter (can be disabled)

More

  • Install as Progressive Web App — Add SharedMoments to your home screen on any device, with offline support
  • Dark Mode — Per user setting
  • Accent Color — Customize the look & feel per user
  • Multilingual — German & English included, add more languages in the built-in [translation manager (See Wiki for more Details)
  • Video Thumbnails — Automatically generated
  • Data Export & Import — Full backup and restore of all data and media as ZIP

📥 Installation

Docker (recommended)

  1. Create a docker-compose.yml:
services:
  sharedmoments:
    image: techkev/sharedmoments
    container_name: sharedmoments
    restart: unless-stopped
    ports:
      - "5001:5001"
    volumes:
      - sm-database:/app/app/database
      - sm-uploads:/app/app/uploads
      - /etc/localtime:/etc/localtime:ro
    environment:
      - SECRET_KEY=CHANGE-ME

volumes:
  sm-database:
  sm-uploads:
  1. Generate a secure secret key:
python3 -c "import secrets; print(secrets.token_hex(32))"
  1. Start the container:
docker compose up -d
  1. Open http://your-ip:5001 and complete the setup wizard.

See the full docker-compose.yml in this repo for all available options (AI, notifications, migration, etc.)

Native Install Script

Supported on Debian/Ubuntu, Fedora/Rocky, CentOS:

curl -fsSL https://raw.githubusercontent.com/tech-kev/SharedMoments/main/install.sh | sudo bash

🔄 Updating

For Docker, pull and restart. For native installations, use the built-in update script:

sudo bash /opt/sharedmoments/update.sh

The script backs up your data, pulls the latest code, updates dependencies, and restarts the service. See the wiki for details.

⚙️ Configuration

All configuration is done via environment variables. See the Configuration wiki page for all available options including AI providers, notifications, passkeys, demo mode, and more.

🔄 Migration from v1

Coming from SharedMoments v1? v2 includes a built-in migration tool that transfers your data from MySQL to SQLite. See the Migration Guide for step-by-step instructions.

🌍 Translation

Currently available languages:

  • 🇩🇪 German
  • 🇬🇧 English
  • 🇮🇹 Italian

New languages can be added directly in the built-in translation manager (accessible from the sidebar for users with the right permissions).

See the wiki for details.

🛠️ Tech Stack

Layer Technology
Backend Python 3.12, Flask, SQLAlchemy, SQLite
Frontend Jinja2, JavaScript, BeerCSS (Material Design 3)
AI OpenAI, Anthropic, Ollama
Media ffmpeg, Pillow
Deployment Docker (Gunicorn) or native (systemd)

📝 Feature Requests

Have an idea? Please submit feature requests via the issue section.

🐞 Bugs

Found a bug? Please open an issue and describe the problem.

💪 Motivation

I was looking for a website where my girlfriend and I could capture our moments together. When I couldn't find anything that met our needs, I started building my own. What began as a small side project grew into something much bigger — and eventually I decided to rebuild it from scratch and make it available to everyone.

SharedMoments v2 is a complete rewrite — born from everything I learned while building the first version. The more I worked on it, the stronger the desire grew to rebuild it from the ground up: cleaner under the hood, better architecture, and packed with new features like AI-assisted writing, passkey login, push notifications, and a full role & permission system. I also wanted to go beyond just couples, so v2 now comes in three editions — Couples, Family, and Friends — to fit different kinds of relationships.

❤️ Support

If you like this project, consider supporting it:

Ko-fi

📜 License

SharedMoments is licensed under the GNU Affero General Public License v3.0.

About

A website designed for couples to capture and preserve their special moments

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors