Projects

Some of my favorites that I did over the years.

Selfbox - A Personal Data Store Solution

Node.JS Nest.JS GraphQL Neo4j Cypher OAuth OpenID Angular
September 2018-July 2019

Selfbox is a prototype for a Personal Data Store that was designed and implemented during my master thesis. The project uses a Neo4J as storage backend for the data, which allows it to store all kinds of relations between different data nodes. Applications can discover what kind of data the server offers via OpenID, and the owner can manage permissions via OAuth2. Selfbox is also a OAuth2 provider, completely cutting the need for any third party service like Facebook and Google. The data gets offered via GraphQL to the various clients. Furthermore, are all queries, mutations, OAuth scopes and more automatically generated based on a GraphQL schemata.

collab.io - Collaborative Note-taking

Angular Three.JS RxJS Node.JS MySQL Socket.IO
April 2018-July 2018

This semester project started as a vision for collaborative drawing and note-taking. A user should be able to start a page and can invite others to join him syncing the drawings of all users in real-time to everyone. Similar applications on the web usually used a basic canvas element but for this project we wanted to explore the use of WebGL for a high detail renderings of lines. Because of the realtime manipulation from multiple sources we had to come up with a solution that separates the strokes from the actual inputs devices. In the final version we ended up keeping track of the strokes by maintaining them in the DOM as custom elements.

FindIt - A Microservice Platform to Organize Documents

Apache Kafka Apache Tika Event Sourcing API Gateway Docker AWS Elasticsearch NodeJS Java PostgreSQL MySQL
October 2017-March 2018

I was part of a team which designed and implemented an application that is backed up by a series of microservices. The project was mainly to get to know a few of the design patterns such as database per service, Saga and Event Sourcing. For the immutable log we utilized Apache Kafka, paired with various databases that acted as data sinks for reading and querying the data. We implemented a fully functional API gateway with service discovery by hand using docker and docker-compose. Each microservice used his own database view that was filled using the events saved in our immutable log store. For metadata extraction and filtering we used Apache Tika combined with Elasticsearch.

Locl - A Location Based Chat Solution

WebRTC Node.JS JavaScript
June 2016-December 2016

This project explores the concept of reverse geolocation and WebRTC as part of my theoretical bachelor thesis to create chat rooms based on a userโ€™s location. Once the correct room for a user has been found, or a new one gets created the user starts a new WebRTC session. This way no data traffic is routed via a third party, saving server costs and maintaining the privacy of the users.

Biodiv - Biodiversity Management Solution

Angular Node.JS MongoDB MSSQL
May 2016-January 2017

Design and implementation of an Angular web application to manage, create and edit geographical data. Visualize locations of stored entries on a map with additional information. For the backend, this project utilized NodeJS, MongoDB and multiple MSSQL instances for data storage.

MyNoteBoard

C# SharpDX (DirectX) XAML
June 2012-August 2013

This project realized a note-taking application for Windows 8 (RT) that utilized the GPU to render strokes on a virtual piece of paper. For the rendering part a DirectX wrapper called SharpDX was used in combination with C#. The application allowed the user to pair their device with others via Bluetooth, Wi-Fi or over the network to work together on one piece of paper.