Currently twtxt consists of the following components:

  • Go – A Go backend mostly written from scratch from bits and pieces borrowed from other projects. It uses primarily the julienschmidt/httprouter mux library for routing of requests for both the frontend’s backend and the API.
  • Bitcask – This is the primary KV store that backs most of the “metadata” of It is a high-performance KV store designed for fast O(1) lookups of key/vaue pairs of data with 1 Disk IOPS per key.
  • PicoCSS – This is a “classless” CSS library that was chosen because of its very “lightweight” size and was quick to initially develop in as the primary author (James Mills) is no frontend dev 🤣 The forked version (only slightly modified) of this library can be found here
  • UmbrellaJS – Again this was chosen over more common choices like jQuery becuase of its “lightweight” size. THe project uses a little JS very sparingly and has a requirement of graceful degradation so that users of the platform are able to use on poor Internet connections or even from browsers without Javascript.

That’s pretty much it for now. If you are interested in contributing in any way we welcome you! You can find all the sources at:

  • ./internal/*.go and in some sub-directories that are sub-packages of the project.

In addition you can find all the static assets and templates here:

  • ./internal/static/{css,js}
  • ./internal/templates/*.html