-- Leo's gemini proxy

-- Connecting to gemini.bunburya.eu:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; lang=en-IE

Announcing Apogee, a Gemini server written in Kotlin


I am happy to introduce Apogee, a Gemini server written in Kotlin to run on the JVM. It is still very much a work in progress, but given that it is basically usable now, I thought it would be a good time to share it. The source code can be found on GitHub:

https://github.com/bunburya/apogee


The README.md file contains instructions for installing and configuring Apogee.


Currently, Apogee supports roughly the same set of features as Molly Brown, albeit with a significantly larger memory footprint (given that it runs on the JVM). That means it can serve static files and dynamic content (via CGI or SCGI) and supports redirection and client authentication. I do plan to add further features in the future. Some of the main things I hope to do with Apogee in the future are:


Add support for FastCGI, and perhaps other common gateway protocols.

Add support for SCGI using network sockets, rather than just Unix domain sockets.

Refactor the code to use coroutines (which should hopefully improve performance).


My main motivation in writing Apogee was to learn more about networking and servers. As I used the Netty library to implement the handling of client connections, I wasn't really working with sockets or TLS at a low level. However, I did learn a lot about the Netty library itself, and by extension, how networking applications are (or can be) conceptualised and structured at a high level.


I was also hoping to learn more about Kotlin as a language. If anything though, I learned a lot more about Java, since most of the libraries I was using were written in Java (whether as part of the Java standard library or external libraries written in Java).


I will probably post updates to this gemlog as and when significant new features are added. In the meantime, please feel free to play around with Apogee and file an issue on GitHub if you encounter any problems or have any suggestions.




Announcing Apogee, a Gemini server written in Kotlin was published on 2021-05-15

Return to index

-- Response ended

-- Page fetched on Fri May 3 04:57:43 2024