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.
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.
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.
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.
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:
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)