A booru imageboard implemention using the Gemini and Titan protocols
Find a file
2025-07-12 21:01:25 -05:00
etc Tag alias modification 2025-07-12 21:01:25 -05:00
mod Tag alias modification 2025-07-12 21:01:25 -05:00
.gitignore The configuration code continues to be some of the worst code I have ever written, but we now have basic configuration file parsing so who the fuck cares 2025-06-25 12:29:34 -05:00
gembooru.scm Tag alias modification 2025-07-12 21:01:25 -05:00
LICENSE Bare minimum gemini server setup 2025-05-13 09:08:12 -05:00
README.md Tag alias modification 2025-07-12 21:01:25 -05:00

GemBooru

GemBooru is a booru implementation for the gemini+titan protocols. A booru is a type of imageboard where media is tagged based on its contents, allowing users to find media with specific content through the use of tag-based queries.

(Planned) Features

  • Media uploads via Titan
  • Uploads optionally restricted by token
  • Delete posts
  • Create tags with aliases
  • Modify tags
  • Tag descriptions
  • Delete tags
  • Modify and view tags on posts
  • Basic post metadata (media size, score, creation time, mime type)
  • Filetype-specific metadata (resolution, length)
  • Search for images by querying tags
  • Queries with quoted multi-word fields
  • Metadata querying
  • Sort search results
  • Paginate search results
  • Comments system
  • Voting for posts/tags
  • Command-line configuration options
  • Configuration file
  • Scheme-based template system for dynamic page generation
  • Registration and authentication via client certificates
  • User permissions and roles
  • Manual post approval; automatic denial if unapproved in timeframe
  • Post relationships for i.e. first-party edits or sequential ordering
  • Metrics page
  • JSON or XML API for automated applications

Running

Gembooru depends on the following external code/libraries:

  • GNU Guile
  • GnuTLS with guile-gnutls
  • libmagic (provided by file)
  • (chibi crypto md5) (embedded, see mod/chibi/)

You'll want to generate a self-signed certificate (preferred), or use a CA certificate, before running. The following command assumes you generated a self-signed certificate for localhost in the current directory:

guile -L mod gembooru.scm       \
  --server-name "localhost"     \
  --certificate "localhost.crt" \
  --private-key "localhost.key"
  # other options...

Licensing

All original code in this repository has been relinquished to the public domain. The preferred license is the STRONGEST license (see: LICENSE), but CC0, WTFPL, Unlicense, 0BSD, or equivalent public domain licenses may be used instead.

The files in mod/chibi/ are not original code. See the file headers for their respective licensing. Any modifications of these files has been explicitly marked as such, and follow the same licensing as the rest of our original code.