Skip to content
Your personal locally hosted smart gallery manager.
PHP JavaScript HTML Python Dockerfile CSS Shell
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.

Smart Gallery Manager · GitHub license Build Status

Your personal locally hosted smart gallery manager.

View this Trello Board for the TODO items.

Please note that this is a personal project, that is still in the pre-alpha stage, so it should only be used for development purposes.


  • Gallery of images [Note: Currently it will scan and add ALL files inside the folders you specify, so add folders that only contain images]
  • Filter the images by type, date taken or created & tags (if labelling via Amazon Rekognition is enabled)
  • Search images by path, location (if reverse geolocation via HERE Geocoding is enabled), tags, extension and more
  • Detailed modal view with information about the image
  • A map view to show whey you took the images


  • Processor: dual core or higher
  • Memory: 1 GB RAM or more

May work on lower specs, but it has to be tested first.


Preview 1 Preview 2 Preview 3


  • It runs on Nginx with PHP-FPM
  • The main app (API & admin) is written in Symfony with MySQL as the database
  • Frontend is written in React
  • It uses webpack as the bundler via Symfony Webpack Encore
  • There is also a python micro service for converting & reading exif data from .dng files and for face detection on images


  • Prepare the environment
    • Create your own .env file (copy the contents from .env.example)
      • All the variables in .env, will automatically be forwarded to the sgm_php_fpm, sgm_node & the sgm_python container.
      • This is the most convenient way to set the web app variables all in one place. Alternatively you can duplicate the web/.env into web/.env.local and set your the values for your custom variables there - particularly those, inside the Project block.
    • Create a docker-compose.override.yml file and set your custom volumes there - just copy the contents from docker-compose.override.example.yml
    • (optional) Create a settings.yml file and add your file folders in - just copy the contents from settings.example.yml
      • Those will be your default folders that will be used when manually triggering the files scan with docker exec -i sgm_php_fpm php bin/console app:files:scan and the files that will per default always show up in the dashboard, when triggering the scan via the web UI
  • Build the app
    • Run: docker-compose build
    • Run: docker-compose up
      • This may take a while, especially for the first time, as the sgm_node container will install all the dependencies.
    • Run: docker exec -i sgm_php_fpm composer install
    • Run: docker exec -i sgm_php_fpm php bin/console doctrine:schema:update -f
  • Start scanning for new files


  • To run the tests, you simply execute: docker exec -i sgm_php_fpm php bin/phpunit



Smart Gallery Manager is licensed under the MIT license.

You can’t perform that action at this time.