Giter Site home page Giter Site logo

gregordr / imagestore Goto Github PK

View Code? Open in Web Editor NEW
689.0 13.0 32.0 22.36 MB

Open source google photos alternative!

Home Page: https://gregordr.github.io/ImageStore/

License: Apache License 2.0

JavaScript 0.22% TypeScript 87.47% HTML 0.69% CSS 0.41% Dockerfile 1.24% Python 9.07% Shell 0.90%
images photo photos media storage labelers album

imagestore's People

Contributors

acurisu avatar dependabot[bot] avatar fomalhautb avatar gregordr avatar habitualdev avatar sawyerpollard avatar therumbler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

imagestore's Issues

Errors...

Using docker, I got the following errors:
detectron2_1 | HTTPConnectionPool(host='backend', port=4000): Max retries exceeded with url: /labels/getBatch (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd4ad3c6ca0>: Failed to establish a new connection: [Errno 111] Connection refused'))

Furthermore I have no picture shown. Is there something to do to trigger a scan? Or as I have 40k pictures, it takes time to do it?? (no message on backend)

Here is my yml file (I juste changed the port to 5000 to avoid conflict with other services running on the same server:

version: "3.9"
services:
    nginx:
        image: imagestored/nginx
        ports:
            - "5000:8080" #Change to X:8080 to access on port X
        depends_on:
            - frontend

    frontend:
        image: imagestored/frontend
        depends_on:
            - backend

    backend:
        image: imagestored/backend
        restart: always
        environment:
            PGSTRING: postgres://postgres:example@db:5432/postgres # This string has to resolve to a Postgres database on version 11
        volumes:
            - /home/pascal/Librephotos/pictures:/code/media/
        depends_on:
            - db

    db:
        image: postgres:11
        restart: always
        environment:
            POSTGRES_PASSWORD: example
        volumes:
            - ./data/:/var/lib/postgresql/data/

    detectron2: # You can use either detectron2, which is slower but more accurate, or yolo, which is faster but has less accurate results, and is very leigthweight. Check yourself how much load detectron2 puts on your device, and if it's too much, switch to yolo. Comment out the model you want to use back in, but never comment out both.
        image: imagestored/detectron2
        environment:
            BASE_ADDRESS: backend:4000 # Set this to the address the backend will be accessible on
            FETCH_INTERVAL: 10 # This is the interval the labeler will poll for new images in seconds

    # yolo: # You can use either detectron2, which is slower but more accurate, or yolo, which is faster but has less accurate results, and is very leigthweight. Check yourself how much load detectron2 puts on your device, and if it's too much, switch to yolo. Comment out the model you want to use back in, but never comment out both.
    #     image: imagestored/yolo
    #     environment:
    #         BASE_ADDRESS: backend:4000 # Set this to the address the backend will be accessible on
    #         FETCH_INTERVAL: 10 # This is the interval the labeler will poll for new images in seconds

And the docker-compose output:


Attaching to imagestore_db_1, imagestore_detectron2_1, imagestore_backend_1, imagestore_frontend_1, imagestore_nginx_1
db_1          | The files belonging to this database system will be owned by user "postgres".
db_1          | This user must also own the server process.
db_1          |
detectron2_1  | ** fvcore version of PathManager will be deprecated soon. **
detectron2_1  | ** Please migrate to the version in iopath repo. **
detectron2_1  | https://github.com/facebookresearch/iopath
detectron2_1  |
db_1          | The database cluster will be initialized with locale "en_US.utf8".
db_1          | The default database encoding has accordingly been set to "UTF8".
db_1          | The default text search configuration will be set to "english".
db_1          |
db_1          | Data page checksums are disabled.
detectron2_1  | Config 'bottom-up-attention.pytorch/configs/bua-caffe/extract-bua-caffe-r101.yaml' has no VERSION. Assuming it to be compatible with latest v2.
db_1          |
detectron2_1  | ResNet.make_stage(first_stride=) is deprecated!  Use 'stride_per_block' or 'stride' instead.
detectron2_1  | ResNet.make_stage(first_stride=) is deprecated!  Use 'stride_per_block' or 'stride' instead.
db_1          | fixing permissions on existing directory /var/lib/postgresql/data ... ok
detectron2_1  | ResNet.make_stage(first_stride=) is deprecated!  Use 'stride_per_block' or 'stride' instead.
db_1          | creating subdirectories ... ok
db_1          | selecting default max_connections ... 100
db_1          | selecting default shared_buffers ... 128MB
db_1          | selecting default timezone ... Etc/UTC
db_1          | selecting dynamic shared memory implementation ... posix
db_1          | creating configuration files ... ok
db_1          | running bootstrap script ... ok
db_1          | performing post-bootstrap initialization ... ok
nginx_1       | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
nginx_1       | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
nginx_1       | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
nginx_1       | 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
nginx_1       | 10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf differs from the packaged version
nginx_1       | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
nginx_1       | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
nginx_1       | /docker-entrypoint.sh: Configuration complete; ready for start up
db_1          | syncing data to disk ... ok
db_1          |
db_1          | Success. You can now start the database server using:
db_1          |
db_1          |     pg_ctl -D /var/lib/postgresql/data -l logfile start
db_1          |
db_1          |
db_1          | WARNING: enabling "trust" authentication for local connections
db_1          | You can change this by editing pg_hba.conf or using the option -A, or
db_1          | --auth-local and --auth-host, the next time you run initdb.
db_1          | waiting for server to start....2021-04-03 18:07:29.683 UTC [47] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1          | 2021-04-03 18:07:30.206 UTC [48] LOG:  database system was shut down at 2021-04-03 18:07:14 UTC
db_1          | 2021-04-03 18:07:30.303 UTC [47] LOG:  database system is ready to accept connections
db_1          |  done
db_1          | server started
db_1          |
db_1          | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
db_1          |
db_1          | 2021-04-03 18:07:31.732 UTC [47] LOG:  received fast shutdown request
db_1          | waiting for server to shut down....2021-04-03 18:07:31.798 UTC [47] LOG:  aborting any active transactions
db_1          | 2021-04-03 18:07:31.810 UTC [47] LOG:  background worker "logical replication launcher" (PID 54) exited with exit code 1
db_1          | 2021-04-03 18:07:31.810 UTC [49] LOG:  shutting down
db_1          | 2021-04-03 18:07:32.268 UTC [47] LOG:  database system is shut down
db_1          |  done
db_1          | server stopped
db_1          |
db_1          | PostgreSQL init process complete; ready for start up.
db_1          |
db_1          | 2021-04-03 18:07:32.561 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
db_1          | 2021-04-03 18:07:32.561 UTC [1] LOG:  listening on IPv6 address "::", port 5432
db_1          | 2021-04-03 18:07:32.727 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1          | 2021-04-03 18:07:33.028 UTC [66] LOG:  database system was shut down at 2021-04-03 18:07:32 UTC
db_1          | 2021-04-03 18:07:33.108 UTC [1] LOG:  database system is ready to accept connections
backend_1     |
backend_1     | > [email protected] start
backend_1     | > npx ts-node --files ./src/index.ts
backend_1     |
detectron2_1  | HTTPConnectionPool(host='backend', port=4000): Max retries exceeded with url: /labels/getBatch (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd4ad3c6ca0>: Failed to establish a new connection: [Errno 111] Connection refused'))
frontend_1    | INFO: Accepting connections at http://localhost:3000
detectron2_1  | HTTPConnectionPool(host='backend', port=4000): Max retries exceeded with url: /labels/getBatch (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd4ad2594f0>: Failed to establish a new connection: [Errno 111] Connection refused'))
detectron2_1  | HTTPConnectionPool(host='backend', port=4000): Max retries exceeded with url: /labels/getBatch (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd4ad3fc970>: Failed to establish a new connection: [Errno 111] Connection refused'))
detectron2_1  | HTTPConnectionPool(host='backend', port=4000): Max retries exceeded with url: /labels/getBatch (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd4ad3c6070>: Failed to establish a new connection: [Errno 111] Connection refused'))
detectron2_1  | HTTPConnectionPool(host='backend', port=4000): Max retries exceeded with url: /labels/getBatch (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd4ad2e54c0>: Failed to establish a new connection: [Errno 111] Connection refused'))
detectron2_1  | HTTPConnectionPool(host='backend', port=4000): Max retries exceeded with url: /labels/getBatch (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd4ad240af0>: Failed to establish a new connection: [Errno 111] Connection refused'))
detectron2_1  | HTTPConnectionPool(host='backend', port=4000): Max retries exceeded with url: /labels/getBatch (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd4ad2d4a30>: Failed to establish a new connection: [Errno 111] Connection refused'))
detectron2_1  | HTTPConnectionPool(host='backend', port=4000): Max retries exceeded with url: /labels/getBatch (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd4ad31fb20>: Failed to establish a new connection: [Errno 111] Connection refused'))
detectron2_1  | HTTPConnectionPool(host='backend', port=4000): Max retries exceeded with url: /labels/getBatch (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fd4ad2bea60>: Failed to establish a new connection: [Errno 111] Connection refused'))
backend_1     | Listening on port 0.0.0.0:4000
backend_1     | Created Table media
backend_1     | Created Table albums
backend_1     | Created Table labelTable
backend_1     | Created Table album_photo
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:29:55 +0000] "GET / HTTP/1.1" 200 1496 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:29:55 +0000] "GET /static/css/main.eb694bcf.chunk.css HTTP/1.1" 200 887 "http://192.168.0.25:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:29:55 +0000] "GET /static/css/2.0f1e8ff2.chunk.css HTTP/1.1" 200 11880 "http://192.168.0.25:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:29:56 +0000] "GET /static/js/main.b803d491.chunk.js HTTP/1.1" 200 16057 "http://192.168.0.25:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:29:56 +0000] "GET /static/js/2.c02ad7eb.chunk.js HTTP/1.1" 200 290041 "http://192.168.0.25:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:29:56 +0000] "GET /favicon.ico HTTP/1.1" 200 3473 "http://192.168.0.25:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:29:56 +0000] "GET /api/media/all HTTP/1.1" 200 2 "http://192.168.0.25:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:29:56 +0000] "GET /api/albums/all HTTP/1.1" 200 2 "http://192.168.0.25:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:30:00 +0000] "GET /api/albums/all HTTP/1.1" 304 0 "http://192.168.0.25:5000/albums" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:30:02 +0000] "GET /api/media/all HTTP/1.1" 304 0 "http://192.168.0.25:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:30:02 +0000] "GET /api/albums/all HTTP/1.1" 304 0 "http://192.168.0.25:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:43:43 +0000] "GET /api/albums/all HTTP/1.1" 304 0 "http://192.168.0.25:5000/albums" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:43:44 +0000] "GET /api/media/all HTTP/1.1" 304 0 "http://192.168.0.25:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
nginx_1       | 192.168.0.90 - - [03/Apr/2021:18:43:44 +0000] "GET /api/albums/all HTTP/1.1" 304 0 "http://192.168.0.25:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"

Pull albums from existing source

Hello,

I'm wondering if it's possible to have images pulled from existing directories? As an example, I have an external hard drive mounted in Ubuntu. I would like to know if I could point ImageStore to pull the albums that I have on that drive, and display them in ImageStore.

Thanks in advance!

CLI installation instructions

Would it be possible to provide step by step instructions for CLI installation, without using docker-compose or docker at all?

Please don't just say that docker-compose can be deconstructed in CLI instructions. I am aware that someone who has experience with this could do it but for the rest of us, seasonable users, who don't want to use docker, this is somewhat difficult and I for sure wouldn't ask for this if it would be a straightforward process

Thank you in advance!

backend can't connect to db

image
As the title says, after running docker-compose up, the service starts but the backend can't reach the postgres database. I've left docker-compose.yml virtually untouched besides uncommenting the lines for detectron. I'm pretty new to using docker and postgres, so perhaps I'm missing something but I've yet to find it.

docker-compose.yml:

version: "3.7"
services:
    nginx:
        image: imagestored/nginx
        ports:
            - "3000:8080" #Change to X:8080 to access on port X
        depends_on:
            - frontend

    frontend:
        image: imagestored/frontend
        depends_on:
            - backend

    backend:
        image: imagestored/backend
        restart: always
        environment:
            PGSTRING: postgres://postgres:example@db:5432/postgres # This string has to resolve to a Postgres database on version 11
        volumes:
            - ./media/:/code/media/
        depends_on:
            - db

    db:
        image: postgres:11
        restart: always
        environment:
            POSTGRES_PASSWORD: example
        volumes:
            - ./data/:/var/lib/postgresql/data/

    detectron2: # You can use either detectron2, which is slower but more accurate, or yolo, which is faster but has less accurate results, and is ver>         image: imagestored/detectron2
         environment:
             BASE_ADDRESS: backend:4000 # Set this to the address the backend will be accessible on
             FETCH_INTERVAL: 10 # This is the interval the labeler will poll for new images in seconds

    # yolo: # You can use either detectron2, which is slower but more accurate, or yolo, which is faster but has less accurate results, and is very le>    #     image: imagestored/yolo
    #     environment:
    #         BASE_ADDRESS: backend:4000 # Set this to the address the backend will be accessible on
    #         FETCH_INTERVAL: 10 # This is the interval the labeler will poll for new images in seconds

Note: I'm using version 3.7 of the compose file as I also got an error trying to use version 3.9.I was using 3.8 for a while but then that stopped working too. Not sure if its related.

Mobile Safari Height Issues On Summary Page

On mobile safari (tested on iPhone X and iPad Pro, happens on both) there seems to be an error calculating the scrolling height of the page on the first attempt. Once I reach the “end” of the page for the footer or header, it stops until I swipe up again then it adds the height I need to scroll. If on the bottom of the page for a second and attempting to scroll the top, it happens to the top of the document as well.

Attached video of the behavior on iPhone.

IMG_1188.MP4

Changing to an IP adress from localhost

After installing, the ImageStore is listening on the port 9368, as I had my 8080 already in use. The only way I can get to actually use it is by entering "localhost:9386" on my "server" (actually an old notebook). Is there a way to change it to the IP address of the machine? When I am entering "192.168...." right now, it loads the page partially - just the ImageStore logo, Photos and Albums buttons, and the Search bar. And a "waiting stripe" (don`t know how to call that interface element that shows when something is loading) is constantly running. Even if i am on the same machine.

No Security Or user management?

So I take it this something you could never expose to the internet, I do not see any mechanism to prevent just anybody from deleting all your images.

Is this for internal use only?

Accessible from non-local networks

There seems to be an issue with accessing the application with a domain name as it's trying to resolve the backend (port 4000). I've had a quick look at the source and it mentions the PUBLIC_URL as a variable. Hope I'm making sense so far.

https://github.com/gregordr/ImageStore/blob/main/frontend/src/API.tsx#L15

I can access the frontend with no issue, but because it's trying to connect to the backend on port 4000 and possible the db connection too it fails. However it works just fine using the local address. Not sure if it's a code issue or perhaps a docker configuration.

Run rootles by default

By default the images run as root. The images have no problem running as an unprivileged user (I've forced this myself via a security context), but would be great to use an non-root imagestore user by default for redundancy and a named uid.

[FEATURE REQUEST] UNRAID template install

Hi,
I would love to use your app, but running UNRAID it would be really easier for me to setup your Image gallery with an UNRAID's template.
Maybe you should look at this because it would also open your project to LOTS of selfhosted enthousiasts !

Detectron2_1 error brand new docker install

when I start the docker compose file everything starts up but the detectron2.
In the log I see a single error.

Traceback (most recent call last):

File "/code/./app.py", line 7, in

from classification.model import ImageClassifier

File "/code/classification/model.py", line 18, in

from utils.extract_utils import get_image_blob

File "/code/bottom-up-attention.pytorch/utils/extract_utils.py", line 3, in

import cv2

File "/usr/local/lib/python3.9/site-packages/cv2/init.py", line 5, in

from .cv2 import *

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

[Feature Request] Auto Import and Password Protection

Auto-import from directory. I use Resilio-sync to auto-backup photos from my phone. I would love the ability to have imagestore automatically import those files (or give me a command that I can run to do this myself).

Second, I would like a basic username/password to protect my photos from being publicly available.

Feature request – basic auth

It would be good to have any type of auth for app with all api requests signed with access token that lasts some period of time.

[Feature Request] Import directory

Expose an import directory to ImageStore so that photos can be uploaded/dumped into this folder for ImageStore to index, sort and add to the backend filesystem.

[Feature Request] Upload photos from phone

Would be great to have a way to upload photos taken from phones directly to ImageStore (to be sorted into year/month folders on the file system).

Integration with apps like PhotoSync (using WebDav) or something similar might be useful

Fatal error with backend

image

This is my docker-compose.yml file


version: "3.9"
services:
    nginx:
        image: imagestored/nginx
        ports:
            - "3000:8080" #Change to X:8080 to access on port X
        depends_on:
            - frontend

    frontend:
        image: imagestored/frontend
        depends_on:
            - backend

    backend:
        image: imagestored/backend
        restart: always
        environment:
            PGSTRING: postgres://postgres:example@db:5432/postgres # This string has to resolve to a Postgres database on version 11
        volumes:
            - ./media/:/code/media/
        depends_on:
            - db

    db:
        image: postgres:11
        restart: always
        environment:
            POSTGRES_PASSWORD: example
        volumes:
            - ./data/:/var/lib/postgresql/data/

    # detectron2: # You can use either detectron2, which is slower but more accurate, or yolo, which is faster but has less accurate results, and is very leigthweight. Check yourself how much load detectron2 puts on your device, and if i$
    #     image: imagestored/detectron2
    #     environment:
    #         BASE_ADDRESS: backend:4000 # Set this to the address the backend will be accessible on
    #         FETCH_INTERVAL: 10 # This is the interval the labeler will poll for new images in seconds

    yolo:
        image: imagestored/yolo
        environment:
            BASE_ADDRESS: backend:4000 # Set this to the address the backend will be accessible on
            FETCH_INTERVAL: 10 # This is the interval the labeler will poll for new images in seconds

I found this issue while googling around and was wondering if it happens to shed any light as to what is going on here? lovell/sharp#2196

I am running this on Raspbian Buster on a Raspberry Pi 4 4GB model. I have a few other docker containers running along side this although I don't believe that should cause any issues.
Please let me know if you require any additional information

Add semantic versioned tags

Currently the only available tags on dockerhub are test and latest.

This makes it hard to keep track of which version you are running (are you running the latest "latest" images) and updating, especially in a gitops environment.

Would be great to add support for semantic versioned releases based on git tags to the build pipeline.

Use existing images

Does ImageStore support existing images and folder structure? If so, where do I put or link existing images?
Thanks

Build arm64 images

Love the project and how the container images are segmented.

Would like to deploy on my k8s RPi cluster which is arm64 based. Currently there are only amd64 images on docker hub.

multiple users

Do you plan to add the ability to work with multiple users with isolated collections?

We need basic user capabilities - login and password and so that users do not see each other's photos and albums.

detectron2 error

Thanks for sharing this app!

I just tried spinning it up with detectron2 enabled and got the following error. Haven't had a chance to look into yet, but wanted to note it here.

detectron2_1  | predicting
detectron2_1  | Traceback (most recent call last):
detectron2_1  |   File "/code/./app.py", line 27, in <module>
detectron2_1  |     prediction = im_clf.predict(im)
detectron2_1  |   File "/code/classification/model.py", line 49, in predict
detectron2_1  |     dataset_dict = get_image_blob(x, self._cfg.MODEL.PIXEL_MEAN)
detectron2_1  |   File "/code/bottom-up-attention.pytorch/utils/extract_utils.py", line 40, in get_image_blob
detectron2_1  |     im_orig -= pixel_means
detectron2_1  | ValueError: operands could not be broadcast together with shapes (2592,4756,4) (1,1,3) (2592,4756,4)
imagestore_detectron2_1 exited with code 1

Support for RAW files?

The app is amazing, but it seems RAW images aren't supported. Is this planned in the future by any chance?

Enhancement - Unsorted / Images not in albums

Would it be possible to add another category in the nav bar for unsorted or images not added to albums. After uploading approx. 1000 images from different sources this has been quite a challenge finding new images to add to albums.

Not a rush or anything just something to add for future revisions. This is by far the best photo gallery/manager I've used, keep up the great work! 🥇

Any suggestions on performance limits?

Firstly, thanks for sharing this, it looks awesome!

Do you have any idea how this scales? I'm wondering if it's built to handle say 20k photos, total volume 150GB or similar?

Add shift/ctrl click to multi select between photos

Somehow one of my uploads to a new album went awry and I wound up with over 100 photos sitting unorganized in Photos. In order to get them into an album, I had to click each individual photo to select them to be added to an album. Is it possible to add a shift/ctrl click to just click 2 photos and select them and everything in between?

[Feature Request] Multilanguage Support

Hi!
I came across this project and it's immediately usable and simple which I absolutely love.
Is there a way to implement other languages for example german or italian?
Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.