Skip to content

Repository files navigation

img-url — upload a file or save a link, get back a durable shareable URL

Runtime: Docker Compose Storage: InsForge Auth: X-API-Key Fractals Studio

Every upload or saved link becomes one row with a type badge and a durable URL — the same shape whether it's an image, a file, a bookmarked link, or an invoice PDF that arrived on its own.

Interactive architecture map

img-url architecture diagram

The image links to the committed self-contained map. After cloning or downloading the repository, open docs/architecture/architecture.html locally to search components, trace relationships, switch themes, and export the diagram.

What it does

  • File and link sharing. Upload any file (≤100 MB) or save an external URL; both get a short, permanent, shareable URL. Images, files, and links are all tracked with visit counts.
  • One dashboard. A single HTML page lists everything — filterable by type, sortable by column, with drag-and-drop upload, bulk print, and bulk delete.
  • Invoice pipeline. An external fetcher (Hermes) posts PDFs to /inbox; a background poller extracts text with markitdown, classifies and pulls structured fields (vendor, amount, dates, VAT) via Together AI, dedupes against existing invoices, and stores the result — all visible in the same dashboard under the Invoices filter.
  • Monthly reporting. POST /invoices/report emails an HTML summary of a month's invoices via Resend and marks them reported.
  • Request log dashboard. Every HTTP request is logged and browsable at /logs, filterable by path and status family.

Quick start

cp .env.example .env   # set INSFORGE_URL/INSFORGE_API_KEY, API_KEY, etc.
docker compose up -d --build

The app listens on port 3765 (mapped from 8000 in the container). Open http://<server>:3765/ for the dashboard.

Storage

Uploaded files live on a local Docker volume (/uploads) — that part is unchanged from a typical self-hosted setup. All structured records (resources, invoices, inbox items, request logs) live in one table (img_url_items) in the shared InsForge "Connections" project, reached over InsForge's REST API — there's no local database to run or back up. See CLAUDE.md for the full schema and every environment variable.

API

Full endpoint reference, request/response shapes, and curl examples: API.md.

Every write endpoint (POST/DELETE) requires an X-API-Key header matching the API_KEY env var; read endpoints (GET) are public.


Built by Fractals

About

Upload a file or save a link and get a durable, shareable URL back — invoice PDFs get read, classified, and filed on their own.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages