Skip to content

Overview

Stripes

Keep your memories alive with framaRAMA. The smart way to show your memories from a photo collection on a digital photo frame.

Features:

  • 📷 configure multiple different sets of photos
  • 📺 show them on different devices
  • 🤝 integrate you own photo collections
  • 🎯 priorize the photos to show by meta data (e.g. date taken)
  • 🪄 add make up to your photos (resize, write text, etc)
  • 🍿 enjoy your memories

How to start

The software consists of mainly two parts:

  • the server component, for administration and management
  • the frontend component, for displaying the photos

Usually the server component is setup on a central device or server and the frontend component is runningo on a device attached to a display (e.g. a Raspberry Pi with a display connected). But it's also possible to run both components on the same device.

General setup

Follow the steps below to setup both components on the same system. If you want to separate them, see sections below.

📢 Before starting check the requirements of the components below and install them if required (enable them in requirements/config.txt): * mysqlclient==2.1.0 - if you want to use MySQL as backend (configuration see below)

git clone https://github.com/framaRAMA/framarama.git framarama
cd  framarama
mkdir data
python -m venv venv
. ./venv/bin/activate
pip install -r requirements/default.txt

Running both components on one system, set MODES in framarama/settings.py:

    'MODES': [
        'server',
        'frontend'
    ],

To use an external database change DATABASE in framarama/settings.py:

  'default': {
    'NAME': 'dbname',
    'ENGINE': 'django.db.backends.mysql',
    'USER': 'dbuser',
    'PASSWORD': 'dbpassword',
    'HOST': 'dbhost',
  }

Initial setup:

python manage.py migrate
python manage.py collectstatic
python manage.py createsuperuser
python manage.py setup --set mode=local
python manage.py setup --set local_db_type=local

Start application (flag --insecure is required to serve static files):

python manage.py runserver 0.0.0.0:8000 --noreload --insecure

... and navigate browser to

Enjoy!

Server setup

This component is the central place where all the configuration and setup is done. It is providing a web interface to setup your photo collection and assign them to different frames or displays.

Checkout the project as mentioned before and adjust the configuration:

    'MODES': [
        'server',
        #'frontend'
    ],

The server component depends on the following dependencies:

  • python3, python3-venv, python3-dev - standard Python environment
  • gsfonts, gsfonts-other, fonts-liberation, fonts-urw-base35, fonts-freefont-ttf, fonts-freefont-otf - fonts support, might be other packages (install them and check via convert -list font)
  • 💡 libmariadb3 - for external database support

When just running the server component, setup the initial configuration using following command:

python manage.py setup --set mode=cloud

After application startup you can open the server setup in the browser.

Frontend setup

This component is used to retrieve data from the server component and prepare the photo to display it - usually - locally on the display connected to the device.

Checkout the project as mentioned before and adjust the configuration:

    'MODES': [
        #'server',
        'frontend'
    ],

The frontend component depends on the following dependencies:

  • python3, python3-venv, python3-dev - standard Python environment
  • 💡 network-manager, dnsmasq-base - configuring and setting up networking
  • 💡 plymouth, plymouth-themes, plymouth-x11 - create startup booting screen
  • 💡 xserver-xorg, xrandr|x11-server-utils, xinit, openbox, feh, imagemagick - show pictures using graphical frontend
  • 💡 xinput - register keystores for fallback commands

After application startup you can open the frontend setup in the browser.

Final notes

This project was born because we all have large collection of photo but don't regularly look at them to benefit. Maybe we have some photos in some photo frames on walls or we have some of them in paper albums. But how often do we look at them to enjoy the memory?

With this project you can resurrect you memories by showing your photos on a digital photo frame.

If you like this project, please donate. Thanks!