# Photo Slop — a Dash-first photo editor

> photoslop — a layered, browser-based photo editor built Dash-first: drop many images, stack and blend layers, apply non-destructive effects, keep your work in a per-account catalogue, export to PNG/JPEG/WebP/SVG/TIFF/PDF, a local directory or Cloudflare R2, and drive every operation from Python or an AI agent. By Pip Install Python.

![The Photo Slop editor: three image layers on an artboard, the layer panel on the right, a sepia adjustment on the top layer](/assets/photo_canvas_editor.png)

> **A layered, browser-based photo editor built on Dash, `dash-mantine-components` and Fabric.js — drivable from the mouse, from Python, or from an AI agent, with a catalogue that keeps your work with your account.** By [Pip Install Python](https://2plot.dev).

```bash
git clone https://github.com/pip-install-python/Photo-Slop
```

This host documents no package of its own — it is the template the network's component sites are forked from.

Drop many images onto the canvas, stack them as layers, blend and adjust them non-destructively, then export to a file, a server directory or a Cloudflare R2 bucket — or sign in and keep it all in your [catalogue](/catalog).

[Open the editor](/editor) · [Your catalogue](/catalog)

---

## What it does

- **Layers.** Every dropped image becomes a layer with opacity, 16 blend modes, visibility, lock and stacking order. Text, shapes and brush strokes are layers too.
- **Non-destructive effects.** Brightness, contrast, saturation, vibrance, hue, blur, sharpen, gamma, noise, pixelate and film presets are a stack on each image layer — change the number and the layer re-renders from the original.
- **A catalogue of your own.** Sign in and your uploads, saved images and whole projects are kept under your account, served only to you, and reopen in the editor with one click.
- **Export anywhere.** PNG, JPEG, WebP and SVG render in the browser; TIFF, PDF, AVIF, GIF, BMP and ICO are transcoded on the server. Send the result to a download, a local server directory, Cloudflare R2, or your catalogue.
- **One command surface.** Every action — by mouse, by a Python callback, or by an agent — is the same JSON command, and every command is acknowledged.

## Quick Start

```bash
git clone https://github.com/pip-install-python/Photo-Slop
cd photoslop
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
PHOTO_DEV_USER=me python run.py   # http://127.0.0.1:8559/editor — a stand-in account for local work
```

The compiled canvas component ships in the repo, so Node is only needed when you change the TypeScript in `src/ts/`. Then follow the [Quick Start guide](/guide/quickstart) for a tour of the editor and [Accounts & Catalogue](/guide/catalog) for sign-in and storage.

## Built from

- `DashPhotoCanvas`, a Dash component wrapping **Fabric.js 7** behind an engine-neutral JSON [document model](/guide/document-model).
- `dash-mantine-components` for all editor chrome; `flexlayout-dash` for the dockable workspace.
- `dash-clerk-auth` for accounts — the same Clerk satellite setup as every site on the 2plot network.
- The 2plot documentation boilerplate for the shell, theming, backend switch and `llms.txt` surfaces.

## Learn more

- [Commands](/guide/commands) — the JSON command bus every action goes through.
- [Accounts & Catalogue](/guide/catalog) — what is kept, where, and who can read it.
- [Storage & Export](/guide/storage-export) — memory, disk and Cloudflare R2; formats and destinations.
- [Agent API](/guide/agent-api) — tool schemas for Claude and OpenAI, and the preview loop.

## Powered by

Powered by [dash-improve-my-llms](https://pypi.org/project/dash-improve-my-llms/) **2.10.0** (the version is read from the installed package, never hardcoded) — it serves this site's `llms.txt`, sitemap and crawler documents.

## License

MIT License - see [LICENSE](https://github.com/pip-install-python/Photo-Slop/blob/main/LICENSE) for details.

## Other sizes of this document

- [/llms-small.txt](https://photoslop.2plot.dev/llms-small.txt): compact briefing — start here if context is tight. (4.0 KB, ~1.0k tok)
- [/llms.txt](https://photoslop.2plot.dev/llms.txt): this document — the index you are reading. (12.1 KB, ~3.1k tok)
- [/llms-full.txt](https://photoslop.2plot.dev/llms-full.txt): every page's prose in one document — 11 pages. (65.4 KB, ~16.7k tok)

## Access policy

- Terms: these documents are free to fetch. A free account unlocks any gated document.
- Identity: agents may present a key by appending `?key=<value>` to any document URL. Get one: https://2plot.ai
- Rate: prefer ONE `/llms-full.txt` fetch over N per-page fetches. On 429, honour `Retry-After` and back off exponentially.
- Coordination: start at https://2plot.dev/llms.txt — one index enumerates every site; do not rediscover the network by crawling it.
- Crawler policy (mirrors /robots.txt): allowed: GPTBot, ClaudeBot, CCBot, Google-Extended, FacebookBot, Omgili, ByteSpider, Amazonbot, Applebot-Extended, meta-externalagent, AI2Bot, Diffbot, Timpibot, ImagesiftBot, ChatGPT-User, Claude-User, Claude-SearchBot, PerplexityBot, OAI-SearchBot, Perplexity-User, Googlebot, Bingbot, Slurp, DuckDuckBot, GoogleOther, Google-InspectionTool, Storebot-Google, AdsBot-Google.
- Accounting: every document read is logged with the requesting vendor (verified against published IP ranges where the operator publishes them). See https://2plot.dev/llms.txt

## Pages

Every page in this application. Each has a Markdown version at the `llms.txt` URL beside it.

- [Photo Slop — a Dash-first photo editor](https://photoslop.2plot.dev/): photoslop — a layered, browser-based photo editor built Dash-first: drop many images, stack and blend layers, apply non-destructive effects, keep your work in a per-account catalogue, export to PNG/JPEG/WebP/SVG/TIFF/PDF, a local directory or Cloudflare R2, and drive every operation from Python or an AI agent. By Pip Install Python.
  - Machine-readable: https://photoslop.2plot.dev/llms.txt (12.1 KB, ~3.1k tok)
- [Catalogue](https://photoslop.2plot.dev/catalog): Your images and compositions, kept with your account. Open any of them in the editor.
  - Machine-readable: https://photoslop.2plot.dev/catalog/llms.txt (3.7 KB, ~949 tok)
- [Editor](https://photoslop.2plot.dev/editor): Layered photo editor with a JSON command surface for agents.
  - Machine-readable: https://photoslop.2plot.dev/editor/llms.txt (3.1 KB, ~799 tok)
- [Agent API](https://photoslop.2plot.dev/guide/agent-api): Drive the Photo Slop editor from an AI agent — tool schemas for Claude and OpenAI, plus a look-at-the-result preview loop.
  - Machine-readable: https://photoslop.2plot.dev/guide/agent-api/llms.txt (11.7 KB, ~3.0k tok)
- [Accounts & Catalogue](https://photoslop.2plot.dev/guide/catalog): Sign in with Clerk and Photo Slop keeps your uploads, saved images and projects in a catalogue only you can read.
  - Machine-readable: https://photoslop.2plot.dev/guide/catalog/llms.txt (8.0 KB, ~2.0k tok)
- [Commands](https://photoslop.2plot.dev/guide/commands): Every operation in Photo Slop is a JSON command — the same bus drives the UI, Python callbacks and AI agents.
  - Machine-readable: https://photoslop.2plot.dev/guide/commands/llms.txt (12.2 KB, ~3.1k tok)
- [Storage & Export](https://photoslop.2plot.dev/guide/storage-export): Where uploads and exports go — memory, a local directory or Cloudflare R2 — and the formats you can export to.
  - Machine-readable: https://photoslop.2plot.dev/guide/storage-export/llms.txt (8.9 KB, ~2.3k tok)
- [Usage, limits & costs](https://photoslop.2plot.dev/guide/usage): The guard rails on an open Photo Slop — a $10 token cap per account, owner-only Opus, 30/90-day catalogue lifespans — and the two dashboards that show who spent and kept what.
  - Machine-readable: https://photoslop.2plot.dev/guide/usage/llms.txt (7.3 KB, ~1.9k tok)
- [Privacy](https://photoslop.2plot.dev/privacy): What Photo Slop stores about a visit, what it does not store, and where the numbers go — described from the code that does it.
  - Machine-readable: https://photoslop.2plot.dev/privacy/llms.txt (3.7 KB, ~945 tok)
- [Terms of Use](https://photoslop.2plot.dev/terms): Terms of use for Photo Slop: what this site is, what it is not, and the terms the documentation and its code examples are offered under.
  - Machine-readable: https://photoslop.2plot.dev/terms/llms.txt (2.4 KB, ~617 tok)
- [Usage & limits](https://photoslop.2plot.dev/usage): What your account has spent on the agent, against its cap, and what your catalogue takes up.
  - Machine-readable: https://photoslop.2plot.dev/usage/llms.txt (2.5 KB, ~637 tok)

## About The 2plot network

Open-source Dash component libraries by Pip Install Python. Each component has its own documentation site and its own llms.txt; 2plot.dev indexes all of them, and 2plot.ai is the hub.

Network index: [https://2plot.dev](https://2plot.dev/llms.txt)

## Network

Other applications in this network. Same operator; each one serves its own `/llms.txt` in this format.

- [2plot.ai](https://2plot.ai): Network hub and account origin.
  - Machine-readable: https://2plot.ai/llms.txt
- [2plot.dev](https://2plot.dev): Package index for every open-source component in the network.
  - Machine-readable: https://2plot.dev/llms.txt
- [Documentation boilerplate](https://boilerplate.2plot.dev): The markdown-driven documentation template every satellite site is built from.
  - Machine-readable: https://boilerplate.2plot.dev/llms.txt
- [dash-leaflet2](https://leaflet.2plot.dev): Leaflet 2 maps as Dash components.
  - Machine-readable: https://leaflet.2plot.dev/llms.txt
- [dash-mui-scheduler](https://muischeduler.2plot.dev): MUI X Scheduler — calendars and event scheduling for Dash.
  - Machine-readable: https://muischeduler.2plot.dev/llms.txt
- [dash-mui-charts](https://muicharts.2plot.dev): MUI X charts, tree views and time pickers for Dash.
  - Machine-readable: https://muicharts.2plot.dev/llms.txt
- [flexlayout-dash](https://flexlayout.2plot.dev): IDE-style dockable, resizable and floatable window panels.
  - Machine-readable: https://flexlayout.2plot.dev/llms.txt
- [dash-improve-my-llms](https://llms.2plot.dev): The AI/LLM and SEO package every site in this network is built on.
  - Machine-readable: https://llms.2plot.dev/llms.txt
- [dash-flows](https://flows.2plot.dev): Node-graph editors built on React Flow.
  - Machine-readable: https://flows.2plot.dev/llms.txt
- [dash-pannellum](https://pannellum.2plot.dev): 360° panorama and virtual-tour viewer.
  - Machine-readable: https://pannellum.2plot.dev/llms.txt
- [dash-emoji-mart](https://emojimart.2plot.dev): Emoji picker component.
  - Machine-readable: https://emojimart.2plot.dev/llms.txt
- [dash-email](https://email.2plot.dev): Email composition and delivery components.
  - Machine-readable: https://email.2plot.dev/llms.txt
- [dash-model-viewer](https://modelviewer.2plot.dev): 3D model viewer with AR support, built on Google's model-viewer.
  - Machine-readable: https://modelviewer.2plot.dev/llms.txt
- [dash-excalidraw](https://excalidraw.2plot.dev): Excalidraw virtual whiteboard and sketching canvas.
  - Machine-readable: https://excalidraw.2plot.dev/llms.txt

## Related projects

Projects by the same author on their own domains. Built on the same stack, but not part of the primary network.

- [Pirate's Bargain](https://piratesbargain.com): Deal aggregator built on the same Dash stack.
  - Machine-readable: https://piratesbargain.com/llms.txt
- [ai-agent.buzz](https://ai-agent.buzz): Agent tooling directory.
  - Machine-readable: https://ai-agent.buzz/llms.txt
- [2plot.media](https://2plot.media): Media and streaming, on the same Dash stack.
  - Machine-readable: https://2plot.media/llms.txt

## External references

Third-party documentation this project depends on or references. Not affiliated — listed so an agent can follow a dependency directly instead of searching for it.

- [Dash Mantine Components](https://www.dash-mantine-components.com): The UI component layer these docs are built with.
  - Machine-readable: https://www.dash-mantine-components.com/llms.txt
- [Plotly Dash documentation](https://dash.plotly.com): Upstream framework documentation.
  - Machine-readable: https://dash.plotly.com/llms.txt
