├── .gitalias ├── .gitremotes ├── LICENSE ├── README.md └── contributing.md /.gitalias: -------------------------------------------------------------------------------- 1 | [alias] 2 | pushall = !git remote | xargs -L1 git push --all -------------------------------------------------------------------------------- /.gitremotes: -------------------------------------------------------------------------------- 1 | [remote "gh"] 2 | url = git@github.com:kr1sp1n/awesome-gemini.git 3 | fetch = +refs/heads/*:refs/remotes/gh/* 4 | [remote "sh"] 5 | url = git@git.sr.ht:~kr1sp1n/awesome-gemini 6 | fetch = +refs/heads/*:refs/remotes/sh/* 7 | [remote "cb"] 8 | url = https://codeberg.org/kr1sp1n/awesome-gemini 9 | fetch = +refs/heads/*:refs/remotes/cb/* 10 | [remote "gl"] 11 | url = git@gitlab.com:kr1sp1n/awesome-gemini.git 12 | fetch = +refs/heads/*:refs/remotes/gl/* -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Gemini [![Awesome](https://awesome.re/badge-flat.svg)](https://awesome.re) 2 | A collection of awesome things regarding the [gemini protocol][1] ecosystem. 3 | 4 | Please contribute to this list to link to all the awesome gemini projects out there. 5 | 6 | Repo mirrors: 7 | * https://codeberg.org/kr1sp1n/awesome-gemini 8 | * https://git.sr.ht/~kr1sp1n/awesome-gemini 9 | * https://gitlab.com/kr1sp1n/awesome-gemini 10 | * https://github.com/kr1sp1n/awesome-gemini 11 | 12 | ## What is Gemini 13 | 14 | [Excerpt from geminiprotocol.net](https://geminiprotocol.net): 15 | 16 | > Gemini is a group of technologies similar to the ones that lie behind your familiar web browser. Using Gemini, you can explore an online collection of written documents which can link to other written documents. The main difference is that Gemini approaches this task with a strong philosophy of "keep it simple" and "less is enough". This allows Gemini to simply sidestep, rather than try and probably fail to solve, many of the problems plaguing the modern web, which just seem to get worse and worse no matter how many browser add-ons or well meaning regulations get thrown at them. 17 | 18 | ## Gemini Specification 19 | 20 | - [Official protocol specification](https://geminiprotocol.net/docs/protocol-specification.gmi) 21 | - [Official gemtext specification](https://geminiprotocol.net/docs/gemtext-specification.gmi) 22 | - [protocol spec discussion and development](https://gitlab.com/gemini-specification/protocol) 23 | - [gemini-text spec discussion and development](https://gitlab.com/gemini-specification/gemini-text) 24 | 25 | ## Contents 26 | 27 | - [Clients](#clients) 28 | - [Terminal](#terminal) 29 | - [Graphical](#graphical) 30 | - [Cross-platform](#cross-platform) 31 | - [Mobile](#mobile) 32 | - [Windows](#windows) 33 | - [MacOS](#macos) 34 | - [Programming](#programming) 35 | - [Related Specifications](#related-specifications) 36 | - [Resources](#resources) 37 | - [Servers](#servers) 38 | - [Services](#services) 39 | - [Tools](#tools) 40 | - [Gemtext converters](#gemtext-converters) 41 | - [Web proxies](#web-proxies) 42 | - [Bots](#bots) 43 | 44 | ## Clients 45 | 46 | ### Terminal 47 | - [Amfora](https://github.com/makeworld-the-better-one/amfora) (Go) - "fancy" terminal client. In [maintenance mode](https://www.makeworld.space/2023/08/bye_gemini.html). 48 | - [astronaut](https://sr.ht/~adnano/astronaut/) (Go) - a gemini browser for the terminal 49 | - [Asuka](https://git.sr.ht/~julienxx/asuka) (Rust) - an NCurses-based Gemini client. 50 | - [AV-98](https://tildegit.org/solderpunk/AV-98) (Python) - Gemini client derived from the popular VF-1 Gopher client. 51 | - [AV-98-fork](https://notabug.org/tinyrabbit/AV-98-fork.git) - A fork of AV-98. 52 | - [bollux](https://tildegit.org/acdw/bollux) (Bash) - bash Gemini client. 53 | - [bombadillo](https://bombadillo.colorfield.space/) (Go) - combined Gopher, Gemini, Finger, and File client with vim-inspired key mappings. 54 | - [cgmnlm](https://git.sr.ht/~rwa/cgmnlm) (C) - colorful gemini line-mode client, fork of gmni. 55 | - [diohsc](https://mbays.sdf.org/diohsc/) (Haskell) - simple line-based command-response terminal user interface with ANSI colour. 56 | - [Elpher](https://thelambdalab.xyz/elpher/) (Emacs) - combined Gopher and Gemini client for the popular text editor / operating system. 57 | - [ereandel](https://github.com/blmayer/ereandel) (Shell) - terminal client using a custom pager written in POSIX shell script. 58 | - [gelim](https://sr.ht/~hedy/gelim/) (Go) - A minimalist line-mode smolnet client written in go. 59 | - [gem.awk](http://git.vgx.fr/gem.awk/file/gem.awk.html) (Awk) - minimal but usable interactive Gemini client in < 250 LOC of Awk. 60 | - [gembro](https://git.sr.ht/~rafael/gembro) (Go) - gemini client using [Bubble Tea](https://github.com/charmbracelet/bubbletea). 61 | - [Gemcurses](https://github.com/crusom/Gemcurses) (C) - A Gemini client, written in C using ncurses. 62 | - [gemini-demo-1](https://tildegit.org/solderpunk/gemini-demo-1) (Python) - minimal but usable interactive Gemini client in < 100 LOC of Python 3. 63 | - [gemini-demo-2](https://tildegit.org/solderpunk/gemini-demo-2) (Lua) - minimal but usable interactive Gemini client in < 100 LOC of Lua. 64 | - [gemini-demo-3](https://tildegit.org/solderpunk/gemini-demo-3) (Go) - minimal but usable interactive Gemini client in not quite < 100 LOC of Go. 65 | - [gemini-fetch](https://github.com/RangerMauve/gemini-fetch) (Node.js) - cURL-like CLI for loading content from Gemini URLs. 66 | - [gemivim](https://sr.ht/~k1nkreet/gemivim/) (Vim) - simple VIM plugin for browsing Gemini pages 67 | - [gmi](https://sr.ht/~chambln/gmi) (Shell) - Tiny Gemini browser written in POSIX-compliant shell. Highly hackable, portable shell script under 200 lines. 68 | - [gmi100](https://github.com/ir33k/gmi100) (C) - CLI Gemini client written in 100 lines of ANSI C. 69 | - [gmni](https://sr.ht/~sircmpwn/gmni/) (C) - CLI utility (like curl) and line-mode browser. 70 | - [gplaces](https://github.com/dimkr/gplaces) (C) - command-driven, terminal based Gemini client in ~1K LOC of C. 71 | - [Gremlin](https://github.com/actuday6418/gremlin) (Rust) - TUI for browsing Gemini space 72 | - [leo](https://github.com/shantaram3013/leo) (Python) - lightweight, prompt-driven Gemini client. 73 | - [min](https://github.com/a-h/min) (Go) - supports advanced features like input and client certificate generation. 74 | - [ncgopher](https://github.com/jansc/ncgopher) (Rust) - gopher and gemini client for the modern internet. 75 | - [Offpunk](https://sr.ht/~lioploum/offpunk/) (Python) - Gemini, gopher, spartan and http/html offline-first browser. 76 | - [Omura](https://github.com/fzn0x/omura) (Node.js, Bun) - Pushing lightweight gemtext-based internet CLI client. 77 | - [Romulus](https://github.com/LukeEmmet/Romulus) (C#) - interactive TUI client with menus and mouse support 78 | - [Scroll-Term](https://gitlab.com/clseibold/scroll-term) (Go) - Gemini, Nex, and Scroll terminal client with audio streaming support. 79 | - [Telescope](//telescope.omarpolo.com) (C) - w3m-inspired, multi-protocol client that supports Gemini, Gopher and Finger 80 | - [tinmop](https://www.autistici.org/interzona/tinmop.html) (Common Lisp) - opinionated Mastodon and Gemini client 81 | - [tgmi](https://framagit.org/apm04/tgmi) (python) - full-featured CLI terminal-based Gemini client 82 | - [vimini](https://git.sr.ht/~lufte/vimini) (Rust) - Desktop gemini browser inspired by qutebrowser and Vim. 83 | 84 | ### Graphical 85 | #### Cross-platform 86 | - [Agregore](https://github.com/RangerMauve/agregore-browser#fetch-api-for-gemini) - (Electron.js) - peer to peer web browser with support for loading Gemini pages. 87 | - [Alrisha](https://git.sr.ht/~fabrixxm/alrisha) (QML) - QML-based Gemini client. 88 | - [Castor](https://git.sr.ht/~julienxx/castor) (Rust) - graphical Gemini client using GTK. 89 | - [Eva](https://codeberg.org/jeang3nie/eva) (Rust) - a Gemini protocol browser in Gtk4 90 | - [Fafi](https://git.sr.ht/~soapdog/fafi-browser) (Racket) - graphical Gemini browser written in Racket. 91 | - [Fossil](https://github.com/koyuspace/fossil) (Vala) - GTK3 Gemini browser written in Vala for desktop and mobile. 92 | - [Galacteek](https://gitlab.com/galacteek/galacteek) (Python) - Browser for the distributed web, with support for Gemini and IPFS. 93 | - [Gemalaya](https://gitlab.com/cipres/gemgemgem) (Python/QML) - Keyboard-driven Gemini browser with builtin web-to-gemini proxy 94 | - [Gerbil](https://gitlab.com/armen138/gerbil) (Python) - Gemini and Spartan browser written in python with GTK and LibHandy for desktop and mobile 95 | - [Lagrange](https://git.skyjake.fi/skyjake/lagrange) (C) - desktop GUI client with inline image viewing, multiple tabs, bookmarks and more. 96 | - [Molasses](https://github.com/jjsimpso/molasses) (Racket) - full-featured graphical Gopher and Gemini client with tabs. 97 | - [Moonlander](https://sr.ht/~admicos/moonlander/) (Rust) - the fanciest Gemini client in the entire solar system. 98 | - [Profectus](https://gitlab.com/clseibold/profectus) (Go) - Gemini, Nex, Spartan, and Scroll client with tabs, music player, streaming, and expansive theming. 99 | - [Kristall](https://github.com/MasterQ32/kristall) (C++) - graphical Gopher and Gemini client using QT. 100 | - [spacewar](https://github.com/ResonAtom/spacewar) (Electron.js) - EXPERIMENTAL and UNSTABLE Gemini browser running on Electron. 101 | - [Geopard](https://github.com/ranfdev/Geopard) (Rust) - A colorful, adaptive gemini browser. 102 | - [Yoda](https://github.com/YGGverse/Yoda) (PHP-GTK) - Experimental browser for Gemini Protocol based on [PHP-GTK](https://github.com/scorninpc/php-gtk3) and [gemini-php](https://github.com/YGGverse/gemini-php). 103 | 104 | #### Mobile 105 | - [Buran](https://github.com/Corewala/Buran) (Kotlin/Java) - Gemini browser for Android, fork of Ariane. 106 | - [Deedum](https://github.com/snoe/deedum) (Dart) - an Android and iOS client made with Flutter. 107 | - [Elaho](https://github.com/pitr/gemini-ios) (Swift) - full featured Gemini protocol browser for iOS. 108 | - [Gem](https://open-store.io/app/gem.aaron) (Python) - Gemini client for Ubuntu Touch. 109 | - [Xenia](https://gitlab.com/tslocum/xenia) (Java) - Gemini proxy for Android. 110 | - [Phaedra](https://oppen.digital/software/phaedra/) (Java) - Gemini client for Android supporting even very old ones; author recommends using Ariana if a current Android is at hand. 111 | - [Rosy Crow](https://rosy-crow.app) (C#) - An Android client built using .NET MAUI. 112 | 113 | #### Windows 114 | - [GemiNaut](https://www.marmaladefoo.com/pages/geminaut) (C#) - user friendly graphical Gemini client for MS Windows. 115 | 116 | #### MacOS 117 | - [Jimmy](https://github.com/jfoucher/Jimmy) (SwiftUI) - a lightweight native Gemini client for MacOS 118 | 119 | #### AmigaOS 120 | - [AmiGemini](http://aminet.net/package/comm/net/AmiGemini) 121 | 122 | ## Programming 123 | - [Agunua](https://framagit.org/bortzmeyer/agunua) (Python) - Gemini library to write clients. Includes IRI support, gemtext parsing and CLI tool. 124 | - [derhuerst/gemini](https://github.com/derhuerst/gemini) (Node.js) - server & client lib. 125 | - [a-h/gemini](https://github.com/a-h/gemini) (Go) - Applications and libraries for building applications on Gemini. 126 | - [cuipod](https://github.com/aegis-dev/cuipod) (C#) - Simple yet flexible framework for Gemini protocol server. 127 | - [gemclient](https://github.com/Koshroy/gemclient) (Nim) - rich client library for the Gemini Protocol. 128 | - [gemini](https://github.com/kulak/gemini) (Go) - Server side Gemini protocol + Titan protocol implementation that matches standard GO http API. 129 | - [gig](https://github.com/pitr/gig) (Go) - Gemini framework. 130 | - [gmir](https://github.com/codesoap/gmir) (Go) - A reader for gmi files 131 | - [go-gemini](https://git.sr.ht/~yotam/go-gemini) (Go) - library that provides an easy interface to create client and servers. 132 | - [go-gemini](https://github.com/makew0rld/go-gemini) (Go) - more recent fork of the library above. 133 | - [gusmobile](https://git.sr.ht/~rwa/gusmobile) (Python) - gemini client for Pyhton (used by geminispace.info) 134 | - [html2gemini](https://github.com/LukeEmmet/html2gemini) (Go) - package library to convert HTML to Gemini (see also html2gmi for command line application) 135 | - [ignition](https://github.com/cbrews/ignition) (Python) - Gemini client transport/request library for python3. 136 | - [qgeminiserver](https://deno.land/x/qgeminiserver) (Deno/TypeScript) - framework for server applications. [kaksik](https://github.com/sergetymo/kaksik) fork and bug-fix. 137 | - [kaksik](https://github.com/sergetymo/kaksik) (Deno/TypeScript) - middleware library for building server applications. 138 | - [ruby-net-text](https://git.umaneti.net/ruby-net-text/) (Ruby) - Gemini support in Net::* and URI::* stack. 139 | - [SmolNetSharp](https://github.com/LukeEmmet/SmolNetSharp) (C#) - cross platform .NET (core/framework) client library for building Gemini and Gopher clients 140 | - [warmuuh/jemini](https://github.com/warmuuh/jemini/tree/main/gemini-client)(Java) - reactive gemini-client, part of jemini-project 141 | - [geminic](https://github.com/WarpEngineer/geminic) (Erlang) - An Erlang library for building Gemini protocol clients. 142 | - [dremini](https://github.com/marty1885/dremini) (C++) - Highly concurrent C++ Gemini server and client library 143 | - [Opal](https://github.com/aschuhardt/Opal) (C#) - Gemini client library targeting .NET Standard 2.0. Built-in support for TOFU and client certificates. 144 | - [gemax](https://github.com/ninedraft/gemax) (Go) - a golang gemini stack, inspired by go STD http library. 145 | - [phos](https://github.com/omar-polo/phos) (Common Lisp) - Gemini client library and experimental GUI 146 | 147 | ## Related Specifications 148 | - [GemPub Specification](https://codeberg.org/oppenlab/gempub) - Gempub, the Gemini e-book (and capsule archive) container specification. 149 | - [Gemini TinyLog Specification](https://codeberg.org/bacardi55/gemini-tinylog-rfc) - A Tinylog is a simple file with all "microblog" style entries to share small contents and interact with other geminauts' tinylog. 150 | - [Adding Emoji Favicons to Gemini](https://portal.mozz.us/gemini/mozz.us/files/rfc_gemini_favicon.gmi) - Optional extension by Michael Lazar to the Gemini Protocol, with the goal to set a Unicode emoji as favicon for a site. 151 | 152 | ## Resources 153 | - [Gemini Specification](https://geminiprotocol.net/docs/) - the Gemini protocol documentation. 154 | - [geminiprotocol.net/software/](https://portal.mozz.us/gemini/geminiprotocol.net/software/) - list of Gemini software. 155 | 156 | ## Servers 157 | - [Agate](https://github.com/mbrubeck/agate) (Rust) - simple Gemini server for static files. 158 | - [aiogemini](https://github.com/rcarmo/aiogemini) (Python) - minimalist Python 3 `asyncio` server. 159 | - [Apogee](https://github.com/bunburya/apogee) (Kotlin) - Gemini server written in Kotlin for the JVM. 160 | - [atlas](https://github.com/Alumniminium/atlas) (C#) - .NET7 Gemini/Titan/Spartan server w/ vhost and cgi support. 161 | - [a-h/gemini](https://github.com/a-h/gemini) (Go) - Server for Linux, Mac, Raspberry Pi. Supports SNI for multiple domains on the same server, has Docker image. 162 | - [blizanci](https://github.com/mk270/blizanci) (Erlang) - server designed primarily for robustness and security. 163 | - [Bunkum](https://github.com/PlanetBunkum/Bunkum) (C#) - Open source .NET Gemini/Titan/Gopher/HTTP(S) request server. 164 | - [Denoscuri](https://github.com/caranatar/denoscuri) (Typescript) - simple Gemini server written using Deno and Typescript. 165 | - [Dʒɛmɪni](https://sr.ht/~rwv/dezhemini/) (Racket) - server with features like SNI and CGI. 166 | - [Diamant](https://git.umaneti.net/diamant/) (Ruby) - simple Gemini server for static files. 167 | - [doc-server](https://github.com/doga/doc-server) (Deno/Typescript) - A Gemini server for serving JSDoc documentation. Built on the Kaksik library. 168 | - [Doppio](https://github.com/bhavanki/doppio) (Java) - single-JAR Gemini server with CGI, authentication, and Atom feed support. 169 | - [Duckling proxy 🦆](https://portal.mozz.us/gemini/gemini.marmaladefoo.com/blog/31-Aug-2020_The_Duckling_Proxy.gmi) (Go) - scheme-specific filtering proxy for Gemini clients to access the web. 170 | - [Earl Server](https://github.com/mrletourneau/EarlServer) (Kotlin) - Gemini fileserver for the JVM. 171 | - [Enceladus](https://github.com/modotte/Enceladus) (F#) - A simple Gemini protocol server implementation in .NET Core and F#. 172 | - [Ergol](http://adele.work/code/ergol/ergol.gmi) (PHP) - light Gemini server able to host several capsules with different cerificates. 173 | - [GeGoBi](https://tildegit.org/solderpunk/gegobi) (Python) - server to facilitate easy Gemini-Gopher bi-hosting. 174 | - [Gemeaux](https://github.com/brunobord/gemeaux) (Python) - server using only the Python standard library. 175 | - [gemini-ipfs-gateway](https://git.sr.ht/~hsanjuan/gemini-ipfs-gateway) (Go) - an IPFS Gateway that makes IPFS content available over the Gemini protocol. 176 | - [gemini-server](https://hackage.haskell.org/package/gemini-server) (Haskell) - lightweight server for the Gemini protocol. 177 | - [geminid](https://github.com/jovoro/geminid/) (C) - Gemini Server in C. 178 | - [geminid](https://www.upyum.com/cgit.cgi/geminid) (Scheme) - Gemini Server in CHICKEN Scheme. 179 | - [gemini-php](https://opensource.glasgow.social/gemini-php) (PHP) - simple Gemini server in PHP. 180 | - [Gneto](https://github.com/pgorman/gneto) (Go) - Gemini over HTTP proxy, with support for client certificates and CSS customization. 181 | - [JAGS-php](https://github.com/codeandcreate/JAGS-PHP) (PHP) - fork of gemini-php with support of dynamic pages. 182 | - [jsonresume-gemini](https://github.com/michaelcaplan/jsonresume-gemini) (PHP) - single purpose server implementation of the Gemini protocol to serve up your JSON Resume. 183 | - [geminim](https://github.com/ardek66/geminim) (Nim) - an async lightweight Gemini server made in Nim. 184 | - [gmid](https://github.com/omar-polo/gmid) (C) - simple and secure Gemini server. 185 | - [gmifs](https://github.com/n0x1m/gmifs) (Go) - Gemini file server with auto indexing support, caching and auto TLS key pair creation. 186 | - [gmnd](https://code.smolnet.org/micke/gmnd) (Python) - packaged Gemini server with support for CGI and indexing 187 | - [gmnisrv](https://sr.ht/~sircmpwn/gmnisrv/) (C) - high-performance Gemini server for POSIX systems. 188 | - [Gemserv](https://portal.mozz.us/gemini/80h.dev/projects/gemserv/) (Rust) - server with features like vhosts, CGI, SCGI, reverse-proxying and more. 189 | - [Germinal](https://github.com/jfmcbrayer/germinal) (Common Lisp) - serves any type of document with an appropriate mime type. 190 | - [GLV-1.12556](https://github.com/spc476/GLV-1.12556) (Lua) - the first Gemini protocol server with a lot of features. 191 | - [Hydepark](https://github.com/spektom/hydepark) (Rust) - discussion forum application for Gemini. 192 | - [Jetforce](https://github.com/michael-lazar/jetforce) (Python) - built-in static file server with support for gemini directories and CGI scripts. 193 | - [jemini](https://github.com/warmuuh/jemini)(Java) - dual gemini/http server on top of jetty with spring-boot integration 194 | - [laika](https://sr.ht/~gbmor/laika/) (Rust) - async Gemini protocol server. 195 | - [levior](https://gitlab.com/cipres/levior) (Python) - HTTP to Gemini gateway, allowing you to browse regular websites with any Gemini client 196 | - [Loxy](https://github.com/aschuhardt/Loxy) (C#) - Gemini to HTTP proxy, exposes any capsule to the web as stylable HTML (based on the Opal library). 197 | - [Lupa Pona](https://github.com/kensanata/lupa-pona) (Perl) - simple single directory Gemini server. 198 | - [Maple](https://github.com/gemrest/maple) (C++) - A very simple static Gemini server, now with Titan support! 199 | - [Marami](https://github.com/MagnificentPako/Marami/) (Prolog) - server written in Prolog. 200 | - [Molly Brown](https://tildegit.org/solderpunk/molly-brown) (Go) - full-featured Gemini server implemented in Go. 201 | - [MoonGem](https://sr.ht/~panda-roux/MoonGem) (C) - gemini server with inline Lua scripting for dynamic content generation. 202 | - [net-gemini](https://github.com/jackdoe/net-gemini) (Go) - gemini server inspired by Molly Brown. 203 | - [Orbit](https://tildegit.org/sumpygump/orbit) (PHP) - Gemini server implemented in PHP. 204 | - [Phoebe](https://alexschroeder.ch/cgit/phoebe/about/) (Perl) - Gemini/web wiki. 205 | - [pollux](https://git.sr.ht/~julienxx/pollux) (Rust) - simple server that will only serve one `index.gemini` file. 206 | - [rc-gemd](https://sr.ht/~moody/rc-gemd) (Shell) - simple Gemini server written in rc (for plan9 operating systems). 207 | - [Satellite](https://sr.ht/~gsthnz/satellite/) (Go) - small Gemini server for serving static files. 208 | - [Shavit](https://git.sr.ht/~yotam/shavit) (Go) - configurable Gemini server for UNIX operating systems. 209 | - [Smolver](https://gitlab.com/g2764/smolver) (Swift) - a small Gemini server. 210 | - [Space-Age](https://gitlab.com/lambdatronic/space-age) (Clojure) - Gemini server written in Clojure. 211 | - [Taurus](https://git.sr.ht/~garritfra/taurus)(Rust) - A Concurrent Gemini Server. 212 | - [Titan](https://github.com/jahzielv/titan) (Rust) - simple TOML-configured Gemini server and an Express-like Gemini server framework. 213 | - [twins](https://code.rocketnine.space/tslocum/twins) (Go) - YAML-configured Gemini server supporting vhosts, FastCGI and reverse-proxying. 214 | - [twinstar](https://github.com/panicbit/twinstar) (Rust) - gemini server implementation. 215 | - [vger](https://tildegit.org/solene/vger) (C) - Gemini server written in C used with inetd. 216 | - [Windmark](https://github.com/gemrest/windmark) (Rust) - An elegant and highly performant async Gemini server framework 217 | - [SpaceBeans](https://git.usebox.net/spacebeans/about/) (Scala) - supports virtual hosting, user directories, classic CGI. 218 | - [StaticGeminiServer](https://github.com/marek22k/StaticGeminiServer) ([Codeberg](https://codeberg.org/mark22k/StaticGeminiServer)) (Ruby) - a simple more or less stable gemini server for static files 219 | - [kepler](https://github.com/ambyshframber/kepler) - simple gemini server in rust 220 | - [Mehari](https://github.com/Psi-Prod/Mehari) - Featureful server in OCaml 221 | - [β-Doku](https://github.com/YGGverse/bdoku) (PHP) - DokuWiki Satellite for Gemini Protocol 222 | - [KevaChat](https://github.com/kevachat/geminiapp) (PHP) - client/server Chat in Blockchain 223 | - [gemini-server-clj](https://github.com/aburd/gemini-server-clj) (Clojure) - simple gemini server for serving static files 224 | - [vostok](https://got.any-key.press/?action=summary&path=vostok.git) (__gemini://vostok.any-key.press/__) (C++11) - gemini server 225 | - [gem](https://github.com/wrclark/gem) (C) - static file server with many features 226 | 227 | ## Services 228 | - __gemini://warmedal.se/~antenna/__ - Geminispace aggregator 229 | - __gemini://flounder.online__ ([https version](https://flounder.online/)) - host small Gemini web pages over https and Gemini ([repo](https://github.com/alexwennerberg/flounder)). 230 | - __gemini://geminispace.info__ - public search provider for Gemini ([repo](https://sr.ht/~rwa/geminispace.info)). 231 | - __gemini://geddit.glv.one__ - interactive link service (with comments). 232 | - __gemini://glv.one__ - free platform as a service (PaaS) that runs any Gemini server (packaged as a Docker image) in the cloud. 233 | - __gemini://gemini.omarpolo.com/cgi/gempkg/__ - interface for the OpenBSD ports collection. 234 | - __gemini://gemplex.space/__ - experimental Search Engine for Gemini written in Go 235 | - __gemini://kennedy.gemi.dev/__ - public search provider for Gemini 236 | - __gemini://tictactoe.lanterne.chilliet.eu__ - Tic Tac Toe game ([repo](https://framagit.org/MCMic/gemini-tictactoe)). 237 | - __gemini://tilde.cafe/~spellbinding/game/cgi?__ - make words with specified letters 238 | - __gemini://tilde.cafe/~spellbinding/wordo/cgi?__ - a wordle-like game 239 | - __gemini://tilde.cafe/~spellbinding/wall/cgi__ - A public wall where you can leave a message 240 | - __gemini://ur.gs/__ - translate from en->es and es->en ([repo](https://code.ur.gs/lupine/capsule/src/branch/main/src/cgi-bin/translate)). 241 | - __gemini://rawtext.club/~sloum/geminews/__ - Daily news feeds proxied to gemini. 242 | - __gemini://rawtext.club/~sloum/cgi/othello/__ - Play othello/reversi against a computer opponent over gemini. 243 | - __gemini://rawtext.club/~sloum/cgi/weather__ - US weather reports by zip code. 244 | - __gemini://tilde.cafe/~stack/weather__ - weather forecast powered by wttr.in 245 | - [gemlog.blue](https://gemlog.blue) - Gemini hosting from a web frontend. 246 | - __gemini://houston.gmi.bacardi55.io__ - A simple tool to check if a capsule is up or not 247 | - __gemini://tlgs.one__ - ([http version](https://tlgs.one)) Another public search provider for Gemini([repo](https://github.com/marty1885/tlgs)). 248 | - __gemini://betahowto.duckdns.org__ - Yggdrasil DokuWiki Satellite ([repo](https://github.com/YGGverse/bdoku)) 249 | - __gemini://kevachat.duckdns.org__ - KevaChat clearnet node for Gemini ([repo](https://github.com/kevachat/geminiapp)) 250 | - __gemini://kvazar.duckdns.org__ - Observe Kevacoin Universe ([repo](https://github.com/kvazar-network/geminiapp)) 251 | - __gemini://fumble-around.mediocregopher.com__ - Explore gemspace by hopping from one random interesting page to the next. 252 | 253 | ## Tools 254 | 255 | - [astroget](https://github.com/zzo38/scorpion/blob/trunk/astroget.c) (C) - Command line tool to download and upload files from Gemini, Gopher, Scorpion, and Spartan servers. 256 | - [CAPCOM](https://tildegit.org/solderpunk/CAPCOM) (Python) - Atom feed aggregator for gemini. 257 | - [certified](https://code.lag.net/robey/certified) (Python) - Generate TOFU TLS certificates for gemini servers. 258 | - [cl-yag](git://bitreich.org/cl-yag) (Common-Lisp) - Static site generator producing gemini, gopher and html. 259 | - [comitium](https://git.nytpu.com/comitium) (C) - A feed aggregator for gemini supporting many formats and protocols. 260 | - [gemfreely](https://git.agnos.is/projectmoon/gemfreely) (Rust) - Synchronize gemlogs to the Fediverse via WriteFreely. 261 | - [gemget](https://github.com/makew0rld/gemget) (Go) - Command line downloader for the Gemini protocol. 262 | - [gemini-antenna](https://notabug.org/tinyrabbit/gemini-antenna) (Python) - A feed-aggregator for Gemini, triggered by submissions. 263 | - [geminize](https://addons.mozilla.org/en-US/firefox/addon/geminize/) - Firefox addon that redirects gemini:// URLs and links to a customizable HTTP-to-Gemini proxy. 264 | - [gemlog.sh](https://git.sr.ht/~nytpu/gemlog.sh) (Bash) - Utility for writing and managing gemini logs (gemlogs) and atom feeds (simple gemini static site generator/framework). 265 | - [gem.git](https://git.sr.ht/~fkfd/git.gmi/) (Python) - git frontend CGI script. 266 | - [gemmit](https://github.com/t-900-a/gemmit) (Go) - social news aggregation and web content rating website for the gemini protocol. 267 | - [gempost](https://github.com/justlark/gempost) (Rust) - Simple static site generator for Gemini blogs. 268 | - [GemPress](https://git.sr.ht/~aprates/gempress) (C) - Yet another Gemini publishing framework with HTML and Atom support, written in Bash and Sugar-C. 269 | - [gemtexter](https://codeberg.org/snonux/gemtexter) (Bash) - Site generator and blog engine for Gemini. Generates Atom and Gemfeeds , and also does Gemtext to HTML and Markdown conversion. 270 | - [gloggery](https://github.com/kconner/gloggery) (Go) - basic static site generator for blogs in Gemini. 271 | - [gmitohtml](https://gitlab.com/tslocum/gmitohtml) (Go) - proxy that renders Gemini pages using HTML. 272 | - [gmnigit](https://git.sr.ht/~kornellapacz/gmnigit) (Go) - static git gemini viewer. 273 | - [gssg](https://git.sr.ht/~gsthnz/gssg) (Go) - simple gemini static site generator. Generates pages, index and atom feeds. 274 | - [kiln](https://git.sr.ht/~adnano/kiln) (Go) - simple static site generator for Gemini sites. 275 | - [Lupa](https://framagit.org/bortzmeyer/lupa) - crawler to explore the geminispace and make statistics (you can see them at __gemini://gemini.bortzmeyer.org/software/lupa/stats.gmi ). 276 | - [Manisha](https://framagit.org/bortzmeyer/manisha) - Nagios (and compatible, such as Icinga) plugin to monitor Gemini servers. 277 | - [spacewalk](https://tildegit.org/sloum/spacewalk) (Go) - Page-hash based feed aggregator for gemini. 278 | - [MastoGem](https://git.rdelaage.ovh/rdelaage/mastoGem) (Go) - Mastodon proxy for Gemini. 279 | - [Hugo-2-Gopher-and-Gemini](https://github.com/mkamarin/Hugo-2-Gopher-and-Gemini) (Python) - A Hugo theme to convert a Hugo site to Gemini or Gopher. 280 | - [Gopher-and-Gemini-Walker](https://github.com/mkamarin/Gopher-and-Gemini-Walker) (Python) - Terminal client (without network connectivity) to navigate a folder structure containing a Gemini capsule or Gopher hole. 281 | - [Gemini Diagnostics](https://github.com/michael-lazar/gemini-diagnostics) - A torture test for gemini servers 282 | - [Pulsar](https://github.com/YGGverse/Pulsar) (PHP) - RSS Aggregator for Gemini Protocol 283 | 284 | ### Gemtext converters 285 | - [dioscuri](https://github.com/wooorm/dioscuri) (JS) - A Gemtext parser with interfaces to transform to and from mdast (markdown ast) and to compile to HTML. 286 | - [gemgen](https://sr.ht/~kota/gemgen/) (Go) - A Markdown to Gemtext generator. 287 | - [gemini-pandoc-lua-filter](https://github.com/kr1sp1n/gemini-pandoc-lua-filter) (Lua) - lua filter for pandoc to output Gemini text. 288 | - [gemini-to-html](https://github.com/RangerMauve/gemini-to-html) (Node.js) - JavaScript library for parsing Gemini pages, and for rendering them to HTML. 289 | - [gemtext2latex](https://github.com/mk270/gemtext2latex) (Python) - tool for converting Gemtext to reasonable LaTeX and thence PDF 290 | - [gemtext2md](https://github.com/mk270/gemtext2md) (Rust) - tool for converting Gemtext to Markdown 291 | - [gemtexter](https://codeberg.org/snonux/gemtexter) (Bash) - Site generator and blog engine for Gemini. Generates Atom and Gemfeeds , and also does Gemtext to HTML and Markdown conversion. 292 | - [gmi2html](https://github.com/shtanton/gmi2html) (Zig) - tiny gemtext to HTML converter with a focus on performance. 293 | - [gmi2html](gemini://gemini.thegonz.net/gmi2html.sed) (Sed) - sed script to convert text/gemini to html. 294 | - [gmi-web](https://codeberg.org/talon/gmi-web) (JS) - generate _semantic_ HTML styled for readability and mobile-friendliness. 295 | - [gmnhg](https://git.tdem.in/tdemin/gmnhg) (Go) - renders a Hugo site to a Gemini site. 296 | - [Html2GeminiPy](https://github.com/Aarontheissueguy/Html2GeminiPy) (Python) - Converts Html sites to Gemini sites using markdownify and md2gemini. 297 | - [html2gmi](https://github.com/LukeEmmet/html2gmi) (Go) - command line utility to convert HTML to gemtext 298 | - [md2gmn](https://git.tdem.in/tdemin/gmnhg) (Go) - renders Markdown text to Gemini pages. 299 | - [md2gemini](https://github.com/makeworld-the-better-one/md2gemini) (Python) - converter from Markdown to the Gemini text format. 300 | - [Hugo-2-Gopher-and-Gemini](https://github.com/mkamarin/Hugo-2-Gopher-and-Gemini) (Python) - A Hugo theme to convert a Hugo site to Gemini or Gopher. 301 | - [gemini-php](https://github.com/YGGverse/gemini-php) (PHP) - Composer library for Gemini - includes DokuWiki converter, file-system operations and other API 302 | - [gemitwee](https://tildegit.org/smallbird/gemitwee) (PHP) - Converts Twine's Twee2 markup to a set of Gemini files for simple choose-your-own-adventure games. 303 | 304 | ### Syntax Highlighting 305 | - [gemini-vim-syntax](https://tildegit.org/sloum/gemini-vim-syntax) - text/gemini syntax highlighting for vim. 306 | - [gemini.el](https://git.carcosa.net/jmcbray/gemini.el) - text/gemini syntax highlighting for emacs. 307 | - [gemini.kak](https://github.com/kakoune-editor/kakoune-extra-filetypes/blob/master/rc/gemini.kak) - text/gemini syntax highlighting for kakoune. 308 | - [gemini.nanorc](https://github.com/yzzyx-network/nanorc/blob/master/gemini.nanorc) - text/gemini syntax highlighting for nano. 309 | - [gemini.sublime-syntax](https://github.com/adiabatic/gemini.sublime-syntax) - text/gemini syntax highlighting for bat (and maybe Sublime Text). 310 | - [gemini.yml](https://github.com/zyedidia/micro/blob/master/runtime/syntax/gemini.yaml) - text/gemini syntax highlighting for micro. 311 | - [language_gmi](https://github.com/lite-xl/lite-xl-plugins/blob/master/plugins/language_gmi.lua) - gemtext syntax highlighting for lite-xl 312 | - [gemini-intellij-plugin](https://github.com/michael-lazar/gemini-intellij-plugin/) - text/gemini syntax highlighting for IntelliJ IDEs 313 | 314 | ## Web proxies 315 | - [Mozz.us portal](https://portal.mozz.us/gemini/gemini.circumlunar.space/) 316 | - [Soweli Lukin](https://alexschroeder.ch/soweli-lukin) 317 | - [Vulpes proxy](https://proxy.vulpes.one/gemini/gemini.circumlunar.space/) 318 | - [koyu.space GemProxy](https://gemproxy.koyu.space) 319 | - [Wobbly](https://www.warmedal.se/~wobbly/) 320 | - [Tildeverse Gemini Proxy](https://gemini.tildeverse.org) 321 | - [yah2g: yet another http-to-gemini](https://gem.any-key.press/) 322 | 323 | ## Bots 324 | - [Fortune Teller Bot](https://github.com/t-900-a/gemini-fortune-bot) - Generates a fortune gmi file, gemlog/index.gmi, and atom.xml every time the bot is executed 325 | 326 | --- 327 | [1]: https://geminiprotocol.net 328 | -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please note that this project is released with a [Contributor Code of Conduct](code-of-conduct.md). By participating in this project you agree to abide by its terms. 4 | 5 | ## Adding an awesome list 6 | 7 | Please ensure your pull request adheres to the [list guidelines](pull_request_template.md). 8 | 9 | ## Creating your own awesome list 10 | 11 | To create your own list, check out the [instructions](create-list.md). 12 | 13 | ## Adding something to an awesome list 14 | 15 | If you have something awesome to contribute to an awesome list, this is how you do it. 16 | 17 | You'll need a [GitHub account](https://github.com/join)! 18 | 19 | 1. Access the awesome list's GitHub page. For example: https://github.com/sindresorhus/awesome 20 | 2. Click on the `readme.md` file: ![Step 2 Click on Readme.md](https://cloud.githubusercontent.com/assets/170270/9402920/53a7e3ea-480c-11e5-9d81-aecf64be55eb.png) 21 | 3. Now click on the edit icon. ![Step 3 - Click on Edit](https://cloud.githubusercontent.com/assets/170270/9402927/6506af22-480c-11e5-8c18-7ea823530099.png) 22 | 4. You can start editing the text of the file in the in-browser editor. Make sure you follow guidelines above. You can use [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/). ![Step 4 - Edit the file](https://cloud.githubusercontent.com/assets/170270/9402932/7301c3a0-480c-11e5-81f5-7e343b71674f.png) 23 | 5. Say why you're proposing the changes, and then click on "Propose file change". ![Step 5 - Propose Changes](https://cloud.githubusercontent.com/assets/170270/9402937/7dd0652a-480c-11e5-9138-bd14244593d5.png) 24 | 6. Submit the [pull request](https://help.github.com/articles/using-pull-requests/)! 25 | 26 | ## Updating your Pull Request 27 | 28 | Sometimes, a maintainer of an awesome list will ask you to edit your Pull Request before it is included. This is normally due to spelling errors or because your PR didn't match the awesome-* list guidelines. 29 | 30 | [Here](https://github.com/RichardLitt/knowledge/blob/master/github/amending-a-commit-guide.md) is a write up on how to change a Pull Request, and the different ways you can do that. 31 | --------------------------------------------------------------------------------