PHP based image management & gallery
Go to file
xuedi 334c1ee51a updated readme 2021-02-01 22:27:11 +01:00
.github/workflows updated github action manifesto to php8 2021-02-01 22:25:35 +01:00
app updated to php8 2021-02-01 22:24:19 +01:00
config create basic structure for json menu precreation 2020-06-13 21:46:10 +02:00
frontend updated to php8 2021-02-01 22:24:19 +01:00
public refactor v1 2020-12-25 23:48:24 +01:00
.gitignore adjusted and make multiThreated thumbnail generation work 2020-04-13 23:04:17 +02:00
LICENSE Create LICENSE 2020-01-08 17:29:18 +01:00
Makefile refactor v1 2020-12-25 23:48:24 +01:00 updated readme 2021-02-01 22:27:11 +01:00

Actions Status Code Coverage


ImageViewer is a tool for managing your Images Collection its written as a Shotwell replacement in PHP & JS (vue). The motivation for this project is to have a bit of exercise and play around with TDD plus missing features and workflows in other photos Management software.

data handling

The project wont touch any of the photos if not explicitly confirmed to do so (tag editing), the database can be easily be regenerated. The folder of the image collection expects a certain format:

Country\2010-02-18 name of the Event\<images>

The Database is PDO abstracted, so mysql, postgres and sqlite should be an option.

software design

There are no frameworks used, just a few smaller packages like symfony process & console, phinx for data migration as well as a few minimalistic libraries.

There are to parts to the Gallery. The CLI part manages the Image Collection scanning and updating of the database, as well as multicore thumbnail generation. The frontend part will be vue based and should feel similar to Shotwell plus some more tag cloud navigation and other stuff i was missing.

PHP modules
  • PHP >= 8.0
  • ext-json
  • ext-exif
  • ext-pdo
  • ext-mbstring
  • ext-pcntl
  • ext-imagick


make install


make help


  • add function to check integrity (imageHash, nameHash mismatch)
  • add self referencing category table to sort the tags into hierarchy
  • create basic frontend list of tiles API-Requests (or json preGeneration)
  • auto select markers on heads (ml)
  • train people selection on head-markers