tagliatelle

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 0071e0947905394929c28f8f98251ec718ac87ee
parent 17d3362751d1481c3c614dd91982f76f7de137ef
Author: breadcat <breadcat@users.noreply.github.com>
Date:   Fri,  6 Feb 2026 15:29:21 +0000

Add readme and rename project

Diffstat:
Minclude-admin.go | 2+-
Areadme.md | 41+++++++++++++++++++++++++++++++++++++++++
Mtemplates/_header.html | 4++--
Mtemplates/admin.html | 2+-
4 files changed, 45 insertions(+), 4 deletions(-)

diff --git a/include-admin.go b/include-admin.go @@ -18,7 +18,7 @@ func loadConfig() error { DatabasePath: "./database.db", UploadDir: "uploads", ServerPort: ":8080", - InstanceName: "Taggart", + InstanceName: "Tagliatelle", GallerySize: "400px", ItemsPerPage: "100", TagAliases: []TagAliasGroup{}, diff --git a/readme.md b/readme.md @@ -0,0 +1,40 @@ +# Tagliatelle + +>Previously called *[taggart](https://en.wikipedia.org/wiki/Taggart)*, renamed for unfortunate rhyming reasons + +A simple golang application to provide a flexible SQLite tagging database and file browser via web browser. + +Very rough around the edges, but functional. Primarily intended for personal use. + +## Running + +``` +cd tagliatelle +go get github.com/mattn/go-sqlite3 +go run . +``` + +Then access the server via a web browser, the default port is 8080. + +## Features +* Multiple tags per category +* Bulk tag management via file ID or `tag:value` query +* Search through names, comments or tag values with wildcard support +* Image, video, text and cbz gallery viewers +* Will transcode incompatible video formats +* Tag value aliases, e.g. `color:blue` and `color:navy` +* Regenerate video thumbnails via web interface +* Add files via local upload, remote upload or `yt-dlp` directly +* Clickable [rotate90](## "Rotates video/image contents by angle on click")**, [l45](## "Jumps to line number in text viewer on click")** and [01:23](## "Jumps video playback to specified timestamp on click")** shortcodes in file descriptions +* Artbitrary searchable descriptions on files +* Raw file URI copying for external application access +* In browser file management (delete, rename) + +## Limitations +* SQLite requires cgo, which requires gcc. Build/run with `CGO_ENABLED=1` +* Database deletions get reserved so you won't have sequential file ID's +* Paths are stored absolutely, not relatively, so moving your file store requires manual intervention + +## Credits +* [mattn/go-sqlite3](https://github.com/mattn/go-sqlite3) for the go SQLite3 library +* [Fluent UI System Icons](https://freesvgicons.com/packs/fluent) for SVG icons used +\ No newline at end of file diff --git a/templates/_header.html b/templates/_header.html @@ -3,7 +3,7 @@ <html> <head> <meta charset="utf-8"> - <title>{{if .Title}}{{.Title}} - Taggart{{else}}Taggart{{end}}</title> + <title>{{if .Title}}{{.Title}} - Tagliatelle{{else}}Tagliatelle{{end}}</title> <link href="/static/style.css" rel="stylesheet"> <meta name="viewport" content="width=device-width,initial-scale=1" /> <style> @@ -14,7 +14,7 @@ <body> <nav> <ul> -<li><strong>&num;Taggart</strong></li> +<li><strong>&num;Tagliatelle</strong></li> <li><a href="/"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="#000000" d="M4.5 3A2.5 2.5 0 0 0 2 5.5v9A2.5 2.5 0 0 0 4.5 17h11a2.5 2.5 0 0 0 2.5-2.5v-7A2.5 2.5 0 0 0 15.5 5H9.707L8.22 3.513A1.75 1.75 0 0 0 6.982 3H4.5ZM3 5.5A1.5 1.5 0 0 1 4.5 4h2.482a.75.75 0 0 1 .53.22l1.28 1.28L7.44 6.854A.5.5 0 0 1 7.086 7H3V5.5ZM3 8h4.086a1.5 1.5 0 0 0 1.06-.44L9.707 6H15.5A1.5 1.5 0 0 1 17 7.5v7a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 3 14.5V8Z"/></svg><span>Browse</span></a></li> <li><a href="/add"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="#000000" d="M6 10a.5.5 0 0 1 .5-.5h3v-3a.5.5 0 0 1 1 0v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3A.5.5 0 0 1 6 10Zm4 8a8 8 0 1 0 0-16a8 8 0 0 0 0 16Zm0-1a7 7 0 1 1 0-14a7 7 0 0 1 0 14Z"/></svg><span>Add files</span></a></li> <li><a href="/tags"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="#000000" d="M13.5 6.5a1 1 0 1 0 0-2a1 1 0 0 0 0 2ZM9.207 2.586A2 2 0 0 1 10.621 2h4.452a2 2 0 0 1 2 2v4.374a2 2 0 0 1-.593 1.422l-5.818 5.76a2 2 0 0 1-2.82-.008l-4.385-4.384a2 2 0 0 1 0-2.828l5.75-5.75ZM10.621 3a1 1 0 0 0-.707.293l-5.75 5.75a1 1 0 0 0 0 1.414l4.384 4.384a1 1 0 0 0 1.41.004l5.819-5.76a1 1 0 0 0 .296-.71V4a1 1 0 0 0-1-1h-4.452Zm-7.624 8.8a2 2 0 0 0 .46 2.114l2.977 2.977a4 4 0 0 0 5.642.014l4.404-4.36a2 2 0 0 0 .593-1.42v-.573l-4.997 4.953a4.086 4.086 0 0 1-.147.14l-.556.55a3 3 0 0 1-4.232-.01l-.499-.5a4.047 4.047 0 0 1-.208-.194l-2.977-2.977a1.992 1.992 0 0 1-.46-.714Z"/></svg><span>Tags</span></a> diff --git a/templates/admin.html b/templates/admin.html @@ -64,7 +64,7 @@ <label for="instance_name" style="display: block; font-weight: bold; margin-bottom: 5px;">Instance Name:</label> <input type="text" id="instance_name" name="instance_name" value="{{.Data.Config.InstanceName}}" required style="width: 100%; padding: 8px; font-size: 14px;" - placeholder="Taggart"> + placeholder="Tagliatelle"> <small style="color: #666;">Instance Name, used in header and title bar</small> </div>