{"id":13482034,"url":"https://github.com/photonixapp/photonix","last_synced_at":"2025-05-15T16:02:19.678Z","repository":{"id":37608108,"uuid":"84252717","full_name":"photonixapp/photonix","owner":"photonixapp","description":"A modern, web-based photo management server. Run it on your home server and it will let you find the right photo from your collection on any device. Smart filtering is made possible by object recognition, face recognition, location awareness, color analysis and other ML algorithms.","archived":false,"fork":false,"pushed_at":"2023-03-04T03:34:01.000Z","size":4893,"stargazers_count":1849,"open_issues_count":148,"forks_count":125,"subscribers_count":34,"default_branch":"master","last_synced_at":"2024-10-29T17:23:46.549Z","etag":null,"topics":["ai","django","docker","docker-image","face-recognition","gallery","google-photos","image-recognition","javascript","management","ml","object-detection","photo","photo-manager","photography","python","react","storage","tensorflow","web"],"latest_commit_sha":null,"homepage":"https://photonix.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/photonixapp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"github":["photonixapp"]}},"created_at":"2017-03-07T22:30:32.000Z","updated_at":"2024-10-28T21:41:31.000Z","dependencies_parsed_at":"2023-01-29T01:45:54.023Z","dependency_job_id":"1e407297-4314-4de3-99a3-8539acbee9f4","html_url":"https://github.com/photonixapp/photonix","commit_stats":null,"previous_names":["damianmoore/photonix"],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/photonixapp%2Fphotonix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/photonixapp%2Fphotonix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/photonixapp%2Fphotonix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/photonixapp%2Fphotonix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/photonixapp","download_url":"https://codeload.github.com/photonixapp/photonix/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247730068,"owners_count":20986404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","django","docker","docker-image","face-recognition","gallery","google-photos","image-recognition","javascript","management","ml","object-detection","photo","photo-manager","photography","python","react","storage","tensorflow","web"],"created_at":"2024-07-31T17:00:58.398Z","updated_at":"2025-04-07T21:11:30.537Z","avatar_url":"https://github.com/photonixapp.png","language":"Python","readme":"# Photonix Photo Manager\n\n![GitHub](https://img.shields.io/github/license/photonixapp/photonix) [![Docker Image Version (latest semver)](https://img.shields.io/docker/v/photonixapp/photonix)](https://hub.docker.com/r/photonixapp/photonix/) [![GitHub Sponsors](https://img.shields.io/github/sponsors/photonixapp)](https://github.com/sponsors/photonixapp) [![Docker Pulls](https://img.shields.io/docker/pulls/photonixapp/photonix)](https://hub.docker.com/r/photonixapp/photonix/) [![](https://img.shields.io/travis/damianmoore/photonix/master.svg)](https://travis-ci.org/damianmoore/photonix/branches) [![](https://img.shields.io/codecov/c/github/damianmoore/photonix.svg)](https://codecov.io/gh/damianmoore/photonix) [![](https://img.shields.io/uptimerobot/status/m781745452-4f90c0e2a56b2086dd0c5092.svg?label=demo%20site)](https://demo.photonix.org/) [![](https://img.shields.io/uptimerobot/ratio/m781745452-4f90c0e2a56b2086dd0c5092.svg)](https://demo.photonix.org/)\n\nThis is a photo management application based on web technologies. Run it on your home server and it will let you find what you want from your photo collection using any device. Smart filtering is made possible automatically by object recognition, location awareness, color analysis and other algorithms.\n\n![Screenshot of photo list view](https://epixstudios.co.uk/uploads/filer_public/52/dc/52dcdff4-d96d-4dfd-b158-b57b0696154e/photo_list.jpg)\n\nThis project is currently in development and not feature complete for a version 1.0 yet. If you don't mind putting up with broken parts or want to help out, run the Docker image and give it a go. I'd love for other contributors to get involved.\n\n## Community and Social\n\nPlease join in the discussion and help us gain visibility by following us on social media. Much appreciated :)\n\n- [Gitter live chat](https://gitter.im/photonixapp/community)\n- [Docker Hub](https://hub.docker.com/r/photonixapp/photonix/)\n- [Twitter](https://twitter.com/photonixapp)\n- [Instagram](https://www.instagram.com/photonixapp/)\n- [LinkedIn](https://www.linkedin.com/company/photonixapp/)\n- [Indie Hackers](https://www.indiehackers.com/product/photonix-photo-organizer-app)\n\n## Sponsorship\n\nIf you get value from Photonix or like where we're heading then we'd really appreciate it if you considered sponsoring us on a monthly basis.\n\n- [GitHub Sponsors](https://github.com/sponsors/photonixapp)\n- [Patreon](https://www.patreon.com/photonixapp)\n\n## Installing \u0026 Running\n\nThe easiest way to run it is with [Docker Compose](https://docs.docker.com/compose/install/#install-compose) using the pre-built image following these steps.\n\nCreate a new directory to run inside and download the example Docker Compose file.\n\n    mkdir photonix\n    cd photonix\n    curl https://raw.githubusercontent.com/photonixapp/photonix/master/docker/docker-compose.example.yml \u003e docker-compose.yml\n\nMake volume directories for data stored outside the container.\n\n    mkdir -p  data/photos\n\nBring up Docker Compose which will pull and run the required Docker images.\n\n    docker-compose up\n\nA few seconds after starting you should be able to go to [http://localhost:8888/](http://localhost:8888/) in your browser.\n\nYou'll need to create a username, password and library. Right now this needs to be done on the command-line so run this in a new terminal window. Replace `USERNAME` with your own username.\n\n    docker-compose run photonix python photonix/manage.py createsuperuser --username USERNAME --email example@example.com\n    docker-compose run photonix python photonix/manage.py create_library USERNAME \"My Library\"\n\nYou can move some photos into the folder `data/photos` and they should get detected and imported immediately. Once you have finished trying out the system you can edit the volume in the `docker-compose.yml` file where it says `./data/photos` to mount wherever you usually keep photos. System database, thumbnails and other cache data is stored separately from the photos so shouldn't pollute the area. You are responsible for keeping your own backups in case of error.\n\n## Upgrading\n\nIf you are using the pre-built Docker image you can use kill, pull and bring back up using the following:\n\n    # Ctrl-C to kill\n    docker-compose pull\n    docker-compose up\n\n## Developing\n\nThere is a [`Makefile`](./Makefile) and separate Docker Compose file `docker-compose.dev.yml` that you should use if you want to work on the project. Check out the repo and this setup will build the image, mount the code as volumes, hot-reload JS changes to the browser and reload the Python server for most changes.\n\n    git clone git@github.com:damianmoore/photonix.git\n    cd photonix\n    mkdir -p  data/photos\n    make build\n    make start\n\nIf you get errors such as `Error starting userland proxy: listen tcp 0.0.0.0:5432: bind: address alerady in use` then you probably have an existing server such as Postgres listening on the standard port. You can change Photonix's services to use alternative port numbers by editing `docker/docker-compose.dev.yml` and setting `'5432:5432'` to be `'5433:5432'` for example. This is for Postgres but is it a similar solution for Redis or the webserver ports.\n\nIf you want to access the Bash or Python shells for development, you can use the following command.\n\n    make shell\n\n## Testing\n\nPyTest is used as a test runner and for creating fixtures. The easiest way to run the tests is within the Docker container like this:\n\n    make test\n","funding_links":["https://github.com/sponsors/photonixapp","https://www.patreon.com/photonixapp"],"categories":["\u003ca id=\"tag-graphics\" href=\"#tag-graphics\"\u003eGraphics\u003c/a\u003e","Python","Apps","置顶","docker"],"sub_categories":["PhotoManagement","04、多媒体处理中心"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphotonixapp%2Fphotonix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphotonixapp%2Fphotonix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphotonixapp%2Fphotonix/lists"}