Convert Figma logo to code with AI

immich-app logoimmich

High performance self-hosted photo and video management solution.

54,187
2,873
54,187
446

Top Related Projects

AI-Powered Photos App for the Decentralized Web 🌈💎✨

3,459

A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.

A self-hosted open source photo management service. This is the repository of the backend.

Quick Overview

Immich is a self-hosted photo and video backup solution that allows users to automatically upload their media from various devices to a centralized server. It provides a user-friendly web interface for managing and organizing the uploaded content.

Pros

  • Automatic Backup: Immich automatically uploads photos and videos from connected devices, ensuring your media is securely backed up.
  • Cross-Platform Compatibility: Immich supports a wide range of devices, including smartphones, tablets, and computers, making it easy to use across different platforms.
  • User-Friendly Interface: The web-based interface is intuitive and easy to navigate, allowing users to manage their media effectively.
  • Self-Hosted Solution: Immich is a self-hosted application, giving users full control over their data and privacy.

Cons

  • Setup Complexity: Setting up Immich may require some technical expertise, as it involves deploying a Docker-based application stack.
  • Limited Mobile App: While Immich provides a web interface, the mobile app experience is currently limited, which may be a drawback for some users.
  • Ongoing Maintenance: As a self-hosted solution, users are responsible for maintaining and updating the Immich server, which can require some technical knowledge.
  • Limited Sharing Options: The current version of Immich has limited sharing capabilities, which may be a limitation for users who need to share their media with others.

Getting Started

To get started with Immich, follow these steps:

  1. Install Docker and Docker Compose on your server or local machine.
  2. Clone the Immich repository from GitHub:
    git clone https://github.com/immich-app/immich.git
    
  3. Navigate to the project directory and start the Immich stack using Docker Compose:
    cd immich
    docker-compose up -d
    
  4. Access the Immich web interface by opening your web browser and navigating to http://localhost:3000.
  5. Follow the on-screen instructions to complete the initial setup and create your Immich account.
  6. Configure your devices to automatically upload media to the Immich server.

Competitor Comparisons

AI-Powered Photos App for the Decentralized Web 🌈💎✨

Pros of PhotoPrism

  • More mature project with a larger community and longer development history
  • Offers advanced features like facial recognition and geo-tagging out of the box
  • Supports a wider range of file formats, including RAW images

Cons of PhotoPrism

  • Heavier resource usage, especially for larger photo libraries
  • Less focus on mobile-first experience compared to Immich
  • More complex setup process, particularly for non-technical users

Code Comparison

PhotoPrism (Go):

func (m *Search) Photos(f form.SearchPhotos) (results PhotoResults, err error) {
    s := UnscopedDb().Table("photos").Select("photos.*").
        Where("photos.deleted_at IS NULL").
        Where("photos.photo_quality >= 3")
    // ... (additional query logic)
}

Immich (TypeScript):

async searchAssets(dto: SearchAssetDto, userId: string): Promise<AssetResponseDto[]> {
  const { q, query, withArchived } = dto;
  const queryBuilder = this.assetRepository
    .createQueryBuilder('asset')
    .where('asset.ownerId = :userId', { userId });
  // ... (additional query logic)
}

Both projects use different languages and database query approaches, but aim to provide efficient photo search functionality.

3,459

A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.

Pros of Lychee

  • Lightweight and easy to set up
  • Supports multiple users and sharing options
  • Offers a clean, minimalist interface

Cons of Lychee

  • Limited features compared to Immich
  • Less active development and community support
  • Lacks advanced AI-powered features

Code Comparison

Lychee (PHP):

public function upload(Request $request)
{
    $request->validate(['photo' => 'required|image']);
    $photo = $request->file('photo');
    $filename = time() . '.' . $photo->getClientOriginalExtension();
    $photo->move(public_path('uploads'), $filename);
}

Immich (TypeScript):

async uploadAsset(file: Express.Multer.File, userId: string): Promise<Asset> {
  const asset = new Asset();
  asset.originalPath = file.path;
  asset.deviceAssetId = file.filename;
  asset.ownerId = userId;
  return this.assetRepository.save(asset);
}

Both projects handle file uploads, but Immich's implementation is more structured and typed, reflecting its more modern architecture. Lychee's code is simpler but less robust. Immich offers more advanced features and better scalability, while Lychee provides a straightforward solution for basic photo management needs.

A self-hosted open source photo management service. This is the repository of the backend.

Pros of LibrePhotos

  • More mature project with a longer development history
  • Supports face recognition and object detection out of the box
  • Offers a web-based interface for easy access from any device

Cons of LibrePhotos

  • Less active development compared to Immich
  • More complex setup process
  • Heavier resource requirements due to additional features

Code Comparison

LibrePhotos (Python):

@api_view(['POST'])
@permission_classes((IsAuthenticated,))
def upload_photo(request):
    image_file = request.FILES['file']
    md5 = compute_md5(image_file)
    # ... (additional processing)

Immich (TypeScript):

@Post('upload')
@UseInterceptors(FileInterceptor('file'))
async uploadImage(
  @UploadedFile() file: Express.Multer.File,
  @User() user: UserEntity,
) {
  return this.assetService.uploadImage(file, user);
}

Both projects use different languages and frameworks, but they share similar concepts for handling file uploads. LibrePhotos uses Django's function-based views, while Immich employs NestJS decorators for routing and file handling. Immich's code appears more modular and follows TypeScript's strong typing, potentially leading to better maintainability.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README


License: AGPLv3 Discord

High performance self-hosted photo and video management solution



Català Español Français Italiano 日本語 한국어 Deutsch Nederlands Türkçe 中文 Русский Português Brasileiro Svenska العربية Tiếng Việt ภาษาไทย

Disclaimer

  • ⚠️ The project is under very active development.
  • ⚠️ Expect bugs and breaking changes.
  • ⚠️ Do not use the app as the only way to store your photos and videos.
  • ⚠️ Always follow 3-2-1 backup plan for your precious photos and videos!

[!NOTE] You can find the main documentation, including installation guides, at https://immich.app/.

Links

Demo

Access the demo here. The demo is running on a Free-tier Oracle VM in Amsterdam with a 2.4Ghz quad-core ARM64 CPU and 24GB RAM.

For the mobile app, you can use https://demo.immich.app/api for the Server Endpoint URL

Login credentials

EmailPassword
demo@immich.appdemo

Features

FeaturesMobileWeb
Upload and view videos and photosYesYes
Auto backup when the app is openedYesN/A
Prevent duplication of assetsYesYes
Selective album(s) for backupYesN/A
Download photos and videos to local deviceYesYes
Multi-user supportYesYes
Album and Shared albumsYesYes
Scrubbable/draggable scrollbarYesYes
Support raw formatsYesYes
Metadata view (EXIF, map)YesYes
Search by metadata, objects, faces, and CLIPYesYes
Administrative functions (user management)NoYes
Background backupYesN/A
Virtual scrollYesYes
OAuth supportYesYes
API KeysN/AYes
LivePhoto/MotionPhoto backup and playbackYesYes
Support 360 degree image displayNoYes
User-defined storage structureYesYes
Public SharingYesYes
Archive and FavoritesYesYes
Global MapYesYes
Partner SharingYesYes
Facial recognition and clusteringYesYes
Memories (x years ago)YesYes
Offline supportYesNo
Read-only galleryYesYes
Stacked PhotosYesYes
TagsNoYes
Folder ViewNoYes

Translations

Read more about translations here.

Translation status

Repository activity

Activities

Star history

Star History Chart

Contributors