A simple framework for a simple protocol.
Orbit is a framework for building Gemini applications, known as "capsules".
This framework focuses primarily on the Gemini protocol itself, intent on getting a request into your application, handling it, and sending a Gemtext response.
It doesn't make any assumptions about your business logic, backing database, migrations, or anything like that. If you need a database, you can add it manually.
Orbit borrows a lot of ideas from Plug and Phoenix.
Orbit.Endpoint- the TLS server that accepts incoming requests (Phoenix.Endpoint+cowboy)Orbit.Request- encapsulates the request-response lifecyle (Plug.Conn)Orbit.Pipe- the behaviour for request middleware (Plug)Orbit.Router- defines pipelines and routes (Phoenix.Router)Orbit.Controller- processes requests (Phoenix.Controller)Orbit.Gemtext- renders Gemtext templates (Phoenix.Component)
Some additional niceties:
Orbit.Static- serves up files frompriv/statc(Plug.Static)Orbit.Status- a canonical list of all status codesOrbit.ClientCertificate- extracts client certificates from the request
Orbit can be added to a new or existing application, including a Phoenix one.
See the quickstart guide for installation instructions.