Lychee
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.
Top Related Projects
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.
AI-Powered Photos App for the Decentralized Web 🌈💎✨
A self-hosted open source photo management service. This is the repository of the backend.
Quick Overview
Lychee is an open-source photo management system designed for self-hosting. It allows users to upload, organize, and share their photo collections through a sleek, modern web interface. Lychee focuses on providing a user-friendly experience while offering powerful features for managing large photo libraries.
Pros
- Easy to install and set up, with support for various hosting environments
- Clean and intuitive user interface for effortless photo management
- Supports a wide range of image formats and offers advanced sorting and filtering options
- Provides secure sharing features with password protection and expiration dates for shared albums
Cons
- Requires self-hosting, which may be challenging for non-technical users
- Limited built-in editing capabilities compared to some commercial photo management solutions
- Potential performance issues with very large photo libraries (100,000+ images)
- Lacks some advanced features found in paid alternatives, such as facial recognition or AI-powered tagging
Getting Started
To get started with Lychee, follow these steps:
- Ensure your server meets the requirements (PHP 7.4+, MySQL/MariaDB)
- Download the latest Lychee release from GitHub
- Upload the files to your web server
- Navigate to the Lychee directory in your browser
- Follow the installation wizard to set up your database and admin account
# Clone the repository
git clone https://github.com/LycheeOrg/Lychee.git
# Navigate to the Lychee directory
cd Lychee
# Install dependencies
composer install --no-dev
# Set up environment file
cp .env.example .env
# Generate application key
php artisan key:generate
# Run database migrations
php artisan migrate
# Set proper permissions
chown -R www-data:www-data .
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
After completing these steps, you can access Lychee through your web browser and start uploading and organizing your photos.
Competitor Comparisons
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.
Pros of Lychee (electerious)
- Simpler setup and installation process
- Lighter weight and potentially faster performance
- More straightforward user interface for basic photo management
Cons of Lychee (electerious)
- Less actively maintained and updated
- Fewer advanced features and customization options
- Limited support for larger photo collections
Code Comparison
Lychee (electerious):
public function photos($albumID) {
if ($albumID == '0') {
$photos = Photo::where('album', '=', '0')
->orderBy('takestamp', 'DESC')
->get();
} else {
$photos = Photo::where('album', '=', $albumID)
->orderBy('takestamp', 'ASC')
->get();
}
return $photos;
}
Lychee (LycheeOrg):
public function photos(string $albumID): Collection
{
$photos = Photo::with('album:id,title')
->where('album_id', '=', $albumID)
->orderBy($this->configFunctions->get_value('sorting_Photos', 'takestamp'), 'ASC')
->get();
return PhotoCast::wrapCollection($photos);
}
The LycheeOrg version shows more advanced features like eager loading, configurable sorting, and custom collection wrapping, reflecting its more feature-rich nature.
AI-Powered Photos App for the Decentralized Web 🌈💎✨
Pros of PhotoPrism
- More advanced AI-powered features, including facial recognition and object detection
- Supports a wider range of file formats, including RAW images and videos
- Offers a more comprehensive search functionality with metadata indexing
Cons of PhotoPrism
- Higher system requirements and more complex setup process
- Steeper learning curve due to more advanced features
- Larger codebase, which may lead to slower development and updates
Code Comparison
PhotoPrism (Go):
func (m *Search) Photos(ctx context.Context, f form.SearchPhotos) (results PhotoResults, err error) {
if err := f.ParseQueryString(); err != nil {
return results, err
}
s := UnscopedDb().Table("photos").Select("photos.*").
Where("photos.deleted_at IS NULL").
Where("photos.photo_quality >= 3")
Lychee (PHP):
public function recent(int $albumID = null): Collection
{
$query = $this->photos;
if ($albumID !== null) {
$query = $query->where('album_id', '=', $albumID);
}
return $query->orderBy('created_at', 'DESC')->limit(5)->get();
}
The code snippets show different approaches to querying photos, with PhotoPrism using Go and Lychee using PHP. PhotoPrism's code appears more complex, reflecting its advanced features.
A self-hosted open source photo management service. This is the repository of the backend.
Pros of LibrePhotos
- Advanced AI-powered features like face recognition and object detection
- More comprehensive metadata handling and search capabilities
- Supports video files in addition to images
Cons of LibrePhotos
- More complex setup and higher system requirements
- Steeper learning curve for users
- Less frequent updates and potentially less stable
Code Comparison
LibrePhotos (Python):
from django.db import models
from django.contrib.auth.models import User
class Photo(models.Model):
image = models.ImageField(upload_to='photos')
owner = models.ForeignKey(User, on_delete=models.CASCADE)
Lychee (PHP):
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Photo extends Model
{
protected $fillable = ['title', 'url', 'description'];
}
LibrePhotos uses Django's ORM with a more complex model structure, while Lychee employs Laravel's Eloquent ORM with a simpler model definition. This reflects the overall complexity difference between the two projects, with LibrePhotos offering more advanced features at the cost of increased complexity.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
A great looking and easy-to-use photo-management-system.
Lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely. Read more on our website.
Notice: master
& alpha
branches
As LycheeOrg is a very small team, we do not have many maintainers. Most of us have an active work/family life, and as a result, it is no longer possible for us to apply proper 4-eyes principle in the coding reviews.
In order to keep our high code quality, the following changes have been applied.
master
stays as a stable branch and contains 4-eyes peer-reviewed pull-requests.alpha
contains the latest changes (i.e. the above mentionned PR) merged with minimal review.
With this change, we hope to strike a balance between decently paced development (on alpha
) and maintaining a robust core (on master
).
On Docker, nightly
/dev
continues to refer to the latest master
commit.
The alpha
tag is updated daily with the content of the associated branch.
That being said, if you like the gallery and would like to contribute, do not hesitate to open pull request. If you would like to see more functionalities added and help us push Lychee, Join the team!
Support the Team
We aim to maintain a free open-source photography library with high quality of code.
Being in control of our own data, our own pictures is something that we value above all.
Through contributions, donations, and sponsorship, you allow Lychee to thrive. Your donations directly support demo server costs, continuous enhancements, and most importantly bug fixes!
Installation
To run Lychee, everything you need is a web-server with PHP 8.2 or later and a database (MySQL/MariaDB, PostgreSQL or SQLite). Follow the instructions to install Lychee on your server. This version of Lychee is built on the Laravel framework. To install:
- Clone this repo to your server and set the web root to
lychee/public
- Run
composer install --no-dev
to install dependencies - Run
npm install
to install node dependencies - Run
npm run build
to build the front-end - Copy
.env.example
as.env
and edit it to match your parameters - Generate your secret key with
php artisan key:generate
- Migrate your database with
php artisan migrate
to create a new database or migrate an existing Lychee installation to the latest framework.
See detailed instructions on the Installation page of our documentation.
Docker
Alternatively, an official Docker image can be found at LycheeOrg/Lychee-Docker or on Docker Hub as lycheeorg/lychee.
Update
Updating is as easy as it should be. Update »
Settings
Sign in and click the gear in the top left corner to change your settings. Settings »
Build
Lychee is ready to use, right out of the box. If you want to contribute and edit CSS or JS files, you need to rebuild Lychee-front. Build »
Advanced Features
Lychee is ready to use straight after installation, but some features require a little more configuration.
Keyboard Shortcuts
These shortcuts will help you to use Lychee even faster. Keyboard Shortcuts »
Dropbox import
In order to use the Dropbox import from your server, you need a valid drop-ins app key from their website. Lychee will ask you for this key, the first time you try to use the import. Want to change your code? Take a look at the settings of Lychee.
Twitter Cards
Lychee supports Twitter Cards and Open Graph for shared images (not albums). In order to use Twitter Cards you need to request an approval for your domain. Simply share an image with Lychee, copy its link and paste it in Twitter's Card Validator.
ImageMagick
Lychee uses ImageMagick when installed on your server. In this case you will benefit from a faster processing of your uploads, better looking thumbnails and intermediate sized images for small screen devices. You can disable the usage of ImageMagick in the settings.
New Photos Email Notification
In order to use the new photos email notification you will need to have configured the MAIL_ variables in your .env to your mail provider & setup cron. Once that is complete you then toggle Send new photos notification emails in the settings. Your users will be able to opt-in to the email notifications by entering their email address in the Notifications setting in the sidebar. Photo notifications will be grouped and sent out once a week to the site admin, album owner & anyone who the album is shared with, if their email has been added. The admin or user who added the photo to an album, will not receive a email notification for the photos they added.
Customizing
You can customize lychee with your own css code. Here you can find a list of available themes.
Troubleshooting
Take a look at the Documentation, particularly the FAQ if you have problems. Discovered a bug? Please create an issue here on GitHub! You can also contact us directly on gitter (login with your github account) or on discord ».
Open Source Community Support
We would like to thank Jetbrains for supporting us with their Open Source Development - Community Support program.
Top Related Projects
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.
AI-Powered Photos App for the Decentralized Web 🌈💎✨
A self-hosted open source photo management service. This is the repository of the backend.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot