A collection of awesome things regarding the gemini protocol ecosystem.
 
Go to file
Étienne Deparis 5eb2bd8a74 Remove a trailing white space 2020-11-20 08:48:13 +01:00
LICENSE add CC0 license 2020-08-21 10:11:45 +02:00
README.md Remove a trailing white space 2020-11-20 08:48:13 +01:00
contributing.md Create contributing.md 2020-08-21 10:14:07 +02:00

README.md

Awesome Gemini Awesome

A collection of awesome things regarding the gemini protocol ecosystem.

Please contribute to this list to link to all the awesome gemini projects out there.

What is Gemini

Excerpt from gemini.circumlunar.space:

Gemini is a client-server protocol featuring request-response transactions, broadly similar to gopher or HTTP. Connections are closed at the end of a single transaction and cannot be reused. When Gemini is served over TCP/IP, servers should listen on port 1965 (the first manned Gemini mission, Gemini 3, flew in March'65). This is an unprivileged port, so it's very easy to run a server as a "nobody" user, even if e.g. the server is written in Go and so can't drop privileges in the traditional fashion.

Contents

Clients

Terminal

  • Amfora (Go) - a "fancy" terminal client.
  • Asuka (Rust) - an NCurses-based Gemini client.
  • AV-98 (Python) - a Gemini client derived from the popular VF-1 Gopher client.
  • bollux (Bash) - a bash Gemini client.
  • Bombadillo (Go) - a combined Gopher and Gemini client with vim-inspired key mappings.
  • diohsc (Haskell) - a simple line-based command-response terminal user interface with ANSI colour.
  • Elpher (Emacs) - a combined Gopher and Gemini client for the popular text editor / operating system.
  • gemini-demo-1 (Python) - a minimal but usable interactive Gemini client in < 100 LOC of Python 3.
  • gemini-demo-2 (Lua) - a minimal but usable interactive Gemini client in < 100 LOC of Lua.
  • gemini-demo-3 (Go) - a minimal but usable interactive Gemini client in not quite < 100 LOC of Go.
  • gemini-fetch (Node.js) - a cURL-like CLI for loading content from Gemini URLs.
  • gmni (C) - a CLI utility (like curl) and a line-mode browser.
  • min (Go) - supports advanced features like input and client certificate generation.

Graphical

Cross-platform

  • Agregore - (Electron.js) - a peer to peer web browser with support for loading Gemini pages.
  • Alrisha (QML) - QML-based Gemini client.
  • Castor (Rust) - a graphical Gemini client using GTK.
  • Fafi (Racket) - a graphical Gemini browser written in Racket.
  • Lagrange (C) - a desktop GUI client with inline image viewing, multiple tabs, bookmarks and more.
  • Moonlander (Rust) - the fanciest Gemini client in the entire solar system.
  • Kristall (C++) - a graphical Gopher and Gemini client using QT.
  • spacewar (Electron.js) - a Gemini browser running on Electron.

Mobile

  • Ariane (Kotlin/Java) - a Gemini protocol client for Android based OS.
  • Deedum (Dart) - an Android and iOS client made with Flutter.
  • Gemini Browser (Swift) - iOS native browser.

Windows

  • GemiNaut (C#) - a user friendly graphical Gemini client for MS Windows.

Programming

  • gemclient (Nim) - a rich client library for the Gemini Protocol.
  • gemini (Node.js) - a server & client lib.
  • a-h/gemini (Go) - Applications and libraries for building applications on Gemini.
  • go-gemini (Go) - a library that provides an easy interface to create client and servers.
  • go-gemini (Go) - a more recent fork of the library above.
  • gig (Go) - a Gemini framework.

Resources

Servers

  • Agate (Rust) - a simple Gemini server for static files.
  • a-h/gemini (Go) - Server for Linux, Mac, Raspberry Pi. Supports SNI for multiple domains on the same server, has Docker image.
  • blizanci (Erlang) - a server designed primarily for robustness and security.
  • Denoscuri (Typescript) - a simple Gemini server written using Deno and Typescript.
  • Duckling proxy 🦆 (Go) - a scheme-specific filtering proxy for Gemini clients to access the web.
  • GeGoBi (Python) - a server to facilitate easy Gemini-Gopher bi-hosting.
  • gemini-server (Haskell) - a lightweight server for the Gemini protocol.
  • geminid (C) - a Gemini Server in C.
  • geminid (Scheme) - a Gemini Server in CHICKEN Scheme.
  • gemini-php (PHP) - a simple Gemini server in PHP.
  • gmnisrv (C) - a high-performance Gemini server for POSIX systems.
  • Gemserv (Rust) - a server with features like vhosts, CGI, SCGI, reverse-proxying and more.
  • Germinal (Common Lisp) - serves any type of document with an appropriate mime type.
  • GLV-1.12556 (Lua) - the first Gemini protocol server with a lot of features
  • Jetforce (Python) - a built-in static file server with support for gemini directories and CGI scripts.
  • Marami (Prolog) - a server written in Prolog.
  • Molly Brown (Go) - a full-featured Gemini server implemented in Go.
  • net-gemini (Go) - a gemini server inspired by Molly Brown.
  • Orbit (PHP) - a Gemini server implemented in PHP.
  • pollux (Rust) - a simple server that will only serve one index.gemini file.
  • Satellite (Go) - a small Gemini server for serving static files.
  • Shavit (Go) - a configurable Gemini server for UNIX operating systems.
  • Space-Age (Clojure) - a Gemini server written in Clojure.
  • Titan (Rust) - a simple TOML-configured Gemini server and an Express-like Gemini server framework.

Tools

  • gemini-pandoc-lua-filter (Lua) - a lua filter for pandoc to output Gemini text.
  • gemini-to-html (Node.js) - a JavaScript library for parsing Gemini pages, and for rendering them to HTML.
  • gloggery (Go) - basic static site generator for blogs in Gemini.

Web proxies