Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

136 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Comps

Build Status Docker Image Version License: GPL v3 Security Status

Comps is a open source self hostable version of Slowpoke Pics. A web-based tool for comparing multiple images side by side.

Tots not vibe coded because lazy

Features

  • Upload multiple images for side-by-side comparison
  • Navigate between images using keyboard shortcuts or UI controls
  • Add metadata like comparison name, show name, and tags
  • Fit-to-screen and original size viewing modes
  • Border toggle for better image separation
  • Responsive design for different screen sizes
  • Docker support for easy deployment

Installation

Using Docker (Recommended)

  1. Clone the repository:

API Documentation

Comps provides a RESTful API for programmatic access:

For more details, see the API Documentation.

Database backends

Comps supports both SQLite (default) and PostgreSQL.

  • SQLite (default): set DB_PATH to the SQLite file path (default: comparisons.db)
  • PostgreSQL: set DB_BACKEND=postgres and provide DATABASE_URL (or DB_URL) like:
    • postgresql://user:pass@host:5432/dbname

Migrations run automatically at startup for the selected backend.

Storage backends

Comps supports local filesystem storage (default) and S3-compatible object storage.

  • Local (default): STORAGE_BACKEND=local and UPLOADS_PATH (default: uploads)
  • S3: set STORAGE_BACKEND=s3 and:
    • S3_BUCKET_NAME=<bucket>
    • S3_REGION=<region> (optional, but recommended)
    • S3_ENDPOINT_URL=<endpoint> (optional, for S3-compatible providers like MinIO)
    • S3_KEY_PREFIX=<prefix> (optional)
    • S3_PRESIGNED_URL_TTL_SECONDS=<seconds> (optional, default: 3600)

When S3 is enabled, /uploads/<comparison_id>/<filename> redirects to a short-lived pre-signed S3 URL.

Migrating existing local uploads to S3

If you are switching an existing installation from local storage to S3, run:

python scripts/migrate_local_uploads_to_s3.py --skip-existing

This script uploads files from UPLOADS_PATH to your configured S3 bucket/key prefix and updates image_metadata.image_size (inserting metadata rows when missing). For AWS S3 you can optionally add --expected-bucket-owner <account-id> for ownership verification.

Docker Compose example (PostgreSQL)

Use the provided docker-compose.postgres.yml:

docker compose -f docker-compose.postgres.yml up -d --build

This spins up Postgres and the app with DB_BACKEND=postgres and DATABASE_URL set, waits for Postgres to be healthy, then starts the app. The app’s entrypoint blocks until migrations initialize.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Third-Party Code

This project includes code from EasyCompare (Copyright (C) 2020 N3xusHD, Sec-ant) licensed under GPL-3.0.

About

Comps is a open source self hostable version of Slowpoke Pics. A web-based tool for comparing multiple images side by side.

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages