Laila Los
PROJECTS

Trans*DB

About Trans*DB

Screenshot Trans DB

Trans*DB is a search engine aimed at trans people. It can search for healthcare, support-groups and other resources based on your location. I helped develop, and still help to maintain the project.

I was involved in the back-end code, as well as the design and front-end of the application.

The project is based in germany, and the site entierly in german. It's primary focus is germany, though we plan to expand to additional german-speaking countries in the future. Our aim is to provide a overview of local resources for trans* people, based on geographic location. So far the project has been quite sucessful, and has become one of the most fleshed out lists for this topic. What makes Trans*DB stand out, is the geographic search, since location is often the limiting factor when seeking local groups and healthcare.

Features

We offer two ways to search by location. Firstly a "Location Search" button, which uses the browsers location api. Secondly a text base search, which fetches the location from an internal database of locations in germany. In both cases, the users privacy is respected, and no information is stored.

The Site also features a form, with which users can submit new entries to our database. These entries need to be approved by us first, to avoid abuse.

Screenshot Management  Panel - Trans DB

For this purpose, we have a management panel, which has a dedicated section to aprove new entries, a duplicate detection system, and a database manager/editor with a custom domain specific filtering language, the efficiently search for specific entries.

Technologies

Trans*DB was originally built with express.js as a backend, and vue.js (via nuxt) as a front-end. Due to many changes in project development, the code became hard to navigate, which is why we opted for a rewrite, integrating what we had learned into a more streamlined codebase.

We took this opportunity to add a more object-oriented approach to our back-end with overnight-js, giving us mostly better type control. In the old back-end typescript had was integrated during development, and it's integration was strange at places. Re-building the project from the ground up with types, and overnight-js gave us much more solid type safety, which also required less work to maintain.

For the front-end we switched to Svelte. While vue offered us everything we needed, we often felt like we were working more against the framework than with it in some rough spots, and the code required a lot of boilerplate. Svlete dramatically cuts down on boilerplate, has better typescript support out of the box, and approaches many problems in a very vanilla-js way, which makes it intuitive and easy to work with. This makes the project easier to maintain and let's improves the onboarding experience.

To learn more about the technologies behind Trans*DB, have a look at our Github.

My involvement

I was involved in every aspect of Trans*DB from the beginning. A big chunk of the website and it's backend was built with pair-programming.

Three areas specifically were a big focus for me:

  • Backend type safety. The backend catches most errors, during compile time, and will not compile if data is leaked.
  • Design. I drew all the art and promotional material for the project. We also spent quite some effort in tweaking the colors.
  • Database tool. I wrote a domain specific language for the Database tool, and built most of the inline editor which the database uses.

In 2021 we held a talk about Trans*DB, where I go into detail about this domain specific language. Link to Video (German, starting at 10:25)