• v3.0.0 528b7004e3

    3.0.0
    deploy / deploy (push) Successful in 1m24s
    Stable

    H1K0 released this 2026-07-07 11:17:52 +03:00 | 0 commits to master since this release

    Tanabata File Manager 3.0.0

    Tanabata is a multi-user, tag-based web file manager for images and video.
    Store your media centrally on your own server and manage it from any browser —
    desktop or phone — with tags, pools, near-duplicate detection, and per-object
    access control.

    3.0.0 is a ground-up rewrite — the third generation of the project (the
    first was written in C, the second in Flask). It replaces the previous stack
    with a Go + Gin backend (Clean Architecture) and a SvelteKit single-page app,
    shipped as a single self-hosted Docker image that serves both the REST API and
    the built UI on one port.

    Highlights

    • Tag-based organization — tags, tag categories, and auto-tag rules (attach
      tag A and tag B follows automatically).
    • Pools — ordered collections of files, with either a user-defined manual
      order (drag-to-reorder) or automatic sorting by content date, name, or
      creation.
    • Near-duplicate detection for images and video via perceptual hashing:
      review duplicate clusters, dismiss false positives, and merge a pair
      field-by-field.
    • Powerful filtering — a compact filter DSL over tags, MIME types, and review
      state, with fast cursor-based pagination.
    • Installable PWA — mobile-first UI, dark and light themes, and optional
      offline viewing of pinned files.
    • Self-hosted and private — one Docker image, PostgreSQL, automatic database
      migration on first start, and a single .env for configuration.

    Files

    • Upload via a form or drag-and-drop straight onto the grid.
    • Import in bulk from a folder on the server, with live per-file progress.
    • Rich metadata and EXIF extraction; edit notes, content date, and custom
      key–value metadata (including nested objects).
    • Replace a file's content in place (keeps the same ID and links).
    • Multi-select (click, Shift-range, touch drag) with bulk actions: edit tags,
      add to a pool, mark reviewed, and delete.
    • Trash with restore and permanent delete.
    • Gallery-style viewer with prev/next paging and keyboard navigation.

    Tags, categories, and pools

    • Full CRUD for tags, categories, and pools, each with notes and metadata.
    • Auto-tag rules, optionally applied retroactively to already-tagged files.
    • Category views showing shared vs. partial tags across a selection.
    • Pools support per-pool file sorting: keep a hand-arranged order, or sort
      automatically (manual reordering is disabled while an automatic sort is
      active). The in-pool selection offers the same bulk actions as the main grid.

    Access control, users, and audit

    • Private-by-default model: admins see everything; otherwise access requires a
      public flag, ownership, or an explicit per-object grant (read / edit).
    • Admin panel: manage users, set roles, and block/unblock accounts.
    • Every meaningful action is recorded in an audit log.

    Security

    • JWT auth with short-lived access tokens and rotating refresh tokens.
    • Per-file content tokens so long media keeps streaming past access-token expiry.
    • Per-IP rate limiting on the auth endpoints, conservative security headers, and
      trusted-proxy handling for correct client IPs behind a reverse proxy.
    • Runs as a non-root user in the container; the initial admin is bootstrapped
      from environment variables (no default credentials are shipped).

    Deployment

    • Single multi-stage Docker image (no Node runtime in the final image) plus
      PostgreSQL 14+ (bundled container or a host database).
    • Published on loopback by default and designed to sit behind a reverse proxy
      (TLS, large uploads, media streaming).
    • First run is minimal: fill in .env, then docker compose up — migrations
      apply automatically and the admin account is created on startup.
    • Graceful shutdown drains in-flight requests on stop/redeploy, with the drain
      window shared between the app and the container's stop grace period.

    Tech stack

    • Backend: Go + Gin, Clean Architecture, pgx v5, goose migrations.
    • Frontend: SvelteKit (SPA mode), Svelte 5, Tailwind CSS v4, TypeScript.
    • Database: PostgreSQL 14+.
    • API: documented in openapi.yaml; the frontend types are generated from it.

    License

    Tanabata File Manager is licensed under the GNU Affero General Public License
    v3.0 or later (AGPL-3.0-or-later)
    .

    Downloads