<p align="center"><a href="https://lycheeorg.github.io"><img src="https://raw.githubusercontent.com/LycheeOrg/Lychee/master/Banner.png" width="400px" alt="@LycheeOrg"></a></p>

[![GitHub Release][release-shield]](https://github.com/LycheeOrg/Lychee/releases)
[![PHP 8.2 & 8.3][php-shield]](https://lycheeorg.github.io/docs/#server-requirements)
[![MIT License][license-shield]](https://github.com/LycheeOrg/Lychee/blob/master/LICENSE)
[![Downloads][download-shield]](https://github.com/LycheeOrg/Lychee/releases)
<br>
[![Build Status][build-status-shield]](https://github.com/LycheeOrg/Lychee/actions)
[![Code Coverage][codecov-shield]](https://codecov.io/gh/LycheeOrg/Lychee)
[![CII Best Practices Summary][cii-shield]](https://bestpractices.coreinfrastructure.org/projects/2855)
[![OpenSSF Scorecard][ossf-shield]](https://securityscorecards.dev/viewer/?uri=github.com/LycheeOrg/Lychee)
[![Quality Gate Status][sonar-shield]](https://sonarcloud.io/dashboard?id=LycheeOrg_Lychee-Laravel)
<br>
[![Website][website-shield]](https://lycheeorg.github.io)
[![Documentation][docs-shield]](https://lycheeorg.github.io/docs/)
[![Changelog][changelog-shield]](https://lycheeorg.github.io/docs/releases.html)
[![Front end repository][frontend-shield]](https://github.com/LycheeOrg/Lychee-front)
[![Docker repository][docker-shield]](https://github.com/LycheeOrg/Lychee-Docker)
[![Gitter][gitter-shield]](https://gitter.im/LycheeOrg/Lobby)
[![Discord][discord-shield]][discord]


#### 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](https://LycheeOrg.github.io).

## 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!](https://lycheeorg.github.io/docs/contributions.html#joining-the-team)

### Support the Team

We aim to maintain a free open-source photography library with high quality of code.<br>
Being in control of our own data, our own pictures is something that we value above all.

Through [contributions, donations, and sponsorship](https://github.com/sponsors/LycheeOrg), 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:

1. Clone this repo to your server and set the web root to `lychee/public`
2. Run `composer install --no-dev` to install dependencies
3. Run `npm install` to install node dependencies
4. Run `npm run build` to build the front-end
5. Copy `.env.example` as `.env` and edit it to match your parameters
6. Generate your secret key with `php artisan key:generate`
7. 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](https://lycheeorg.github.io/docs/installation.html) page of our documentation.

### Docker

Alternatively, an official Docker image can be found at [LycheeOrg/Lychee-Docker](https://github.com/LycheeOrg/Lychee-Docker) or on Docker Hub as [lycheeorg/lychee](https://hub.docker.com/r/lycheeorg/lychee).

### Update

Updating is as easy as it should be.  [Update &#187;](https://lycheeorg.github.io/docs/update.html)

### Settings

Sign in and click the gear in the top left corner to change your settings. [Settings &#187;][1]

### 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](https://github.com/LycheeOrg/Lychee-front). [Build &#187;](https://lycheeorg.github.io/docs/frontend.html)

## 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 &#187;](https://lycheeorg.github.io/docs/keyboard.html)

### Dropbox import

In order to use the Dropbox import from your server, you need a valid drop-ins app key from [their website](https://www.dropbox.com/developers/saver). 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][1] of Lychee.

### Twitter Cards

Lychee supports [Twitter Cards](https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/abouts-cards) and [Open Graph](http://opengraphprotocol.org) 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](https://cards-dev.twitter.com/validator).

### ImageMagick

Lychee uses [ImageMagick](https://www.imagemagick.org) 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](https://www.imagemagick.org) in the [settings][1].

### 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](https://laravel.com/docs/scheduling#running-the-scheduler). Once that is complete you then toggle **Send new photos notification emails** in the [settings][1]. 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.

- [lychee-flat-white-theme](https://github.com/Renset/lychee-flat-white-theme)

## Troubleshooting

Take a look at the [Documentation](https://lycheeorg.github.io/docs/), particularly the [FAQ](https://lycheeorg.github.io/docs/faq_troubleshooting.html) if you have problems. Discovered a bug? Please create an issue [here](https://github.com/LycheeOrg/Lychee/issues) on GitHub! You can also contact us directly on [gitter (login with your github account)](https://gitter.im/LycheeOrg/Lobby) or on [discord &#187;][discord].

## Open Source Community Support

<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/PhpStorm_icon.png" alt="PhpStorm" width="50"/>

We would like to thank Jetbrains for supporting us with their [Open Source Development - Community Support][jetbrains-opensource] program.

[1]: https://lycheeorg.github.io/docs/settings.html
[build-status-shield]: https://img.shields.io/github/actions/workflow/status/LycheeOrg/Lychee/CICD.yml?branch=master
[codecov-shield]: https://codecov.io/gh/LycheeOrg/Lychee/branch/master/graph/badge.svg
[release-shield]: https://img.shields.io/github/release/LycheeOrg/Lychee.svg
[php-shield]: https://img.shields.io/badge/PHP-8.2%20|%208.3-blue
[license-shield]: https://img.shields.io/github/license/LycheeOrg/Lychee.svg
[cii-shield]: https://img.shields.io/cii/summary/2855.svg
[ossf-shield]: https://api.securityscorecards.dev/projects/github.com/LycheeOrg/Lychee/badge
[sonar-shield]: https://sonarcloud.io/api/project_badges/measure?project=LycheeOrg_Lychee-Laravel&metric=alert_status
[website-shield]: https://img.shields.io/badge/-Website-informational.svg?logo=data:image/png;base64, 
[docs-shield]: https://img.shields.io/badge/-Documentation-informational.svg?logo=data:image/png;base64, 
[changelog-shield]: https://img.shields.io/badge/-Changelog-informational.svg?logo=data:image/png;base64, 
[frontend-shield]: https://img.shields.io/badge/-Lychee--Front-informational.svg?logo=github
[docker-shield]: https://img.shields.io/badge/-Lychee--Docker-informational.svg?logo=github
[gitter-shield]: https://img.shields.io/gitter/room/LycheeOrg/Lobby.svg?logo=gitter
[jetbrains-opensource]: https://www.jetbrains.com/community/opensource/
[download-shield]: https://img.shields.io/github/downloads/LycheeOrg/Lychee/total
[discord]: https://discord.gg/JMPvuRQcTf
[discord-shield]: https://img.shields.io/discord/1046911561366765598?logo=discord
