An open API service indexing awesome lists of open source software.

https://github.com/jackra1n/czkawka-web

A lightning-fast, minimalist web frontend for the czkawka duplicate file finder
https://github.com/jackra1n/czkawka-web

cleaner duplicates multiplatform rust similar-images similar-music similar-videos svelte sveltekit

Last synced: 23 days ago
JSON representation

A lightning-fast, minimalist web frontend for the czkawka duplicate file finder

Awesome Lists containing this project

README

          

# czkawka-web

[![CI](https://github.com/jackra1n/czkawka-web/actions/workflows/ci.yml/badge.svg)](https://github.com/jackra1n/czkawka-web/actions/workflows/ci.yml)
[![GitHub release](https://img.shields.io/github/v/release/jackra1n/czkawka-web)](https://github.com/jackra1n/czkawka-web/releases)
[![License](https://img.shields.io/github/license/jackra1n/czkawka-web)](LICENSE)

A lightning-fast, minimalist web frontend for the [Czkawka](https://github.com/qarmin/czkawka) duplicate file finder.

I built this because I wanted to run Czkawka on my server, but I needed a good UI and easy Docker deployment for it.

![Czkawka Web Preview](docs/images/czkawka-web_preview.webp)

Image swipe comparison mode:
![Czkawka Web Image Swipe Preview](docs/images/czkawka-web_swipe-image-compare.webp)

## Features

- **All Czkawka scans:** Supports every scan type that Czkawka offers.
- **Image comparisons:** Side-by-side, swipe, and onion skin comparison modes.
- **Fullscreen preview:** View images and videos in fullscreen mode.
- **Keyboard navigation:** Navigate through files using arrow keys and mark duplicates with space.
- **Docker deployment:** Easy deployment on headless servers via Docker.

## Docker

Pull the pre-built image from GitHub Container Registry:

```bash
docker pull ghcr.io/jackra1n/czkawka-web
```

### Run

```bash
docker run -d \
--name czkawka-web \
-p 6198:6198 \
-v czkawka-web-data:/data \
-v /path/to/your/files:/mnt/files \
ghcr.io/jackra1n/czkawka-web
```

### Docker Compose

```yaml
services:
czkawka-web:
image: ghcr.io/jackra1n/czkawka-web
container_name: czkawka-web
ports:
- "6198:6198"
volumes:
- ./data:/data
# Mount directories you want to scan:
# - /path/on/host/to/files:/mnt/files
restart: unless-stopped
```

Then start it:

```bash
docker compose up -d
```

## Tech Stack

This project is built with an emphasis on zero bloat and high performance.

- **Backend:** [Rust](https://www.rust-lang.org/) + [Axum](https://github.com/tokio-rs/axum)
- **Frontend:** [SvelteKit](https://kit.svelte.dev/)
- [Bun](https://bun.sh/)
- [Mise](https://mise.jdx.dev/)

## Development / Local Build

If you want to build the image locally from source instead of using the pre-built one, use the development compose file:

```bash
cp .env.example .env
# Edit .env and set SCAN_PATH to the directory you want to scan
mkdir -p data
docker compose -f compose.dev.yaml up
```

If you use [Mise](https://mise.jdx.dev/), you can also run:

```bash
mise run docker
```

## Acknowledgments

A huge thanks to [qarmin](https://github.com/qarmin) for creating and maintaining [czkawka](https://github.com/qarmin/czkawka). This project wouldn't be possible without the incredible work put into that amazing project.