Skip to content

varun-raj/immich-power-tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo Immich Power Tools

A unofficial immich client to provide better tools to organize and manage your immich account. Building it to speed up your workflows in Immich to organize your people and albums.

Watch Demo Video here

Immich Power Tools

💭 Back story

Recently I've migrated my entire Google photos library to Immich, I was able to successfully migrate all my assets along with its albums to immich. But there were few things like people match that was lacking. I loved Immich UI on the whole but for organizing content I felt its quite restricted and I had to do a lot of things in bulk instead of opening each asset and doing it. Hence I built this tool (continuing to itereate) to make my life and any other Immich user's life easier.

🚀 Getting Started

🐬 Using Docker

Power-tools is designed to be used alongside Immich, and there are two ways you can run it.

Method 1 - Docker Compose ( Recommended )

Add the following into your docker compose as a new service along side other immich services. Make sure you've power-tools in same network as immich.

See the sample docker-compose-all-immich.yml file for reference.

services:
  # Other services...
  power-tools:
    container_name: immich_power_tools
    image: ghcr.io/varun-raj/immich-power-tools:latest
    ports:
      - "8001:3000"
    env_file:
      - .env

Add the Immich API Key and immich url's to the env file (which you already have for the immich)

IMMICH_API_KEY= # your_immich_api_key
IMMICH_URL = "http://local-ip-of-immich:port" # Your immich instace ip address and port
EXTERNAL_IMMICH_URL = "https://external-address" # External address of immich

# Optional
GOOGLE_MAPS_API_KEY= # Google Maps API Key
GEMINI_API_KEY= # Gemini API Key

Refer here for obtaining Immich API Key: https://immich.app/docs/features/command-line-interface#obtain-the-api-key

Method 2 - Portainer

If you're using portainer, run the docker using docker run and add the power tools to the same network as immich.

docker run -d --name immich_power_tools -p 8001:3000 --env-file .env ghcr.io/varun-raj/immich-power-tools:latest

🚀 For local development

Note

Please use bun to run the project. If you don't have bun installed, checkout bun.sh for installation.

Copy paste the .env.example to .env and fill in the values.

  IMMICH_URL="" # Immich URL
  IMMICH_API_KEY="" # Immich API Key
  DB_USERNAME="" # Postgress Database Username
  DB_PASSWORD = "" # Postgres Database Password
  DB_HOST = "" # Postgres Host (IP address or hostname of the database)
  DB_PORT = "" # Postgres Port number (Default: 5432)
  DB_DATABASE_NAME = "" # Name of the database 

Note

Make sure you have postgres port exposed on you machine.

Refer here for obtaining Immich API Key: https://immich.app/docs/features/command-line-interface#obtain-the-api-key

Run the development server:

bun run dev

Features

Immich Related

  • Manage People
    • Smart Merge
  • Manage Albums
    • Bulk Delete
    • Bulk Edit
    • Filters
    • Potential Albums
    • People in Album
  • Missing Location
  • Statistics
    • EXIF Data
    • Assets Overtime Chart

Tech Related

  • Dark Mode
  • Dockerize
  • Authentication
  • Push to github packages

Tech Stack

External Services

These services are completely optional and you can use the tool without them. Just that they are used for some of the features. But we dont send any personal data to these services.

  • Google Maps for heatmap Google Maps Javascript API Key is used to render the maps layer for heatmap. When rendering the heatmap, we only send the location data to Google Maps and not any other data.

    Code where heatmap data is plotted: src/pages/assets/geo-heatmap.tsx:32

  • Gemini for rewind video generation Google Gemini 1.5 Flash model is used for parsing your search query in "Find" page. We do not send any personal data to Gemini, only data that is sent to Gemini is your search query and rest of the querying happes using Immich's Smart Search API

    Code where Gemini is used: src/helpers/gemini.helper.ts

Contributing

Feel free to contribute to this project, I'm open to any suggestions and improvements. Please read the CONTRIBUTING.md for more details.