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

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