SharedMoments is a website that allows a couple to capture their shared moments.
10K+
SharedMoments
Your private space for shared memories — for couples, families, and friends. Visit the GitHub Repository here!
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.
🚀 Try the Live Demo
The first load may take 20–30 seconds to start up.
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.
python manage.py set-password <email>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:
python3 -c "import secrets; print(secrets.token_hex(32))"
docker compose up -d
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.)
Supported on Debian/Ubuntu, Fedora/Rocky, CentOS:
curl -fsSL https://raw.githubusercontent.com/tech-kev/SharedMoments/main/install.sh | sudo bash
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.
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.
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.
Currently available languages:
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.
| 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) |
Have an idea? Please submit feature requests via the issue section.
Found a bug? Please open an issue and describe the problem.
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.
If you like this project, consider supporting it:
SharedMoments is licensed under the GNU Affero General Public License v3.0.
Content type
Image
Digest
sha256:ba1cb9293…
Size
321 MB
Last updated
4 months ago
docker pull techkev/sharedmoments