Projekte

Eine Auswahl der Projekte, die ich über die Jahre gebaut habe — von Microservice-Plattformen und Personal Data Stores bis zu Echtzeit-Kollaboration und GPU-Rendering.

Selfbox – eine Personal-Data-Store-Lösung

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

Selfbox ist ein Prototyp für einen Personal Data Store, der im Rahmen meiner Masterarbeit entworfen und umgesetzt wurde. Das Projekt nutzt Neo4J als Storage-Backend für die Daten, wodurch sich beliebige Beziehungen zwischen einzelnen Datenknoten abbilden lassen. Anwendungen können über OpenID entdecken, welche Art von Daten der Server anbietet, und die Besitzerin oder der Besitzer verwaltet die Berechtigungen über OAuth2. Selfbox ist zugleich selbst OAuth2-Provider und macht damit Drittanbieter wie Facebook oder Google vollständig überflüssig. Die Daten werden über GraphQL an die verschiedenen Clients ausgeliefert. Sämtliche Queries, Mutations, OAuth-Scopes und mehr werden dabei automatisch generiert — auf Basis eines GraphQL-Schemas.

collab.io – kollaboratives Notizenmachen

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

Dieses Semesterprojekt begann als Vision für kollaboratives Zeichnen und Notizenmachen. Man sollte eine Seite starten und andere einladen können, wobei die Zeichnungen aller Beteiligten in Echtzeit synchronisiert werden. Vergleichbare Anwendungen im Web setzten damals meist auf ein einfaches Canvas-Element; wir wollten stattdessen WebGL für hochaufgelöste Linien erkunden. Wegen der Echtzeitmanipulation aus mehreren Quellen brauchten wir eine Lösung, die die Striche von den tatsächlichen Eingabegeräten entkoppelt. In der finalen Version verwalteten wir die Striche als Custom Elements im DOM.

FindIt – eine Microservice-Plattform zur Dokumentenverwaltung

Apache Kafka Apache Tika Event Sourcing API Gateway Docker AWS Elasticsearch NodeJS Java PostgreSQL MySQL
Oktober 2017-März 2018

Ich war Teil eines Teams, das eine Anwendung entworfen und umgesetzt hat, die auf einer Reihe von Microservices aufbaut. Ziel war vor allem, einige der Design Patterns kennenzulernen — etwa Database per Service, Saga und Event Sourcing. Für das unveränderliche Log setzten wir Apache Kafka ein, kombiniert mit verschiedenen Datenbanken als Data Sinks zum Lesen und Abfragen. Ein voll funktionsfähiges API Gateway mit Service Discovery haben wir mit Docker und docker-compose selbst gebaut. Jeder Microservice nutzte seine eigene Datenbanksicht, die aus den Events im Log befüllt wurde. Für Metadatenextraktion und Filterung kamen Apache Tika und Elasticsearch zum Einsatz.

Locl – eine standortbasierte Chat-Lösung

WebRTC Node.JS JavaScript
Juni 2016-Dezember 2016

Dieses Projekt untersucht im Rahmen meiner theoretischen Bachelorarbeit die Konzepte Reverse Geocoding und WebRTC, um Chaträume auf Basis des Standorts einer Nutzerin oder eines Nutzers zu erzeugen. Sobald der passende Raum gefunden oder neu angelegt ist, startet eine WebRTC-Sitzung. Dadurch fließt kein Datenverkehr über Dritte, was Serverkosten spart und die Privatsphäre der Beteiligten wahrt.

Biodiv – Lösung für Biodiversitätsmanagement

Angular Node.JS MongoDB MSSQL
Mai 2016-Jänner 2017

Entwurf und Umsetzung einer Angular-Webanwendung zum Verwalten, Anlegen und Bearbeiten geografischer Daten. Die Standorte gespeicherter Einträge werden mit Zusatzinformationen auf einer Karte visualisiert. Im Backend setzte das Projekt auf NodeJS, MongoDB und mehrere MSSQL-Instanzen zur Datenhaltung.

MyNoteBoard

YouTube
C# SharpDX (DirectX) XAML
Juni 2012-August 2013

Dieses Projekt realisierte eine Notiz-Anwendung für Windows 8 (RT), die Striche mithilfe der GPU auf ein virtuelles Blatt Papier zeichnet. Für das Rendering kam ein DirectX-Wrapper namens SharpDX zusammen mit C# zum Einsatz. Die Anwendung erlaubte es, das eigene Gerät per Bluetooth, WLAN oder über das Netzwerk mit anderen zu koppeln, um gemeinsam an einem Blatt zu arbeiten.